Changelog in Linux kernel 5.15.182

 
ALSA: usb-audio: Add second USB ID for Jabra Evolve 65 headset [+ + +]
Author: Joachim Priesner <joachim.priesner@web.de>
Date:   Mon Apr 28 07:36:06 2025 +0200

    ALSA: usb-audio: Add second USB ID for Jabra Evolve 65 headset
    
    commit 1149719442d28c96dc63cad432b5a6db7c300e1a upstream.
    
    There seem to be multiple USB device IDs used for these;
    the one I have reports as 0b0e:030c when powered on.
    (When powered off, it reports as 0b0e:0311.)
    
    Signed-off-by: Joachim Priesner <joachim.priesner@web.de>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250428053606.9237-1-joachim.priesner@web.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
amd-xgbe: Fix to ensure dependent features are toggled with RX checksum offload [+ + +]
Author: Vishal Badole <Vishal.Badole@amd.com>
Date:   Thu Apr 24 18:32:48 2025 +0530

    amd-xgbe: Fix to ensure dependent features are toggled with RX checksum offload
    
    commit f04dd30f1bef1ed2e74a4050af6e5e5e3869bac3 upstream.
    
    According to the XGMAC specification, enabling features such as Layer 3
    and Layer 4 Packet Filtering, Split Header and Virtualized Network support
    automatically selects the IPC Full Checksum Offload Engine on the receive
    side.
    
    When RX checksum offload is disabled, these dependent features must also
    be disabled to prevent abnormal behavior caused by mismatched feature
    dependencies.
    
    Ensure that toggling RX checksum offload (disabling or enabling) properly
    disables or enables all dependent features, maintaining consistent and
    expected behavior in the network device.
    
    Cc: stable@vger.kernel.org
    Fixes: 1a510ccf5869 ("amd-xgbe: Add support for VXLAN offload capabilities")
    Signed-off-by: Vishal Badole <Vishal.Badole@amd.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250424130248.428865-1-Vishal.Badole@amd.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64: errata: Add missing sentinels to Spectre-BHB MIDR arrays [+ + +]
Author: Will Deacon <will@kernel.org>
Date:   Thu May 1 11:47:47 2025 +0100

    arm64: errata: Add missing sentinels to Spectre-BHB MIDR arrays
    
    commit fee4d171451c1ad9e8aaf65fc0ab7d143a33bd72 upstream.
    
    Commit a5951389e58d ("arm64: errata: Add newer ARM cores to the
    spectre_bhb_loop_affected() lists") added some additional CPUs to the
    Spectre-BHB workaround, including some new arrays for designs that
    require new 'k' values for the workaround to be effective.
    
    Unfortunately, the new arrays omitted the sentinel entry and so
    is_midr_in_range_list() will walk off the end when it doesn't find a
    match. With UBSAN enabled, this leads to a crash during boot when
    is_midr_in_range_list() is inlined (which was more common prior to
    c8c2647e69be ("arm64: Make  _midr_in_range_list() an exported
    function")):
    
     |  Internal error: aarch64 BRK: 00000000f2000001 [#1] PREEMPT SMP
     |  pstate: 804000c5 (Nzcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     |  pc : spectre_bhb_loop_affected+0x28/0x30
     |  lr : is_spectre_bhb_affected+0x170/0x190
     | [...]
     |  Call trace:
     |   spectre_bhb_loop_affected+0x28/0x30
     |   update_cpu_capabilities+0xc0/0x184
     |   init_cpu_features+0x188/0x1a4
     |   cpuinfo_store_boot_cpu+0x4c/0x60
     |   smp_prepare_boot_cpu+0x38/0x54
     |   start_kernel+0x8c/0x478
     |   __primary_switched+0xc8/0xd4
     |  Code: 6b09011f 54000061 52801080 d65f03c0 (d4200020)
     |  ---[ end trace 0000000000000000 ]---
     |  Kernel panic - not syncing: aarch64 BRK: Fatal exception
    
    Add the missing sentinel entries.
    
    Cc: Lee Jones <lee@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Doug Anderson <dianders@chromium.org>
    Cc: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
    Cc: <stable@vger.kernel.org>
    Reported-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Fixes: a5951389e58d ("arm64: errata: Add newer ARM cores to the spectre_bhb_loop_affected() lists")
    Signed-off-by: Will Deacon <will@kernel.org>
    Reviewed-by: Lee Jones <lee@kernel.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20250501104747.28431-1-will@kernel.org
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ARM: dts: opos6ul: add ksz8081 phy properties [+ + +]
Author: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Date:   Fri Mar 14 17:20:38 2025 +0100

    ARM: dts: opos6ul: add ksz8081 phy properties
    
    [ Upstream commit 6e1a7bc8382b0d4208258f7d2a4474fae788dd90 ]
    
    Commit c7e73b5051d6 ("ARM: imx: mach-imx6ul: remove 14x14 EVK specific
    PHY fixup") removed a PHY fixup that setted the clock mode and the LED
    mode.
    Make the Ethernet interface work again by doing as advised in the
    commit's log, set clock mode and the LED mode in the device tree.
    
    Fixes: c7e73b5051d6 ("ARM: imx: mach-imx6ul: remove 14x14 EVK specific PHY fixup")
    Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
    Reviewed-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt_en: Fix coredump logic to free allocated buffer [+ + +]
Author: Shruti Parab <shruti.parab@broadcom.com>
Date:   Mon Apr 28 15:59:01 2025 -0700

    bnxt_en: Fix coredump logic to free allocated buffer
    
    [ Upstream commit ea9376cf68230e05492f22ca45d329f16e262c7b ]
    
    When handling HWRM_DBG_COREDUMP_LIST FW command in
    bnxt_hwrm_dbg_dma_data(), the allocated buffer info->dest_buf is
    not freed in the error path.  In the normal path, info->dest_buf
    is assigned to coredump->data and it will eventually be freed after
    the coredump is collected.
    
    Free info->dest_buf immediately inside bnxt_hwrm_dbg_dma_data() in
    the error path.
    
    Fixes: c74751f4c392 ("bnxt_en: Return error if FW returns more data than dump length")
    Reported-by: Michael Chan <michael.chan@broadcom.com>
    Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Shruti Parab <shruti.parab@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bnxt_en: Fix ethtool -d byte order for 32-bit values [+ + +]
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Mon Apr 28 15:59:03 2025 -0700

    bnxt_en: Fix ethtool -d byte order for 32-bit values
    
    [ Upstream commit 02e8be5a032cae0f4ca33c6053c44d83cf4acc93 ]
    
    For version 1 register dump that includes the PCIe stats, the existing
    code incorrectly assumes that all PCIe stats are 64-bit values.  Fix it
    by using an array containing the starting and ending index of the 32-bit
    values.  The loop in bnxt_get_regs() will use the array to do proper
    endian swap for the 32-bit values.
    
    Fixes: b5d600b027eb ("bnxt_en: Add support for 'ethtool -d'")
    Reviewed-by: Shruti Parab <shruti.parab@broadcom.com>
    Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bnxt_en: Fix out-of-bound memcpy() during ethtool -w [+ + +]
Author: Shruti Parab <shruti.parab@broadcom.com>
Date:   Mon Apr 28 15:59:02 2025 -0700

    bnxt_en: Fix out-of-bound memcpy() during ethtool -w
    
    [ Upstream commit 6b87bd94f34370bbf1dfa59352bed8efab5bf419 ]
    
    When retrieving the FW coredump using ethtool, it can sometimes cause
    memory corruption:
    
    BUG: KFENCE: memory corruption in __bnxt_get_coredump+0x3ef/0x670 [bnxt_en]
    Corrupted memory at 0x000000008f0f30e8 [ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ] (in kfence-#45):
    __bnxt_get_coredump+0x3ef/0x670 [bnxt_en]
    ethtool_get_dump_data+0xdc/0x1a0
    __dev_ethtool+0xa1e/0x1af0
    dev_ethtool+0xa8/0x170
    dev_ioctl+0x1b5/0x580
    sock_do_ioctl+0xab/0xf0
    sock_ioctl+0x1ce/0x2e0
    __x64_sys_ioctl+0x87/0xc0
    do_syscall_64+0x5c/0xf0
    entry_SYSCALL_64_after_hwframe+0x78/0x80
    
    ...
    
    This happens when copying the coredump segment list in
    bnxt_hwrm_dbg_dma_data() with the HWRM_DBG_COREDUMP_LIST FW command.
    The info->dest_buf buffer is allocated based on the number of coredump
    segments returned by the FW.  The segment list is then DMA'ed by
    the FW and the length of the DMA is returned by FW.  The driver then
    copies this DMA'ed segment list to info->dest_buf.
    
    In some cases, this DMA length may exceed the info->dest_buf length
    and cause the above BUG condition.  Fix it by capping the copy
    length to not exceed the length of info->dest_buf.  The extra
    DMA data contains no useful information.
    
    This code path is shared for the HWRM_DBG_COREDUMP_LIST and the
    HWRM_DBG_COREDUMP_RETRIEVE FW commands.  The buffering is different
    for these 2 FW commands.  To simplify the logic, we need to move
    the line to adjust the buffer length for HWRM_DBG_COREDUMP_RETRIEVE
    up, so that the new check to cap the copy length will work for both
    commands.
    
    Fixes: c74751f4c392 ("bnxt_en: Return error if FW returns more data than dump length")
    Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Shruti Parab <shruti.parab@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-integrity: fix a warning on invalid table line [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Apr 22 21:18:33 2025 +0200

    dm-integrity: fix a warning on invalid table line
    
    commit 0a533c3e4246c29d502a7e0fba0e86d80a906b04 upstream.
    
    If we use the 'B' mode and we have an invalit table line,
    cancel_delayed_work_sync would trigger a warning. This commit avoids the
    warning.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm: always update the array size in realloc_argv on success [+ + +]
Author: Benjamin Marzinski <bmarzins@redhat.com>
Date:   Tue Apr 15 00:17:16 2025 -0400

    dm: always update the array size in realloc_argv on success
    
    commit 5a2a6c428190f945c5cbf5791f72dbea83e97f66 upstream.
    
    realloc_argv() was only updating the array size if it was called with
    old_argv already allocated. The first time it was called to create an
    argv array, it would allocate the array but return the array size as
    zero. dm_split_args() would think that it couldn't store any arguments
    in the array and would call realloc_argv() again, causing it to
    reallocate the initial slots (this time using GPF_KERNEL) and finally
    return a size. Aside from being wasteful, this could cause deadlocks on
    targets that need to process messages without starting new IO. Instead,
    realloc_argv should always update the allocated array size on success.
    
    Fixes: a0651926553c ("dm table: don't copy from a NULL pointer in realloc_argv()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dm: fix copying after src array boundaries [+ + +]
Author: Tudor Ambarus <tudor.ambarus@linaro.org>
Date:   Tue May 6 11:31:50 2025 +0000

    dm: fix copying after src array boundaries
    
    commit f1aff4bc199cb92c055668caed65505e3b4d2656 upstream.
    
    The blammed commit copied to argv the size of the reallocated argv,
    instead of the size of the old_argv, thus reading and copying from
    past the old_argv allocated memory.
    
    Following BUG_ON was hit:
    [    3.038929][    T1] kernel BUG at lib/string_helpers.c:1040!
    [    3.039147][    T1] Internal error: Oops - BUG: 00000000f2000800 [#1]  SMP
    ...
    [    3.056489][    T1] Call trace:
    [    3.056591][    T1]  __fortify_panic+0x10/0x18 (P)
    [    3.056773][    T1]  dm_split_args+0x20c/0x210
    [    3.056942][    T1]  dm_table_add_target+0x13c/0x360
    [    3.057132][    T1]  table_load+0x110/0x3ac
    [    3.057292][    T1]  dm_ctl_ioctl+0x424/0x56c
    [    3.057457][    T1]  __arm64_sys_ioctl+0xa8/0xec
    [    3.057634][    T1]  invoke_syscall+0x58/0x10c
    [    3.057804][    T1]  el0_svc_common+0xa8/0xdc
    [    3.057970][    T1]  do_el0_svc+0x1c/0x28
    [    3.058123][    T1]  el0_svc+0x50/0xac
    [    3.058266][    T1]  el0t_64_sync_handler+0x60/0xc4
    [    3.058452][    T1]  el0t_64_sync+0x1b0/0x1b4
    [    3.058620][    T1] Code: f800865e a9bf7bfd 910003fd 941f48aa (d4210000)
    [    3.058897][    T1] ---[ end trace 0000000000000000 ]---
    [    3.059083][    T1] Kernel panic - not syncing: Oops - BUG: Fatal exception
    
    Fix it by copying the size of src, and not the size of dst, as it was.
    
    Fixes: 5a2a6c428190 ("dm: always update the array size in realloc_argv on success")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/nouveau: Fix WARN_ON in nouveau_fence_context_kill() [+ + +]
Author: Philipp Stanner <phasta@kernel.org>
Date:   Tue Apr 15 14:19:00 2025 +0200

    drm/nouveau: Fix WARN_ON in nouveau_fence_context_kill()
    
    commit bbe5679f30d7690a9b6838a583b9690ea73fe0e9 upstream.
    
    Nouveau is mostly designed in a way that it's expected that fences only
    ever get signaled through nouveau_fence_signal(). However, in at least
    one other place, nouveau_fence_done(), can signal fences, too. If that
    happens (race) a signaled fence remains in the pending list for a while,
    until it gets removed by nouveau_fence_update().
    
    Should nouveau_fence_context_kill() run in the meantime, this would be
    a bug because the function would attempt to set an error code on an
    already signaled fence.
    
    Have nouveau_fence_context_kill() check for a fence being signaled.
    
    Cc: stable@vger.kernel.org # v5.10+
    Fixes: ea13e5abf807 ("drm/nouveau: signal pending fences when channel has been killed")
    Suggested-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Philipp Stanner <phasta@kernel.org>
    Link: https://lore.kernel.org/r/20250415121900.55719-3-phasta@kernel.org
    Signed-off-by: Danilo Krummrich <dakr@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
EDAC/altera: Set DDR and SDMMC interrupt mask before registration [+ + +]
Author: Niravkumar L Rabara <niravkumar.l.rabara@altera.com>
Date:   Fri Apr 25 07:26:40 2025 -0700

    EDAC/altera: Set DDR and SDMMC interrupt mask before registration
    
    commit 6dbe3c5418c4368e824bff6ae4889257dd544892 upstream.
    
    Mask DDR and SDMMC in probe function to avoid spurious interrupts before
    registration.  Removed invalid register write to system manager.
    
    Fixes: 1166fde93d5b ("EDAC, altera: Add Arria10 ECC memory init functions")
    Signed-off-by: Niravkumar L Rabara <niravkumar.l.rabara@altera.com>
    Signed-off-by: Matthew Gerlach <matthew.gerlach@altera.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Acked-by: Dinh Nguyen <dinguyen@kernel.org>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/20250425142640.33125-3-matthew.gerlach@altera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

EDAC/altera: Test the correct error reg offset [+ + +]
Author: Niravkumar L Rabara <niravkumar.l.rabara@altera.com>
Date:   Fri Apr 25 07:26:39 2025 -0700

    EDAC/altera: Test the correct error reg offset
    
    commit 4fb7b8fceb0beebbe00712c3daf49ade0386076a upstream.
    
    Test correct structure member, ecc_cecnt_offset, before using it.
    
      [ bp: Massage commit message. ]
    
    Fixes: 73bcc942f427 ("EDAC, altera: Add Arria10 EDAC support")
    Signed-off-by: Niravkumar L Rabara <niravkumar.l.rabara@altera.com>
    Signed-off-by: Matthew Gerlach <matthew.gerlach@altera.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Acked-by: Dinh Nguyen <dinguyen@kernel.org>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/20250425142640.33125-2-matthew.gerlach@altera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
firmware: arm_scmi: Balance device refcount when destroying devices [+ + +]
Author: Cristian Marussi <cristian.marussi@arm.com>
Date:   Thu Mar 6 18:54:47 2025 +0000

    firmware: arm_scmi: Balance device refcount when destroying devices
    
    [ Upstream commit 9ca67840c0ddf3f39407339624cef824a4f27599 ]
    
    Using device_find_child() to lookup the proper SCMI device to destroy
    causes an unbalance in device refcount, since device_find_child() calls an
    implicit get_device(): this, in turns, inhibits the call of the provided
    release methods upon devices destruction.
    
    As a consequence, one of the structures that is not freed properly upon
    destruction is the internal struct device_private dev->p populated by the
    drivers subsystem core.
    
    KMemleak detects this situation since loading/unloding some SCMI driver
    causes related devices to be created/destroyed without calling any
    device_release method.
    
    unreferenced object 0xffff00000f583800 (size 512):
      comm "insmod", pid 227, jiffies 4294912190
      hex dump (first 32 bytes):
        00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........
        ff ff ff ff ff ff ff ff 60 36 1d 8a 00 80 ff ff  ........`6......
      backtrace (crc 114e2eed):
        kmemleak_alloc+0xbc/0xd8
        __kmalloc_cache_noprof+0x2dc/0x398
        device_add+0x954/0x12d0
        device_register+0x28/0x40
        __scmi_device_create.part.0+0x1bc/0x380
        scmi_device_create+0x2d0/0x390
        scmi_create_protocol_devices+0x74/0xf8
        scmi_device_request_notifier+0x1f8/0x2a8
        notifier_call_chain+0x110/0x3b0
        blocking_notifier_call_chain+0x70/0xb0
        scmi_driver_register+0x350/0x7f0
        0xffff80000a3b3038
        do_one_initcall+0x12c/0x730
        do_init_module+0x1dc/0x640
        load_module+0x4b20/0x5b70
        init_module_from_file+0xec/0x158
    
    $ ./scripts/faddr2line ./vmlinux device_add+0x954/0x12d0
    device_add+0x954/0x12d0:
    kmalloc_noprof at include/linux/slab.h:901
    (inlined by) kzalloc_noprof at include/linux/slab.h:1037
    (inlined by) device_private_init at drivers/base/core.c:3510
    (inlined by) device_add at drivers/base/core.c:3561
    
    Balance device refcount by issuing a put_device() on devices found via
    device_find_child().
    
    Reported-by: Alice Ryhl <aliceryhl@google.com>
    Closes: https://lore.kernel.org/linux-arm-kernel/Z8nK3uFkspy61yjP@arm.com/T/#mc1f73a0ea5e41014fa145147b7b839fc988ada8f
    CC: Sudeep Holla <sudeep.holla@arm.com>
    CC: Catalin Marinas <catalin.marinas@arm.com>
    Fixes: d4f9dddd21f3 ("firmware: arm_scmi: Add dynamic scmi devices creation")
    Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
    Tested-by: Alice Ryhl <aliceryhl@google.com>
    Message-Id: <20250306185447.2039336-1-cristian.marussi@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: imx-lpi2c: Fix clock count when probe defers [+ + +]
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Mon Apr 21 14:23:41 2025 +0800

    i2c: imx-lpi2c: Fix clock count when probe defers
    
    commit b1852c5de2f2a37dd4462f7837c9e3e678f9e546 upstream.
    
    Deferred probe with pm_runtime_put() may delay clock disable, causing
    incorrect clock usage count. Use pm_runtime_put_sync() to ensure the
    clock is disabled immediately.
    
    Fixes: 13d6eb20fc79 ("i2c: imx-lpi2c: add runtime pm support")
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Cc: <stable@vger.kernel.org> # v4.16+
    Link: https://lore.kernel.org/r/20250421062341.2471922-1-carlos.song@nxp.com
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ice: Check VF VSI Pointer Value in ice_vc_add_fdir_fltr() [+ + +]
Author: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
Date:   Fri Apr 25 15:26:32 2025 -0700

    ice: Check VF VSI Pointer Value in ice_vc_add_fdir_fltr()
    
    [ Upstream commit 425c5f266b2edeee0ce16fedd8466410cdcfcfe3 ]
    
    As mentioned in the commit baeb705fd6a7 ("ice: always check VF VSI
    pointer values"), we need to perform a null pointer check on the return
    value of ice_get_vf_vsi() before using it.
    
    Fixes: 6ebbe97a4881 ("ice: Add a per-VF limit on number of FDIR filters")
    Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://patch.msgid.link/20250425222636.3188441-3-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: Refactor promiscuous functions [+ + +]
Author: Brett Creeley <brett.creeley@intel.com>
Date:   Tue Mar 2 10:15:34 2021 -0800

    ice: Refactor promiscuous functions
    
    [ Upstream commit fabf480bf95d71c9cfe8a8d6307e0035df963a6a ]
    
    Some of the promiscuous mode functions take a boolean to indicate
    set/clear, which affects readability. Refactor and provide an
    interface for the promiscuous mode code with explicit set and clear
    promiscuous mode operations.
    
    Signed-off-by: Brett Creeley <brett.creeley@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: 425c5f266b2e ("ice: Check VF VSI Pointer Value in ice_vc_add_fdir_fltr()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/amd: Fix potential buffer overflow in parse_ivrs_acpihid [+ + +]
Author: Pavel Paklov <Pavel.Paklov@cyberprotect.ru>
Date:   Tue Mar 25 09:22:44 2025 +0000

    iommu/amd: Fix potential buffer overflow in parse_ivrs_acpihid
    
    commit 8dee308e4c01dea48fc104d37f92d5b58c50b96c upstream.
    
    There is a string parsing logic error which can lead to an overflow of hid
    or uid buffers. Comparing ACPIID_LEN against a total string length doesn't
    take into account the lengths of individual hid and uid buffers so the
    check is insufficient in some cases. For example if the length of hid
    string is 4 and the length of the uid string is 260, the length of str
    will be equal to ACPIID_LEN + 1 but uid string will overflow uid buffer
    which size is 256.
    
    The same applies to the hid string with length 13 and uid string with
    length 250.
    
    Check the length of hid and uid strings separately to prevent
    buffer overflow.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: ca3bf5d47cec ("iommu/amd: Introduces ivrs_acpihid kernel parameter")
    Cc: stable@vger.kernel.org
    Signed-off-by: Pavel Paklov <Pavel.Paklov@cyberprotect.ru>
    Link: https://lore.kernel.org/r/20250325092259.392844-1-Pavel.Paklov@cyberprotect.ru
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommu/arm-smmu-v3: Fix iommu_device_probe bug due to duplicated stream ids [+ + +]
Author: Nicolin Chen <nicolinc@nvidia.com>
Date:   Tue Apr 15 11:56:20 2025 -0700

    iommu/arm-smmu-v3: Fix iommu_device_probe bug due to duplicated stream ids
    
    [ Upstream commit b00d24997a11c10d3e420614f0873b83ce358a34 ]
    
    ASPEED VGA card has two built-in devices:
     0008:06:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 06)
     0008:07:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 52)
    
    Its toplogy looks like this:
     +-[0008:00]---00.0-[01-09]--+-00.0-[02-09]--+-00.0-[03]----00.0  Sandisk Corp Device 5017
                                 |               +-01.0-[04]--
                                 |               +-02.0-[05]----00.0  NVIDIA Corporation Device
                                 |               +-03.0-[06-07]----00.0-[07]----00.0  ASPEED Technology, Inc. ASPEED Graphics Family
                                 |               +-04.0-[08]----00.0  Renesas Technology Corp. uPD720201 USB 3.0 Host Controller
                                 |               \-05.0-[09]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
                                 \-00.1  PMC-Sierra Inc. Device 4028
    
    The IORT logic populaties two identical IDs into the fwspec->ids array via
    DMA aliasing in iort_pci_iommu_init() called by pci_for_each_dma_alias().
    
    Though the SMMU driver had been able to handle this situation since commit
    563b5cbe334e ("iommu/arm-smmu-v3: Cope with duplicated Stream IDs"), that
    got broken by the later commit cdf315f907d4 ("iommu/arm-smmu-v3: Maintain
    a SID->device structure"), which ended up with allocating separate streams
    with the same stuffing.
    
    On a kernel prior to v6.15-rc1, there has been an overlooked warning:
      pci 0008:07:00.0: vgaarb: setting as boot VGA device
      pci 0008:07:00.0: vgaarb: bridge control possible
      pci 0008:07:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
      pcieport 0008:06:00.0: Adding to iommu group 14
      ast 0008:07:00.0: stream 67328 already in tree   <===== WARNING
      ast 0008:07:00.0: enabling device (0002 -> 0003)
      ast 0008:07:00.0: Using default configuration
      ast 0008:07:00.0: AST 2600 detected
      ast 0008:07:00.0: [drm] Using analog VGA
      ast 0008:07:00.0: [drm] dram MCLK=396 Mhz type=1 bus_width=16
      [drm] Initialized ast 0.1.0 for 0008:07:00.0 on minor 0
      ast 0008:07:00.0: [drm] fb0: astdrmfb frame buffer device
    
    With v6.15-rc, since the commit bcb81ac6ae3c ("iommu: Get DT/ACPI parsing
    into the proper probe path"), the error returned with the warning is moved
    to the SMMU device probe flow:
      arm_smmu_probe_device+0x15c/0x4c0
      __iommu_probe_device+0x150/0x4f8
      probe_iommu_group+0x44/0x80
      bus_for_each_dev+0x7c/0x100
      bus_iommu_probe+0x48/0x1a8
      iommu_device_register+0xb8/0x178
      arm_smmu_device_probe+0x1350/0x1db0
    which then fails the entire SMMU driver probe:
      pci 0008:06:00.0: Adding to iommu group 21
      pci 0008:07:00.0: stream 67328 already in tree
      arm-smmu-v3 arm-smmu-v3.9.auto: Failed to register iommu
      arm-smmu-v3 arm-smmu-v3.9.auto: probe with driver arm-smmu-v3 failed with error -22
    
    Since SMMU driver had been already expecting a potential duplicated Stream
    ID in arm_smmu_install_ste_for_dev(), change the arm_smmu_insert_master()
    routine to ignore a duplicated ID from the fwspec->sids array as well.
    
    Note: this has been failing the iommu_device_probe() since 2021, although a
    recent iommu commit in v6.15-rc1 that moves iommu_device_probe() started to
    fail the SMMU driver probe. Since nobody has cared about DMA Alias support,
    leave that as it was but fix the fundamental iommu_device_probe() breakage.
    
    Fixes: cdf315f907d4 ("iommu/arm-smmu-v3: Maintain a SID->device structure")
    Cc: stable@vger.kernel.org
    Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
    Link: https://lore.kernel.org/r/20250415185620.504299-1-nicolinc@nvidia.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iommu/arm-smmu-v3: Use the new rb tree helpers [+ + +]
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Tue Aug 6 20:31:15 2024 -0300

    iommu/arm-smmu-v3: Use the new rb tree helpers
    
    [ Upstream commit a2bb820e862d61f9ca1499e500915f9f505a2655 ]
    
    Since v5.12 the rbtree has gained some simplifying helpers aimed at making
    rb tree users write less convoluted boiler plate code. Instead the caller
    provides a single comparison function and the helpers generate the prior
    open-coded stuff.
    
    Update smmu->streams to use rb_find_add() and rb_find().
    
    Tested-by: Nicolin Chen <nicolinc@nvidia.com>
    Reviewed-by: Mostafa Saleh <smostafa@google.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Link: https://lore.kernel.org/r/1-v3-9fef8cdc2ff6+150d1-smmuv3_tidy_jgg@nvidia.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Stable-dep-of: b00d24997a11 ("iommu/arm-smmu-v3: Fix iommu_device_probe bug due to duplicated stream ids")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/vt-d: Apply quirk_iommu_igfx for 8086:0044 (QM57/QS57) [+ + +]
Author: Mingcong Bai <jeffbai@aosc.io>
Date:   Fri Apr 18 11:16:42 2025 +0800

    iommu/vt-d: Apply quirk_iommu_igfx for 8086:0044 (QM57/QS57)
    
    commit 2c8a7c66c90832432496616a9a3c07293f1364f3 upstream.
    
    On the Lenovo ThinkPad X201, when Intel VT-d is enabled in the BIOS, the
    kernel boots with errors related to DMAR, the graphical interface appeared
    quite choppy, and the system resets erratically within a minute after it
    booted:
    
    DMAR: DRHD: handling fault status reg 3
    DMAR: [DMA Write NO_PASID] Request device [00:02.0] fault addr 0xb97ff000
    [fault reason 0x05] PTE Write access is not set
    
    Upon comparing boot logs with VT-d on/off, I found that the Intel Calpella
    quirk (`quirk_calpella_no_shadow_gtt()') correctly applied the igfx IOMMU
    disable/quirk correctly:
    
    pci 0000:00:00.0: DMAR: BIOS has allocated no shadow GTT; disabling IOMMU
    for graphics
    
    Whereas with VT-d on, it went into the "else" branch, which then
    triggered the DMAR handling fault above:
    
    ... else if (!disable_igfx_iommu) {
            /* we have to ensure the gfx device is idle before we flush */
            pci_info(dev, "Disabling batched IOTLB flush on Ironlake\n");
            iommu_set_dma_strict();
    }
    
    Now, this is not exactly scientific, but moving 0x0044 to quirk_iommu_igfx
    seems to have fixed the aforementioned issue. Running a few `git blame'
    runs on the function, I have found that the quirk was originally
    introduced as a fix specific to ThinkPad X201:
    
    commit 9eecabcb9a92 ("intel-iommu: Abort IOMMU setup for igfx if BIOS gave
    no shadow GTT space")
    
    Which was later revised twice to the "else" branch we saw above:
    
    - 2011: commit 6fbcfb3e467a ("intel-iommu: Workaround IOTLB hang on
      Ironlake GPU")
    - 2024: commit ba00196ca41c ("iommu/vt-d: Decouple igfx_off from graphic
      identity mapping")
    
    I'm uncertain whether further testings on this particular laptops were
    done in 2011 and (honestly I'm not sure) 2024, but I would be happy to do
    some distro-specific testing if that's what would be required to verify
    this patch.
    
    P.S., I also see IDs 0x0040, 0x0062, and 0x006a listed under the same
    `quirk_calpella_no_shadow_gtt()' quirk, but I'm not sure how similar these
    chipsets are (if they share the same issue with VT-d or even, indeed, if
    this issue is specific to a bug in the Lenovo BIOS). With regards to
    0x0062, it seems to be a Centrino wireless card, but not a chipset?
    
    I have also listed a couple (distro and kernel) bug reports below as
    references (some of them are from 7-8 years ago!), as they seem to be
    similar issue found on different Westmere/Ironlake, Haswell, and Broadwell
    hardware setups.
    
    Cc: stable@vger.kernel.org
    Fixes: 6fbcfb3e467a ("intel-iommu: Workaround IOTLB hang on Ironlake GPU")
    Fixes: ba00196ca41c ("iommu/vt-d: Decouple igfx_off from graphic identity mapping")
    Link: https://groups.google.com/g/qubes-users/c/4NP4goUds2c?pli=1
    Link: https://bugs.archlinux.org/task/65362
    Link: https://bbs.archlinux.org/viewtopic.php?id=230323
    Reported-by: Wenhao Sun <weiguangtwk@outlook.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=197029
    Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
    Link: https://lore.kernel.org/r/20250415133330.12528-1-jeffbai@aosc.io
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
irqchip/gic-v2m: Add const to of_device_id [+ + +]
Author: Xiang wangx <wangxiang@cdjrlc.com>
Date:   Thu Dec 9 21:24:53 2021 +0800

    irqchip/gic-v2m: Add const to of_device_id
    
    [ Upstream commit c10f2f8b5d8027c1ea77f777f2d16cb9043a6c09 ]
    
    struct of_device_id should normally be const.
    
    Signed-off-by: Xiang wangx <wangxiang@cdjrlc.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211209132453.25623-1-wangxiang@cdjrlc.com
    Stable-dep-of: 3318dc299b07 ("irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

irqchip/gic-v2m: Mark a few functions __init [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Nov 21 15:39:33 2022 +0100

    irqchip/gic-v2m: Mark a few functions __init
    
    [ Upstream commit d51a15af37ce8cf59e73de51dcdce3c9f4944974 ]
    
    They are all part of the init sequence.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20221121140048.534395323@linutronix.de
    Stable-dep-of: 3318dc299b07 ("irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode() [+ + +]
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Tue Apr 22 17:16:16 2025 +0100

    irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode()
    
    [ Upstream commit 3318dc299b072a0511d6dfd8367f3304fb6d9827 ]
    
    With ACPI in place, gicv2m_get_fwnode() is registered with the pci
    subsystem as pci_msi_get_fwnode_cb(), which may get invoked at runtime
    during a PCI host bridge probe. But, the call back is wrongly marked as
    __init, causing it to be freed, while being registered with the PCI
    subsystem and could trigger:
    
     Unable to handle kernel paging request at virtual address ffff8000816c0400
      gicv2m_get_fwnode+0x0/0x58 (P)
      pci_set_bus_msi_domain+0x74/0x88
      pci_register_host_bridge+0x194/0x548
    
    This is easily reproducible on a Juno board with ACPI boot.
    
    Retain the function for later use.
    
    Fixes: 0644b3daca28 ("irqchip/gic-v2m: acpi: Introducing GICv2m ACPI support")
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: x86: Load DR6 with guest value only before entering .vcpu_run() loop [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Fri Jan 24 17:18:33 2025 -0800

    KVM: x86: Load DR6 with guest value only before entering .vcpu_run() loop
    
    commit c2fee09fc167c74a64adb08656cb993ea475197e upstream.
    
    Move the conditional loading of hardware DR6 with the guest's DR6 value
    out of the core .vcpu_run() loop to fix a bug where KVM can load hardware
    with a stale vcpu->arch.dr6.
    
    When the guest accesses a DR and host userspace isn't debugging the guest,
    KVM disables DR interception and loads the guest's values into hardware on
    VM-Enter and saves them on VM-Exit.  This allows the guest to access DRs
    at will, e.g. so that a sequence of DR accesses to configure a breakpoint
    only generates one VM-Exit.
    
    For DR0-DR3, the logic/behavior is identical between VMX and SVM, and also
    identical between KVM_DEBUGREG_BP_ENABLED (userspace debugging the guest)
    and KVM_DEBUGREG_WONT_EXIT (guest using DRs), and so KVM handles loading
    DR0-DR3 in common code, _outside_ of the core kvm_x86_ops.vcpu_run() loop.
    
    But for DR6, the guest's value doesn't need to be loaded into hardware for
    KVM_DEBUGREG_BP_ENABLED, and SVM provides a dedicated VMCB field whereas
    VMX requires software to manually load the guest value, and so loading the
    guest's value into DR6 is handled by {svm,vmx}_vcpu_run(), i.e. is done
    _inside_ the core run loop.
    
    Unfortunately, saving the guest values on VM-Exit is initiated by common
    x86, again outside of the core run loop.  If the guest modifies DR6 (in
    hardware, when DR interception is disabled), and then the next VM-Exit is
    a fastpath VM-Exit, KVM will reload hardware DR6 with vcpu->arch.dr6 and
    clobber the guest's actual value.
    
    The bug shows up primarily with nested VMX because KVM handles the VMX
    preemption timer in the fastpath, and the window between hardware DR6
    being modified (in guest context) and DR6 being read by guest software is
    orders of magnitude larger in a nested setup.  E.g. in non-nested, the
    VMX preemption timer would need to fire precisely between #DB injection
    and the #DB handler's read of DR6, whereas with a KVM-on-KVM setup, the
    window where hardware DR6 is "dirty" extends all the way from L1 writing
    DR6 to VMRESUME (in L1).
    
        L1's view:
        ==========
        <L1 disables DR interception>
               CPU 0/KVM-7289    [023] d....  2925.640961: kvm_entry: vcpu 0
     A:  L1 Writes DR6
               CPU 0/KVM-7289    [023] d....  2925.640963: <hack>: Set DRs, DR6 = 0xffff0ff1
    
     B:        CPU 0/KVM-7289    [023] d....  2925.640967: kvm_exit: vcpu 0 reason EXTERNAL_INTERRUPT intr_info 0x800000ec
    
     D: L1 reads DR6, arch.dr6 = 0
               CPU 0/KVM-7289    [023] d....  2925.640969: <hack>: Sync DRs, DR6 = 0xffff0ff0
    
               CPU 0/KVM-7289    [023] d....  2925.640976: kvm_entry: vcpu 0
        L2 reads DR6, L1 disables DR interception
               CPU 0/KVM-7289    [023] d....  2925.640980: kvm_exit: vcpu 0 reason DR_ACCESS info1 0x0000000000000216
               CPU 0/KVM-7289    [023] d....  2925.640983: kvm_entry: vcpu 0
    
               CPU 0/KVM-7289    [023] d....  2925.640983: <hack>: Set DRs, DR6 = 0xffff0ff0
    
        L2 detects failure
               CPU 0/KVM-7289    [023] d....  2925.640987: kvm_exit: vcpu 0 reason HLT
        L1 reads DR6 (confirms failure)
               CPU 0/KVM-7289    [023] d....  2925.640990: <hack>: Sync DRs, DR6 = 0xffff0ff0
    
        L0's view:
        ==========
        L2 reads DR6, arch.dr6 = 0
              CPU 23/KVM-5046    [001] d....  3410.005610: kvm_exit: vcpu 23 reason DR_ACCESS info1 0x0000000000000216
              CPU 23/KVM-5046    [001] .....  3410.005610: kvm_nested_vmexit: vcpu 23 reason DR_ACCESS info1 0x0000000000000216
    
        L2 => L1 nested VM-Exit
              CPU 23/KVM-5046    [001] .....  3410.005610: kvm_nested_vmexit_inject: reason: DR_ACCESS ext_inf1: 0x0000000000000216
    
              CPU 23/KVM-5046    [001] d....  3410.005610: kvm_entry: vcpu 23
              CPU 23/KVM-5046    [001] d....  3410.005611: kvm_exit: vcpu 23 reason VMREAD
              CPU 23/KVM-5046    [001] d....  3410.005611: kvm_entry: vcpu 23
              CPU 23/KVM-5046    [001] d....  3410.005612: kvm_exit: vcpu 23 reason VMREAD
              CPU 23/KVM-5046    [001] d....  3410.005612: kvm_entry: vcpu 23
    
        L1 writes DR7, L0 disables DR interception
              CPU 23/KVM-5046    [001] d....  3410.005612: kvm_exit: vcpu 23 reason DR_ACCESS info1 0x0000000000000007
              CPU 23/KVM-5046    [001] d....  3410.005613: kvm_entry: vcpu 23
    
        L0 writes DR6 = 0 (arch.dr6)
              CPU 23/KVM-5046    [001] d....  3410.005613: <hack>: Set DRs, DR6 = 0xffff0ff0
    
     A: <L1 writes DR6 = 1, no interception, arch.dr6 is still '0'>
    
     B:       CPU 23/KVM-5046    [001] d....  3410.005614: kvm_exit: vcpu 23 reason PREEMPTION_TIMER
              CPU 23/KVM-5046    [001] d....  3410.005614: kvm_entry: vcpu 23
    
     C: L0 writes DR6 = 0 (arch.dr6)
              CPU 23/KVM-5046    [001] d....  3410.005614: <hack>: Set DRs, DR6 = 0xffff0ff0
    
        L1 => L2 nested VM-Enter
              CPU 23/KVM-5046    [001] d....  3410.005616: kvm_exit: vcpu 23 reason VMRESUME
    
        L0 reads DR6, arch.dr6 = 0
    
    Reported-by: John Stultz <jstultz@google.com>
    Closes: https://lkml.kernel.org/r/CANDhNCq5_F3HfFYABqFGCA1bPd_%2BxgNj-iDQhH4tDk%2Bwi8iZZg%40mail.gmail.com
    Fixes: 375e28ffc0cf ("KVM: X86: Set host DR6 only on VMX and for KVM_DEBUGREG_WONT_EXIT")
    Fixes: d67668e9dd76 ("KVM: x86, SVM: isolate vcpu->arch.dr6 from vmcb->save.dr6")
    Cc: stable@vger.kernel.org
    Cc: Jim Mattson <jmattson@google.com>
    Tested-by: John Stultz <jstultz@google.com>
    Link: https://lore.kernel.org/r/20250125011833.3644371-1-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    [jth: Handled conflicts with kvm_x86_ops reshuffle]
    Signed-off-by: James Houghton <jthoughton@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.15.182 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri May 9 09:39:43 2025 +0200

    Linux 5.15.182
    
    Link: https://lore.kernel.org/r/20250507183759.048732653@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20250508112559.173535641@linuxfoundation.org
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Vijayendra Suman <vijayendra.suman@oracle.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mmc: renesas_sdhi: Fix error handling in renesas_sdhi_probe [+ + +]
Author: Ruslan Piasetskyi <ruslan.piasetskyi@gmail.com>
Date:   Wed Mar 26 23:06:38 2025 +0100

    mmc: renesas_sdhi: Fix error handling in renesas_sdhi_probe
    
    commit 649b50a82f09fa44c2f7a65618e4584072145ab7 upstream.
    
    After moving tmio_mmc_host_probe down, error handling has to be
    adjusted.
    
    Fixes: 74f45de394d9 ("mmc: renesas_sdhi: register irqs before registering controller")
    Reviewed-by: Ihar Salauyou <salauyou.ihar@gmail.com>
    Signed-off-by: Ruslan Piasetskyi <ruslan.piasetskyi@gmail.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250326220638.460083-1-ruslan.piasetskyi@gmail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5: E-switch, Fix error handling for enabling roce [+ + +]
Author: Chris Mi <cmi@nvidia.com>
Date:   Wed Apr 23 11:36:11 2025 +0300

    net/mlx5: E-switch, Fix error handling for enabling roce
    
    [ Upstream commit 90538d23278a981e344d364e923162fce752afeb ]
    
    The cited commit assumes enabling roce always succeeds. But it is
    not true. Add error handling for it.
    
    Fixes: 80f09dfc237f ("net/mlx5: Eswitch, enable RoCE loopback traffic")
    Signed-off-by: Chris Mi <cmi@nvidia.com>
    Reviewed-by: Roi Dayan <roid@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Link: https://patch.msgid.link/20250423083611.324567-6-mbloch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: E-Switch, Initialize MAC Address for Default GID [+ + +]
Author: Maor Gottlieb <maorg@nvidia.com>
Date:   Wed Apr 23 11:36:08 2025 +0300

    net/mlx5: E-Switch, Initialize MAC Address for Default GID
    
    [ Upstream commit 5d1a04f347e6cbf5ffe74da409a5d71fbe8c5f19 ]
    
    Initialize the source MAC address when creating the default GID entry.
    Since this entry is used only for loopback traffic, it only needs to
    be a unicast address. A zeroed-out MAC address is sufficient for this
    purpose.
    Without this fix, random bits would be assigned as the source address.
    If these bits formed a multicast address, the firmware would return an
    error, preventing the user from switching to switchdev mode:
    
    Error: mlx5_core: Failed setting eswitch to offloads.
    kernel answers: Invalid argument
    
    Fixes: 80f09dfc237f ("net/mlx5: Eswitch, enable RoCE loopback traffic")
    Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Link: https://patch.msgid.link/20250423083611.324567-3-mbloch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/sched: act_mirred: don't override retval if we already lost the skb [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Thu Feb 15 06:33:46 2024 -0800

    net/sched: act_mirred: don't override retval if we already lost the skb
    
    commit 166c2c8a6a4dc2e4ceba9e10cfe81c3e469e3210 upstream.
    
    If we're redirecting the skb, and haven't called tcf_mirred_forward(),
    yet, we need to tell the core to drop the skb by setting the retcode
    to SHOT. If we have called tcf_mirred_forward(), however, the skb
    is out of our hands and returning SHOT will lead to UaF.
    
    Move the retval override to the error path which actually need it.
    
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Fixes: e5cf1baf92cb ("act_mirred: use TC_ACT_REINSERT when possible")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [Minor conflict resolved due to code context change.]
    Signed-off-by: Jianqi Ren <jianqi.ren.cn@windriver.com>
    Signed-off-by: He Zhe <zhe.he@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: dlink: Correct endianness handling of led_mode [+ + +]
Author: Simon Horman <horms@kernel.org>
Date:   Fri Apr 25 16:50:47 2025 +0100

    net: dlink: Correct endianness handling of led_mode
    
    [ Upstream commit e7e5ae71831c44d58627a991e603845a2fed2cab ]
    
    As it's name suggests, parse_eeprom() parses EEPROM data.
    
    This is done by reading data, 16 bits at a time as follows:
    
            for (i = 0; i < 128; i++)
                    ((__le16 *) sromdata)[i] = cpu_to_le16(read_eeprom(np, i));
    
    sromdata is at the same memory location as psrom.
    And the type of psrom is a pointer to struct t_SROM.
    
    As can be seen in the loop above, data is stored in sromdata, and thus psrom,
    as 16-bit little-endian values.
    
    However, the integer fields of t_SROM are host byte order integers.
    And in the case of led_mode this leads to a little endian value
    being incorrectly treated as host byte order.
    
    Looking at rio_set_led_mode, this does appear to be a bug as that code
    masks led_mode with 0x1, 0x2 and 0x8. Logic that would be effected by a
    reversed byte order.
    
    This problem would only manifest on big endian hosts.
    
    Found by inspection while investigating a sparse warning
    regarding the crc field of t_SROM.
    
    I believe that warning is a false positive. And although I plan
    to send a follow-up to use little-endian types for other the integer
    fields of PSROM_t I do not believe that will involve any bug fixes.
    
    Compile tested only.
    
    Fixes: c3f45d322cbd ("dl2k: Add support for IP1000A-based cards")
    Signed-off-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250425-dlink-led-mode-v1-1-6bae3c36e736@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: mtk-star-emac: fix spinlock recursion issues on rx/tx poll [+ + +]
Author: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
Date:   Thu Apr 24 10:38:48 2025 +0200

    net: ethernet: mtk-star-emac: fix spinlock recursion issues on rx/tx poll
    
    [ Upstream commit 6fe0866014486736cc3ba1c6fd4606d3dbe55c9c ]
    
    Use spin_lock_irqsave and spin_unlock_irqrestore instead of spin_lock
    and spin_unlock in mtk_star_emac driver to avoid spinlock recursion
    occurrence that can happen when enabling the DMA interrupts again in
    rx/tx poll.
    
    ```
    BUG: spinlock recursion on CPU#0, swapper/0/0
     lock: 0xffff00000db9cf20, .magic: dead4ead, .owner: swapper/0/0,
        .owner_cpu: 0
    CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted
        6.15.0-rc2-next-20250417-00001-gf6a27738686c-dirty #28 PREEMPT
    Hardware name: MediaTek MT8365 Open Platform EVK (DT)
    Call trace:
     show_stack+0x18/0x24 (C)
     dump_stack_lvl+0x60/0x80
     dump_stack+0x18/0x24
     spin_dump+0x78/0x88
     do_raw_spin_lock+0x11c/0x120
     _raw_spin_lock+0x20/0x2c
     mtk_star_handle_irq+0xc0/0x22c [mtk_star_emac]
     __handle_irq_event_percpu+0x48/0x140
     handle_irq_event+0x4c/0xb0
     handle_fasteoi_irq+0xa0/0x1bc
     handle_irq_desc+0x34/0x58
     generic_handle_domain_irq+0x1c/0x28
     gic_handle_irq+0x4c/0x120
     do_interrupt_handler+0x50/0x84
     el1_interrupt+0x34/0x68
     el1h_64_irq_handler+0x18/0x24
     el1h_64_irq+0x6c/0x70
     regmap_mmio_read32le+0xc/0x20 (P)
     _regmap_bus_reg_read+0x6c/0xac
     _regmap_read+0x60/0xdc
     regmap_read+0x4c/0x80
     mtk_star_rx_poll+0x2f4/0x39c [mtk_star_emac]
     __napi_poll+0x38/0x188
     net_rx_action+0x164/0x2c0
     handle_softirqs+0x100/0x244
     __do_softirq+0x14/0x20
     ____do_softirq+0x10/0x20
     call_on_irq_stack+0x24/0x64
     do_softirq_own_stack+0x1c/0x40
     __irq_exit_rcu+0xd4/0x10c
     irq_exit_rcu+0x10/0x1c
     el1_interrupt+0x38/0x68
     el1h_64_irq_handler+0x18/0x24
     el1h_64_irq+0x6c/0x70
     cpuidle_enter_state+0xac/0x320 (P)
     cpuidle_enter+0x38/0x50
     do_idle+0x1e4/0x260
     cpu_startup_entry+0x34/0x3c
     rest_init+0xdc/0xe0
     console_on_rootfs+0x0/0x6c
     __primary_switched+0x88/0x90
    ```
    
    Fixes: 0a8bd81fd6aa ("net: ethernet: mtk-star-emac: separate tx/rx handling with two NAPIs")
    Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
    Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Acked-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Link: https://patch.msgid.link/20250424-mtk_star_emac-fix-spinlock-recursion-issue-v2-1-f3fde2e529d8@collabora.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: e54b4db35e20 ("net: ethernet: mtk-star-emac: rearm interrupts in rx_poll only when advised")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: mtk-star-emac: rearm interrupts in rx_poll only when advised [+ + +]
Author: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
Date:   Thu Apr 24 10:38:49 2025 +0200

    net: ethernet: mtk-star-emac: rearm interrupts in rx_poll only when advised
    
    [ Upstream commit e54b4db35e201a9173da9cb7abc8377e12abaf87 ]
    
    In mtk_star_rx_poll function, on event processing completion, the
    mtk_star_emac driver calls napi_complete_done but ignores its return
    code and enable RX DMA interrupts inconditionally. This return code
    gives the info if a device should avoid rearming its interrupts or not,
    so fix this behaviour by taking it into account.
    
    Fixes: 8c7bd5a454ff ("net: ethernet: mtk-star-emac: new driver")
    Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
    Acked-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Link: https://patch.msgid.link/20250424-mtk_star_emac-fix-spinlock-recursion-issue-v2-2-f3fde2e529d8@collabora.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: mtk-star-emac: separate tx/rx handling with two NAPIs [+ + +]
Author: Biao Huang <biao.huang@mediatek.com>
Date:   Wed Jun 29 11:17:42 2022 +0800

    net: ethernet: mtk-star-emac: separate tx/rx handling with two NAPIs
    
    [ Upstream commit 0a8bd81fd6aaace14979152e0540da8ff158a00a ]
    
    Current driver may lost tx interrupts under bidirectional test with iperf3,
    which leads to some unexpected issues.
    
    This patch let rx/tx interrupt enable/disable separately, and rx/tx are
    handled in different NAPIs.
    
    Signed-off-by: Biao Huang <biao.huang@mediatek.com>
    Signed-off-by: Yinghua Pan <ot_yinghua.pan@mediatek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: e54b4db35e20 ("net: ethernet: mtk-star-emac: rearm interrupts in rx_poll only when advised")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: fec: ERR007885 Workaround for conventional TX [+ + +]
Author: Mattias Barthel <mattias.barthel@atlascopco.com>
Date:   Tue Apr 29 11:08:26 2025 +0200

    net: fec: ERR007885 Workaround for conventional TX
    
    [ Upstream commit a179aad12badc43201cbf45d1e8ed2c1383c76b9 ]
    
    Activate TX hang workaround also in
    fec_enet_txq_submit_skb() when TSO is not enabled.
    
    Errata: ERR007885
    
    Symptoms: NETDEV WATCHDOG: eth0 (fec): transmit queue 0 timed out
    
    commit 37d6017b84f7 ("net: fec: Workaround for imx6sx enet tx hang when enable three queues")
    There is a TDAR race condition for mutliQ when the software sets TDAR
    and the UDMA clears TDAR simultaneously or in a small window (2-4 cycles).
    This will cause the udma_tx and udma_tx_arbiter state machines to hang.
    
    So, the Workaround is checking TDAR status four time, if TDAR cleared by
        hardware and then write TDAR, otherwise don't set TDAR.
    
    Fixes: 53bb20d1faba ("net: fec: add variable reg_desc_active to speed things up")
    Signed-off-by: Mattias Barthel <mattias.barthel@atlascopco.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250429090826.3101258-1-mattiasbarthel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: add support for external loopback test [+ + +]
Author: Yonglong Liu <liuyonglong@huawei.com>
Date:   Fri Sep 16 10:38:00 2022 +0800

    net: hns3: add support for external loopback test
    
    [ Upstream commit 04b6ba143521f4485b7f2c36c655b262a79dae97 ]
    
    This patch add support for external loopback test.
    The successful test need the link is up with duplex full. The
    driver do external loopback first, and then the whole offline
    test.
    
    Signed-off-by: Yonglong Liu <liuyonglong@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 8e6b9c6ea5a5 ("net: hns3: fix an interrupt residual problem")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: defer calling ptp_clock_register() [+ + +]
Author: Jian Shen <shenjian15@huawei.com>
Date:   Wed Apr 30 17:30:52 2025 +0800

    net: hns3: defer calling ptp_clock_register()
    
    [ Upstream commit 4971394d9d624f91689d766f31ce668d169d9959 ]
    
    Currently the ptp_clock_register() is called before relative
    ptp resource ready. It may cause unexpected result when upper
    layer called the ptp API during the timewindow. Fix it by
    moving the ptp_clock_register() to the function end.
    
    Fixes: 0bf5eb788512 ("net: hns3: add support for PTP")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Link: https://patch.msgid.link/20250430093052.2400464-5-shaojijie@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: fix an interrupt residual problem [+ + +]
Author: Yonglong Liu <liuyonglong@huawei.com>
Date:   Wed Apr 30 17:30:50 2025 +0800

    net: hns3: fix an interrupt residual problem
    
    [ Upstream commit 8e6b9c6ea5a55045eed6526d8ee49e93192d1a58 ]
    
    When a VF is passthrough to a VM, and the VM is killed, the reported
    interrupt may not been handled, it will remain, and won't be clear by
    the nic engine even with a flr or tqp reset. When the VM restart, the
    interrupt of the first vector may be dropped by the second enable_irq
    in vfio, see the issue below:
    https://gitlab.com/qemu-project/qemu/-/issues/2884#note_2423361621
    
    We notice that the vfio has always behaved this way, and the interrupt
    is a residue of the nic engine, so we fix the problem by moving the
    vector enable process out of the enable_irq loop.
    
    Fixes: 08a100689d4b ("net: hns3: re-organize vector handle")
    Signed-off-by: Yonglong Liu <liuyonglong@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Link: https://patch.msgid.link/20250430093052.2400464-3-shaojijie@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: fix deadlock issue when externel_lb and reset are executed together [+ + +]
Author: Yonglong Liu <liuyonglong@huawei.com>
Date:   Mon Aug 7 19:34:52 2023 +0800

    net: hns3: fix deadlock issue when externel_lb and reset are executed together
    
    commit ac6257a3ae5db5193b1f19c268e4f72d274ddb88 upstream.
    
    When externel_lb and reset are executed together, a deadlock may
    occur:
    [ 3147.217009] INFO: task kworker/u321:0:7 blocked for more than 120 seconds.
    [ 3147.230483] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 3147.238999] task:kworker/u321:0  state:D stack:    0 pid:    7 ppid:     2 flags:0x00000008
    [ 3147.248045] Workqueue: hclge hclge_service_task [hclge]
    [ 3147.253957] Call trace:
    [ 3147.257093]  __switch_to+0x7c/0xbc
    [ 3147.261183]  __schedule+0x338/0x6f0
    [ 3147.265357]  schedule+0x50/0xe0
    [ 3147.269185]  schedule_preempt_disabled+0x18/0x24
    [ 3147.274488]  __mutex_lock.constprop.0+0x1d4/0x5dc
    [ 3147.279880]  __mutex_lock_slowpath+0x1c/0x30
    [ 3147.284839]  mutex_lock+0x50/0x60
    [ 3147.288841]  rtnl_lock+0x20/0x2c
    [ 3147.292759]  hclge_reset_prepare+0x68/0x90 [hclge]
    [ 3147.298239]  hclge_reset_subtask+0x88/0xe0 [hclge]
    [ 3147.303718]  hclge_reset_service_task+0x84/0x120 [hclge]
    [ 3147.309718]  hclge_service_task+0x2c/0x70 [hclge]
    [ 3147.315109]  process_one_work+0x1d0/0x490
    [ 3147.319805]  worker_thread+0x158/0x3d0
    [ 3147.324240]  kthread+0x108/0x13c
    [ 3147.328154]  ret_from_fork+0x10/0x18
    
    In externel_lb process, the hns3 driver call napi_disable()
    first, then the reset happen, then the restore process of the
    externel_lb will fail, and will not call napi_enable(). When
    doing externel_lb again, napi_disable() will be double call,
    cause a deadlock of rtnl_lock().
    
    This patch use the HNS3_NIC_STATE_DOWN state to protect the
    calling of napi_disable() and napi_enable() in externel_lb
    process, just as the usage in ndo_stop() and ndo_start().
    
    Fixes: 04b6ba143521 ("net: hns3: add support for external loopback test")
    Signed-off-by: Yonglong Liu <liuyonglong@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Link: https://lore.kernel.org/r/20230807113452.474224-5-shaojijie@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: hns3: fixed debugfs tm_qset size [+ + +]
Author: Hao Lan <lanhao@huawei.com>
Date:   Wed Apr 30 17:30:51 2025 +0800

    net: hns3: fixed debugfs tm_qset size
    
    [ Upstream commit e317aebeefcb3b0c71f2305af3c22871ca6b3833 ]
    
    The size of the tm_qset file of debugfs is limited to 64 KB,
    which is too small in the scenario with 1280 qsets.
    The size needs to be expanded to 1 MB.
    
    Fixes: 5e69ea7ee2a6 ("net: hns3: refactor the debugfs process")
    Signed-off-by: Hao Lan <lanhao@huawei.com>
    Signed-off-by: Peiyang Wang <wangpeiyang1@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Link: https://patch.msgid.link/20250430093052.2400464-4-shaojijie@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: store rx VLAN tag offload state for VF [+ + +]
Author: Jian Shen <shenjian15@huawei.com>
Date:   Wed Apr 30 17:30:49 2025 +0800

    net: hns3: store rx VLAN tag offload state for VF
    
    [ Upstream commit ef2383d078edcbe3055032436b16cdf206f26de2 ]
    
    The VF driver missed to store the rx VLAN tag strip state when
    user change the rx VLAN tag offload state. And it will default
    to enable the rx vlan tag strip when re-init VF device after
    reset. So if user disable rx VLAN tag offload, and trig reset,
    then the HW will still strip the VLAN tag from packet nad fill
    into RX BD, but the VF driver will ignore it for rx VLAN tag
    offload disabled. It may cause the rx VLAN tag dropped.
    
    Fixes: b2641e2ad456 ("net: hns3: Add support of hardware rx-vlan-offload to HNS3 VF driver")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250430093052.2400464-2-shaojijie@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipv6: fix UDPv6 GSO segmentation with NAT [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Sat Apr 26 17:32:09 2025 +0200

    net: ipv6: fix UDPv6 GSO segmentation with NAT
    
    [ Upstream commit b936a9b8d4a585ccb6d454921c36286bfe63e01d ]
    
    If any address or port is changed, update it in all packets and recalculate
    checksum.
    
    Fixes: 9fd1ff5d2ac7 ("udp: Support UDP fraglist GRO/GSO.")
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://patch.msgid.link/20250426153210.14044-1-nbd@nbd.name
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: lan743x: Fix memleak issue when GSO enabled [+ + +]
Author: Thangaraj Samynathan <thangaraj.s@microchip.com>
Date:   Tue Apr 29 10:55:27 2025 +0530

    net: lan743x: Fix memleak issue when GSO enabled
    
    [ Upstream commit 2d52e2e38b85c8b7bc00dca55c2499f46f8c8198 ]
    
    Always map the `skb` to the LS descriptor. Previously skb was
    mapped to EXT descriptor when the number of fragments is zero with
    GSO enabled. Mapping the skb to EXT descriptor prevents it from
    being freed, leading to a memory leak
    
    Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Thangaraj Samynathan <thangaraj.s@microchip.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20250429052527.10031-1-thangaraj.s@microchip.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: microchip: force IRQ polling mode for lan88xx [+ + +]
Author: Fiona Klute <fiona.klute@gmx.de>
Date:   Wed Apr 16 12:24:13 2025 +0200

    net: phy: microchip: force IRQ polling mode for lan88xx
    
    [ Upstream commit 30a41ed32d3088cd0d682a13d7f30b23baed7e93 ]
    
    With lan88xx based devices the lan78xx driver can get stuck in an
    interrupt loop while bringing the device up, flooding the kernel log
    with messages like the following:
    
    lan78xx 2-3:1.0 enp1s0u3: kevent 4 may have been dropped
    
    Removing interrupt support from the lan88xx PHY driver forces the
    driver to use polling instead, which avoids the problem.
    
    The issue has been observed with Raspberry Pi devices at least since
    4.14 (see [1], bug report for their downstream kernel), as well as
    with Nvidia devices [2] in 2020, where disabling interrupts was the
    vendor-suggested workaround (together with the claim that phylib
    changes in 4.9 made the interrupt handling in lan78xx incompatible).
    
    Iperf reports well over 900Mbits/sec per direction with client in
    --dualtest mode, so there does not seem to be a significant impact on
    throughput (lan88xx device connected via switch to the peer).
    
    [1] https://github.com/raspberrypi/linux/issues/2447
    [2] https://forums.developer.nvidia.com/t/jetson-xavier-and-lan7800-problem/142134/11
    
    Link: https://lore.kernel.org/0901d90d-3f20-4a10-b680-9c978e04ddda@lunn.ch
    Fixes: 792aec47d59d ("add microchip LAN88xx phy driver")
    Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
    Cc: kernel-list@raspberrypi.com
    Cc: stable@vger.kernel.org
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250416102413.30654-1-fiona.klute@gmx.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net_sched: drr: Fix double list add in class with netem as child qdisc [+ + +]
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Fri Apr 25 19:07:05 2025 -0300

    net_sched: drr: Fix double list add in class with netem as child qdisc
    
    [ Upstream commit f99a3fbf023e20b626be4b0f042463d598050c9a ]
    
    As described in Gerrard's report [1], there are use cases where a netem
    child qdisc will make the parent qdisc's enqueue callback reentrant.
    In the case of drr, there won't be a UAF, but the code will add the same
    classifier to the list twice, which will cause memory corruption.
    
    In addition to checking for qlen being zero, this patch checks whether the
    class was already added to the active_list (cl_is_active) before adding
    to the list to cover for the reentrant case.
    
    [1] https://lore.kernel.org/netdev/CAHcdcOm+03OD2j6R0=YHKqmy=VgJ8xEOKuP6c7mSgnp-TEJJbw@mail.gmail.com/
    
    Fixes: 37d9cf1a3ce3 ("sched: Fix detection of empty queues in child qdiscs")
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Link: https://patch.msgid.link/20250425220710.3964791-2-victor@mojatatu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net_sched: ets: Fix double list add in class with netem as child qdisc [+ + +]
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Fri Apr 25 19:07:07 2025 -0300

    net_sched: ets: Fix double list add in class with netem as child qdisc
    
    [ Upstream commit 1a6d0c00fa07972384b0c308c72db091d49988b6 ]
    
    As described in Gerrard's report [1], there are use cases where a netem
    child qdisc will make the parent qdisc's enqueue callback reentrant.
    In the case of ets, there won't be a UAF, but the code will add the same
    classifier to the list twice, which will cause memory corruption.
    
    In addition to checking for qlen being zero, this patch checks whether
    the class was already added to the active_list (cl_is_active) before
    doing the addition to cater for the reentrant case.
    
    [1] https://lore.kernel.org/netdev/CAHcdcOm+03OD2j6R0=YHKqmy=VgJ8xEOKuP6c7mSgnp-TEJJbw@mail.gmail.com/
    
    Fixes: 37d9cf1a3ce3 ("sched: Fix detection of empty queues in child qdiscs")
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Link: https://patch.msgid.link/20250425220710.3964791-4-victor@mojatatu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net_sched: hfsc: Fix a UAF vulnerability in class with netem as child qdisc [+ + +]
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Fri Apr 25 19:07:06 2025 -0300

    net_sched: hfsc: Fix a UAF vulnerability in class with netem as child qdisc
    
    [ Upstream commit 141d34391abbb315d68556b7c67ad97885407547 ]
    
    As described in Gerrard's report [1], we have a UAF case when an hfsc class
    has a netem child qdisc. The crux of the issue is that hfsc is assuming
    that checking for cl->qdisc->q.qlen == 0 guarantees that it hasn't inserted
    the class in the vttree or eltree (which is not true for the netem
    duplicate case).
    
    This patch checks the n_active class variable to make sure that the code
    won't insert the class in the vttree or eltree twice, catering for the
    reentrant case.
    
    [1] https://lore.kernel.org/netdev/CAHcdcOm+03OD2j6R0=YHKqmy=VgJ8xEOKuP6c7mSgnp-TEJJbw@mail.gmail.com/
    
    Fixes: 37d9cf1a3ce3 ("sched: Fix detection of empty queues in child qdiscs")
    Reported-by: Gerrard Tai <gerrard.tai@starlabs.sg>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Link: https://patch.msgid.link/20250425220710.3964791-3-victor@mojatatu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net_sched: qfq: Fix double list add in class with netem as child qdisc [+ + +]
Author: Victor Nogueira <victor@mojatatu.com>
Date:   Fri Apr 25 19:07:08 2025 -0300

    net_sched: qfq: Fix double list add in class with netem as child qdisc
    
    [ Upstream commit f139f37dcdf34b67f5bf92bc8e0f7f6b3ac63aa4 ]
    
    As described in Gerrard's report [1], there are use cases where a netem
    child qdisc will make the parent qdisc's enqueue callback reentrant.
    In the case of qfq, there won't be a UAF, but the code will add the same
    classifier to the list twice, which will cause memory corruption.
    
    This patch checks whether the class was already added to the agg->active
    list (cl_is_active) before doing the addition to cater for the reentrant
    case.
    
    [1] https://lore.kernel.org/netdev/CAHcdcOm+03OD2j6R0=YHKqmy=VgJ8xEOKuP6c7mSgnp-TEJJbw@mail.gmail.com/
    
    Fixes: 37d9cf1a3ce3 ("sched: Fix detection of empty queues in child qdiscs")
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Victor Nogueira <victor@mojatatu.com>
    Link: https://patch.msgid.link/20250425220710.3964791-5-victor@mojatatu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme-tcp: fix premature queue removal and I/O failover [+ + +]
Author: Michael Liang <mliang@purestorage.com>
Date:   Tue Apr 29 10:42:01 2025 -0600

    nvme-tcp: fix premature queue removal and I/O failover
    
    [ Upstream commit 77e40bbce93059658aee02786a32c5c98a240a8a ]
    
    This patch addresses a data corruption issue observed in nvme-tcp during
    testing.
    
    In an NVMe native multipath setup, when an I/O timeout occurs, all
    inflight I/Os are canceled almost immediately after the kernel socket is
    shut down. These canceled I/Os are reported as host path errors,
    triggering a failover that succeeds on a different path.
    
    However, at this point, the original I/O may still be outstanding in the
    host's network transmission path (e.g., the NIC’s TX queue). From the
    user-space app's perspective, the buffer associated with the I/O is
    considered completed since they're acked on the different path and may
    be reused for new I/O requests.
    
    Because nvme-tcp enables zero-copy by default in the transmission path,
    this can lead to corrupted data being sent to the original target,
    ultimately causing data corruption.
    
    We can reproduce this data corruption by injecting delay on one path and
    triggering i/o timeout.
    
    To prevent this issue, this change ensures that all inflight
    transmissions are fully completed from host's perspective before
    returning from queue stop. To handle concurrent I/O timeout from multiple
    namespaces under the same controller, always wait in queue stop
    regardless of queue's state.
    
    This aligns with the behavior of queue stopping in other NVMe fabric
    transports.
    
    Fixes: 3f2304f8c6d6 ("nvme-tcp: add NVMe over TCP host driver")
    Signed-off-by: Michael Liang <mliang@purestorage.com>
    Reviewed-by: Mohamed Khalfella <mkhalfella@purestorage.com>
    Reviewed-by: Randy Jennings <randyj@purestorage.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
of: module: add buffer overflow check in of_modalias() [+ + +]
Author: Sergey Shtylyov <s.shtylyov@omp.ru>
Date:   Sun Apr 14 11:51:39 2024 +0300

    of: module: add buffer overflow check in of_modalias()
    
    commit cf7385cb26ac4f0ee6c7385960525ad534323252 upstream.
    
    In of_modalias(), if the buffer happens to be too small even for the 1st
    snprintf() call, the len parameter will become negative and str parameter
    (if not NULL initially) will point beyond the buffer's end. Add the buffer
    overflow check after the 1st snprintf() call and fix such check after the
    strlen() call (accounting for the terminating NUL char).
    
    Fixes: bc575064d688 ("of/device: use of_property_for_each_string to parse compatible strings")
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Link: https://lore.kernel.org/r/bbfc6be0-c687-62b6-d015-5141b93f313e@omp.ru
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: "Uwe Kleine-König" <ukleinek@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
parisc: Fix double SIGFPE crash [+ + +]
Author: Helge Deller <deller@gmx.de>
Date:   Sat May 3 18:24:01 2025 +0200

    parisc: Fix double SIGFPE crash
    
    commit de3629baf5a33af1919dec7136d643b0662e85ef upstream.
    
    Camm noticed that on parisc a SIGFPE exception will crash an application with
    a second SIGFPE in the signal handler.  Dave analyzed it, and it happens
    because glibc uses a double-word floating-point store to atomically update
    function descriptors. As a result of lazy binding, we hit a floating-point
    store in fpe_func almost immediately.
    
    When the T bit is set, an assist exception trap occurs when when the
    co-processor encounters *any* floating-point instruction except for a double
    store of register %fr0.  The latter cancels all pending traps.  Let's fix this
    by clearing the Trap (T) bit in the FP status register before returning to the
    signal handler in userspace.
    
    The issue can be reproduced with this test program:
    
    root@parisc:~# cat fpe.c
    
    static void fpe_func(int sig, siginfo_t *i, void *v) {
            sigset_t set;
            sigemptyset(&set);
            sigaddset(&set, SIGFPE);
            sigprocmask(SIG_UNBLOCK, &set, NULL);
            printf("GOT signal %d with si_code %ld\n", sig, i->si_code);
    }
    
    int main() {
            struct sigaction action = {
                    .sa_sigaction = fpe_func,
                    .sa_flags = SA_RESTART|SA_SIGINFO };
            sigaction(SIGFPE, &action, 0);
            feenableexcept(FE_OVERFLOW);
            return printf("%lf\n",1.7976931348623158E308*1.7976931348623158E308);
    }
    
    root@parisc:~# gcc fpe.c -lm
    root@parisc:~# ./a.out
     Floating point exception
    
    root@parisc:~# strace -f ./a.out
     execve("./a.out", ["./a.out"], 0xf9ac7034 /* 20 vars */) = 0
     getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
     ...
     rt_sigaction(SIGFPE, {sa_handler=0x1110a, sa_mask=[], sa_flags=SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
     --- SIGFPE {si_signo=SIGFPE, si_code=FPE_FLTOVF, si_addr=0x1078f} ---
     --- SIGFPE {si_signo=SIGFPE, si_code=FPE_FLTOVF, si_addr=0xf8f21237} ---
     +++ killed by SIGFPE +++
     Floating point exception
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Suggested-by: John David Anglin <dave.anglin@bell.net>
    Reported-by: Camm Maguire <camm@maguirefamily.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PCI: imx6: Skip controller_id generation logic for i.MX7D [+ + +]
Author: Richard Zhu <hongxing.zhu@nxp.com>
Date:   Tue Nov 26 15:56:56 2024 +0800

    PCI: imx6: Skip controller_id generation logic for i.MX7D
    
    commit f068ffdd034c93f0c768acdc87d4d2d7023c1379 upstream.
    
    The i.MX7D only has one PCIe controller, so controller_id should always be
    0. The previous code is incorrect although yielding the correct result.
    
    Fix by removing "IMX7D" from the switch case branch.
    
    Fixes: 2d8ed461dbc9 ("PCI: imx6: Add support for i.MX8MQ")
    Link: https://lore.kernel.org/r/20241126075702.4099164-5-hongxing.zhu@nxp.com
    Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    [Because this switch case does more than just controller_id
     logic, move the "IMX7D" case label instead of removing it entirely.]
    Signed-off-by: Ryan Matthews <ryanmatthews@fastmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "drm/meson: vclk: fix calculation of 59.94 fractional rates" [+ + +]
Author: Christian Hewitt <christianshewitt@gmail.com>
Date:   Mon Apr 21 22:12:59 2025 +0200

    Revert "drm/meson: vclk: fix calculation of 59.94 fractional rates"
    
    [ Upstream commit f37bb5486ea536c1d61df89feeaeff3f84f0b560 ]
    
    This reverts commit bfbc68e.
    
    The patch does permit the offending YUV420 @ 59.94 phy_freq and
    vclk_freq mode to match in calculations. It also results in all
    fractional rates being unavailable for use. This was unintended
    and requires the patch to be reverted.
    
    Fixes: bfbc68e4d869 ("drm/meson: vclk: fix calculation of 59.94 fractional rates")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20250421201300.778955-2-martin.blumenstingl@googlemail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20250421201300.778955-2-martin.blumenstingl@googlemail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: target: Fix WRITE_SAME No Data Buffer crash [+ + +]
Author: Mike Christie <michael.christie@oracle.com>
Date:   Mon Jun 27 21:23:25 2022 -0500

    scsi: target: Fix WRITE_SAME No Data Buffer crash
    
    commit ccd3f449052449a917a3e577d8ba0368f43b8f29 upstream.
    
    In newer version of the SBC specs, we have a NDOB bit that indicates there
    is no data buffer that gets written out. If this bit is set using commands
    like "sg_write_same --ndob" we will crash in target_core_iblock/file's
    execute_write_same handlers when we go to access the se_cmd->t_data_sg
    because its NULL.
    
    This patch adds a check for the NDOB bit in the common WRITE SAME code
    because we don't support it. And, it adds a check for zero SG elements in
    each handler in case the initiator tries to send a normal WRITE SAME with
    no data buffer.
    
    Link: https://lore.kernel.org/r/20220628022325.14627-2-michael.christie@oracle.com
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tracing: Fix oob write in trace_seq_to_buffer() [+ + +]
Author: Jeongjun Park <aha310510@gmail.com>
Date:   Tue Apr 22 20:30:25 2025 +0900

    tracing: Fix oob write in trace_seq_to_buffer()
    
    commit f5178c41bb43444a6008150fe6094497135d07cb upstream.
    
    syzbot reported this bug:
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in trace_seq_to_buffer kernel/trace/trace.c:1830 [inline]
    BUG: KASAN: slab-out-of-bounds in tracing_splice_read_pipe+0x6be/0xdd0 kernel/trace/trace.c:6822
    Write of size 4507 at addr ffff888032b6b000 by task syz.2.320/7260
    
    CPU: 1 UID: 0 PID: 7260 Comm: syz.2.320 Not tainted 6.15.0-rc1-syzkaller-00301-g3bde70a2c827 #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:408 [inline]
     print_report+0xc3/0x670 mm/kasan/report.c:521
     kasan_report+0xe0/0x110 mm/kasan/report.c:634
     check_region_inline mm/kasan/generic.c:183 [inline]
     kasan_check_range+0xef/0x1a0 mm/kasan/generic.c:189
     __asan_memcpy+0x3c/0x60 mm/kasan/shadow.c:106
     trace_seq_to_buffer kernel/trace/trace.c:1830 [inline]
     tracing_splice_read_pipe+0x6be/0xdd0 kernel/trace/trace.c:6822
     ....
    ==================================================================
    
    It has been reported that trace_seq_to_buffer() tries to copy more data
    than PAGE_SIZE to buf. Therefore, to prevent this, we should use the
    smaller of trace_seq_used(&iter->seq) and PAGE_SIZE as an argument.
    
    Link: https://lore.kernel.org/20250422113026.13308-1-aha310510@gmail.com
    Reported-by: syzbot+c8cd2d2c412b868263fb@syzkaller.appspotmail.com
    Fixes: 3c56819b14b0 ("tracing: splice support for tracing_pipe")
    Suggested-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Jeongjun Park <aha310510@gmail.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: brcm80211: fmac: Add error handling for brcmf_usb_dl_writeimage() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Tue Apr 22 12:22:02 2025 +0800

    wifi: brcm80211: fmac: Add error handling for brcmf_usb_dl_writeimage()
    
    commit 8e089e7b585d95122c8122d732d1d5ef8f879396 upstream.
    
    The function brcmf_usb_dl_writeimage() calls the function
    brcmf_usb_dl_cmd() but dose not check its return value. The
    'state.state' and the 'state.bytes' are uninitialized if the
    function brcmf_usb_dl_cmd() fails. It is dangerous to use
    uninitialized variables in the conditions.
    
    Add error handling for brcmf_usb_dl_cmd() to jump to error
    handling path if the brcmf_usb_dl_cmd() fails and the
    'state.state' and the 'state.bytes' are uninitialized.
    
    Improve the error message to report more detailed error
    information.
    
    Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
    Cc: stable@vger.kernel.org # v3.4+
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Link: https://patch.msgid.link/20250422042203.2259-1-vulab@iscas.ac.cn
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>