Changelog in Linux kernel 6.1.140

 
ACPI: PPTT: Fix processor subtable walk [+ + +]
Author: Jeremy Linton <jeremy.linton@arm.com>
Date:   Wed May 7 21:30:25 2025 -0500

    ACPI: PPTT: Fix processor subtable walk
    
    commit adfab6b39202481bb43286fff94def4953793fdb upstream.
    
    The original PPTT code had a bug where the processor subtable length
    was not correctly validated when encountering a truncated
    acpi_pptt_processor node.
    
    Commit 7ab4f0e37a0f4 ("ACPI PPTT: Fix coding mistakes in a couple of
    sizeof() calls") attempted to fix this by validating the size is as
    large as the acpi_pptt_processor node structure. This introduced a
    regression where the last processor node in the PPTT table is ignored
    if it doesn't contain any private resources. That results errors like:
    
      ACPI PPTT: PPTT table found, but unable to locate core XX (XX)
      ACPI: SPE must be homogeneous
    
    Furthermore, it fails in a common case where the node length isn't
    equal to the acpi_pptt_processor structure size, leaving the original
    bug in a modified form.
    
    Correct the regression by adjusting the loop termination conditions as
    suggested by the bug reporters. An additional check performed after
    the subtable node type is detected, validates the acpi_pptt_processor
    node is fully contained in the PPTT table. Repeating the check in
    acpi_pptt_leaf_node() is largely redundant as the node is already
    known to be fully contained in the table.
    
    The case where a final truncated node's parent property is accepted,
    but the node itself is rejected should not be considered a bug.
    
    Fixes: 7ab4f0e37a0f4 ("ACPI PPTT: Fix coding mistakes in a couple of sizeof() calls")
    Reported-by: Maximilian Heyne <mheyne@amazon.de>
    Closes: https://lore.kernel.org/linux-acpi/20250506-draco-taped-15f475cd@mheyne-amazon/
    Reported-by: Yicong Yang <yangyicong@hisilicon.com>
    Closes: https://lore.kernel.org/linux-acpi/20250507035124.28071-1-yangyicong@huawei.com/
    Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
    Tested-by: Yicong Yang <yangyicong@hisilicon.com>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Tested-by: Maximilian Heyne <mheyne@amazon.de>
    Cc: All applicable <stable@vger.kernel.org> # 7ab4f0e37a0f4: ACPI PPTT: Fix coding mistakes ...
    Link: https://patch.msgid.link/20250508023025.1301030-1-jeremy.linton@arm.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ALSA: es1968: Add error handling for snd_pcm_hw_constraint_pow2() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Wed May 14 17:24:44 2025 +0800

    ALSA: es1968: Add error handling for snd_pcm_hw_constraint_pow2()
    
    commit 9e000f1b7f31684cc5927e034360b87ac7919593 upstream.
    
    The function snd_es1968_capture_open() calls the function
    snd_pcm_hw_constraint_pow2(), but does not check its return
    value. A proper implementation can be found in snd_cx25821_pcm_open().
    
    Add error handling for snd_pcm_hw_constraint_pow2() and propagate its
    error code.
    
    Fixes: b942cf815b57 ("[ALSA] es1968 - Fix stuttering capture")
    Cc: stable@vger.kernel.org # v2.6.22
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Link: https://patch.msgid.link/20250514092444.331-1-vulab@iscas.ac.cn
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: sh: SND_AICA should depend on SH_DMA_API [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue May 13 09:31:04 2025 +0200

    ALSA: sh: SND_AICA should depend on SH_DMA_API
    
    [ Upstream commit 66e48ef6ef506c89ec1b3851c6f9f5f80b5835ff ]
    
    If CONFIG_SH_DMA_API=n:
    
        WARNING: unmet direct dependencies detected for G2_DMA
          Depends on [n]: SH_DREAMCAST [=y] && SH_DMA_API [=n]
          Selected by [y]:
          - SND_AICA [=y] && SOUND [=y] && SND [=y] && SND_SUPERH [=y] && SH_DREAMCAST [=y]
    
    SND_AICA selects G2_DMA.  As the latter depends on SH_DMA_API, the
    former should depend on SH_DMA_API, too.
    
    Fixes: f477a538c14d07f8 ("sh: dma: fix kconfig dependency for G2_DMA")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202505131320.PzgTtl9H-lkp@intel.com/
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://patch.msgid.link/b90625f8a9078d0d304bafe862cbe3a3fab40082.1747121335.git.geert+renesas@glider.be
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: usb-audio: Add sample rate quirk for Audioengine D1 [+ + +]
Author: Christian Heusel <christian@heusel.eu>
Date:   Mon May 12 22:23:37 2025 +0200

    ALSA: usb-audio: Add sample rate quirk for Audioengine D1
    
    commit 2b24eb060c2bb9ef79e1d3bcf633ba1bc95215d6 upstream.
    
    A user reported on the Arch Linux Forums that their device is emitting
    the following message in the kernel journal, which is fixed by adding
    the quirk as submitted in this patch:
    
        > kernel: usb 1-2: current rate 8436480 is different from the runtime rate 48000
    
    There also is an entry for this product line added long time ago.
    Their specific device has the following ID:
    
        $ lsusb | grep Audio
        Bus 001 Device 002: ID 1101:0003 EasyPass Industrial Co., Ltd Audioengine D1
    
    Link: https://bbs.archlinux.org/viewtopic.php?id=305494
    Fixes: 93f9d1a4ac593 ("ALSA: usb-audio: Apply sample rate quirk for Audioengine D1")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christian Heusel <christian@heusel.eu>
    Link: https://patch.msgid.link/20250512-audioengine-quirk-addition-v1-1-4c370af6eff7@heusel.eu
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: Add sample rate quirk for Microdia JP001 USB Camera [+ + +]
Author: Nicolas Chauvet <kwizart@gmail.com>
Date:   Thu May 15 12:21:32 2025 +0200

    ALSA: usb-audio: Add sample rate quirk for Microdia JP001 USB Camera
    
    commit 7b9938a14460e8ec7649ca2e80ac0aae9815bf02 upstream.
    
    Microdia JP001 does not support reading the sample rate which leads to
    many lines of "cannot get freq at ep 0x84".
    This patch adds the USB ID to quirks.c and avoids those error messages.
    
    usb 7-4: New USB device found, idVendor=0c45, idProduct=636b, bcdDevice= 1.00
    usb 7-4: New USB device strings: Mfr=2, Product=1, SerialNumber=3
    usb 7-4: Product: JP001
    usb 7-4: Manufacturer: JP001
    usb 7-4: SerialNumber: JP001
    usb 7-4: 3:1: cannot get freq at ep 0x84
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Nicolas Chauvet <kwizart@gmail.com>
    Link: https://patch.msgid.link/20250515102132.73062-1-kwizart@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64/sme: Always exit sme_alloc() early with existing storage [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Mon Jan 15 20:15:46 2024 +0000

    arm64/sme: Always exit sme_alloc() early with existing storage
    
    commit dc7eb8755797ed41a0d1b5c0c39df3c8f401b3d9 upstream.
    
    When sme_alloc() is called with existing storage and we are not flushing we
    will always allocate new storage, both leaking the existing storage and
    corrupting the state. Fix this by separating the checks for flushing and
    for existing storage as we do for SVE.
    
    Callers that reallocate (eg, due to changing the vector length) should
    call sme_free() themselves.
    
    Fixes: 5d0a8d2fba50 ("arm64/ptrace: Ensure that SME is set up for target when writing SSVE state")
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20240115-arm64-sme-flush-v1-1-7472bd3459b7@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Zhaoyang Li <lizy04@hust.edu.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
binfmt: Fix whitespace issues [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Tue Oct 18 00:14:20 2022 -0700

    binfmt: Fix whitespace issues
    
    [ Upstream commit 8f6e3f9e5a0f58e458a348b7e36af11d0e9702af ]
    
    Fix the annoying whitespace issues that have been following these files
    around for years.
    
    Cc: linux-fsdevel@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org>
    Link: https://lore.kernel.org/r/20221018071350.never.230-kees@kernel.org
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
binfmt_elf: Calculate total_size earlier [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Wed May 8 10:31:47 2024 -0700

    binfmt_elf: Calculate total_size earlier
    
    [ Upstream commit 2d4cf7b190bbfadd4986bf5c34da17c1a88adf8e ]
    
    In preparation to support PT_LOAD with large p_align values on
    non-PT_INTERP ET_DYN executables (i.e. "static pie"), we'll need to use
    the total_size details earlier. Move this separately now to make the
    next patch more readable. As total_size and load_bias are currently
    calculated separately, this has no behavioral impact.
    
    Link: https://lore.kernel.org/r/20240508173149.677910-2-keescook@chromium.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

binfmt_elf: elf_bss no longer used by load_elf_binary() [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Thu Sep 28 20:24:30 2023 -0700

    binfmt_elf: elf_bss no longer used by load_elf_binary()
    
    [ Upstream commit 8ed2ef21ff564cf4a25c098ace510ee6513c9836 ]
    
    With the BSS handled generically via the new filesz/memsz mismatch
    handling logic in elf_load(), elf_bss no longer needs to be tracked.
    Drop the variable.
    
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: linux-mm@kvack.org
    Suggested-by: Eric Biederman <ebiederm@xmission.com>
    Tested-by: Pedro Falcato <pedro.falcato@gmail.com>
    Signed-off-by: Sebastian Ott <sebott@redhat.com>
    Link: https://lore.kernel.org/r/20230929032435.2391507-2-keescook@chromium.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

binfmt_elf: Honor PT_LOAD alignment for static PIE [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Wed May 8 10:31:48 2024 -0700

    binfmt_elf: Honor PT_LOAD alignment for static PIE
    
    [ Upstream commit 3545deff0ec7a37de7ed9632e262598582b140e9 ]
    
    The p_align values in PT_LOAD were ignored for static PIE executables
    (i.e. ET_DYN without PT_INTERP). This is because there is no way to
    request a non-fixed mmap region with a specific alignment. ET_DYN with
    PT_INTERP uses a separate base address (ELF_ET_DYN_BASE) and binfmt_elf
    performs the ASLR itself, which means it can also apply alignment. For
    the mmap region, the address selection happens deep within the vm_mmap()
    implementation (when the requested address is 0).
    
    The earlier attempt to implement this:
    
      commit 9630f0d60fec ("fs/binfmt_elf: use PT_LOAD p_align values for static PIE")
      commit 925346c129da ("fs/binfmt_elf: fix PT_LOAD p_align values for loaders")
    
    did not take into account the different base address origins, and were
    eventually reverted:
    
      aeb7923733d1 ("revert "fs/binfmt_elf: use PT_LOAD p_align values for static PIE"")
    
    In order to get the correct alignment from an mmap base, binfmt_elf must
    perform a 0-address load first, then tear down the mapping and perform
    alignment on the resulting address. Since this is slightly more overhead,
    only do this when it is needed (i.e. the alignment is not the default
    ELF alignment). This does, however, have the benefit of being able to
    use MAP_FIXED_NOREPLACE, to avoid potential collisions.
    
    With this fixed, enable the static PIE self tests again.
    
    Reported-by: H.J. Lu <hjl.tools@gmail.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=215275
    Link: https://lore.kernel.org/r/20240508173149.677910-3-keescook@chromium.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

binfmt_elf: Leave a gap between .bss and brk [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Feb 16 22:25:44 2024 -0800

    binfmt_elf: Leave a gap between .bss and brk
    
    [ Upstream commit 2a5eb9995528441447d33838727f6ec1caf08139 ]
    
    Currently the brk starts its randomization immediately after .bss,
    which means there is a chance that when the random offset is 0, linear
    overflows from .bss can reach into the brk area. Leave at least a single
    page gap between .bss and brk (when it has not already been explicitly
    relocated into the mmap range).
    
    Reported-by: <y0un9n132@gmail.com>
    Closes: https://lore.kernel.org/linux-hardening/CA+2EKTVLvc8hDZc+2Yhwmus=dzOUG5E4gV7ayCbu0MPJTZzWkw@mail.gmail.com/
    Link: https://lore.kernel.org/r/20240217062545.1631668-2-keescook@chromium.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

binfmt_elf: Move brk for static PIE even if ASLR disabled [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Apr 25 15:45:06 2025 -0700

    binfmt_elf: Move brk for static PIE even if ASLR disabled
    
    [ Upstream commit 11854fe263eb1b9a8efa33b0c087add7719ea9b4 ]
    
    In commit bbdc6076d2e5 ("binfmt_elf: move brk out of mmap when doing
    direct loader exec"), the brk was moved out of the mmap region when
    loading static PIE binaries (ET_DYN without INTERP). The common case
    for these binaries was testing new ELF loaders, so the brk needed to
    be away from mmap to avoid colliding with stack, future mmaps (of the
    loader-loaded binary), etc. But this was only done when ASLR was enabled,
    in an attempt to minimize changes to memory layouts.
    
    After adding support to respect alignment requirements for static PIE
    binaries in commit 3545deff0ec7 ("binfmt_elf: Honor PT_LOAD alignment
    for static PIE"), it became possible to have a large gap after the
    final PT_LOAD segment and the top of the mmap region. This means that
    future mmap allocations might go after the last PT_LOAD segment (where
    brk might be if ASLR was disabled) instead of before them (where they
    traditionally ended up).
    
    On arm64, running with ASLR disabled, Ubuntu 22.04's "ldconfig" binary,
    a static PIE, has alignment requirements that leaves a gap large enough
    after the last PT_LOAD segment to fit the vdso and vvar, but still leave
    enough space for the brk (which immediately follows the last PT_LOAD
    segment) to be allocated by the binary.
    
    fffff7f20000-fffff7fde000 r-xp 00000000 fe:02 8110426 /sbin/ldconfig.real
    fffff7fee000-fffff7ff5000 rw-p 000be000 fe:02 8110426 /sbin/ldconfig.real
    fffff7ff5000-fffff7ffa000 rw-p 00000000 00:00 0
    ***[brk will go here at fffff7ffa000]***
    fffff7ffc000-fffff7ffe000 r--p 00000000 00:00 0       [vvar]
    fffff7ffe000-fffff8000000 r-xp 00000000 00:00 0       [vdso]
    fffffffdf000-1000000000000 rw-p 00000000 00:00 0      [stack]
    
    After commit 0b3bc3354eb9 ("arm64: vdso: Switch to generic storage
    implementation"), the arm64 vvar grew slightly, and suddenly the brk
    collided with the allocation.
    
    fffff7f20000-fffff7fde000 r-xp 00000000 fe:02 8110426 /sbin/ldconfig.real
    fffff7fee000-fffff7ff5000 rw-p 000be000 fe:02 8110426 /sbin/ldconfig.real
    fffff7ff5000-fffff7ffa000 rw-p 00000000 00:00 0
    ***[oops, no room any more, vvar is at fffff7ffa000!]***
    fffff7ffa000-fffff7ffe000 r--p 00000000 00:00 0       [vvar]
    fffff7ffe000-fffff8000000 r-xp 00000000 00:00 0       [vdso]
    fffffffdf000-1000000000000 rw-p 00000000 00:00 0      [stack]
    
    The solution is to unconditionally move the brk out of the mmap region
    for static PIE binaries. Whether ASLR is enabled or not does not change if
    there may be future mmap allocation collisions with a growing brk region.
    
    Update memory layout comments (with kernel-doc headings), consolidate
    the setting of mm->brk to later (it isn't needed early), move static PIE
    brk out of mmap unconditionally, and make sure brk(2) knows to base brk
    position off of mm->start_brk not mm->end_data no matter what the cause of
    moving it is (via current->brk_randomized).
    
    For the CONFIG_COMPAT_BRK case, though, leave the logic unchanged, as we
    can never safely move the brk. These systems, however, are not using
    specially aligned static PIE binaries.
    
    Reported-by: Ryan Roberts <ryan.roberts@arm.com>
    Closes: https://lore.kernel.org/lkml/f93db308-4a0e-4806-9faf-98f890f5a5e6@arm.com/
    Fixes: bbdc6076d2e5 ("binfmt_elf: move brk out of mmap when doing direct loader exec")
    Link: https://lore.kernel.org/r/20250425224502.work.520-kees@kernel.org
    Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
    Tested-by: Ryan Roberts <ryan.roberts@arm.com>
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

binfmt_elf: Support segments with 0 filesz and misaligned starts [+ + +]
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Thu Sep 28 20:24:29 2023 -0700

    binfmt_elf: Support segments with 0 filesz and misaligned starts
    
    [ Upstream commit 585a018627b4d7ed37387211f667916840b5c5ea ]
    
    Implement a helper elf_load() that wraps elf_map() and performs all
    of the necessary work to ensure that when "memsz > filesz" the bytes
    described by "memsz > filesz" are zeroed.
    
    An outstanding issue is if the first segment has filesz 0, and has a
    randomized location. But that is the same as today.
    
    In this change I replaced an open coded padzero() that did not clear
    all of the way to the end of the page, with padzero() that does.
    
    I also stopped checking the return of padzero() as there is at least
    one known case where testing for failure is the wrong thing to do.
    It looks like binfmt_elf_fdpic may have the proper set of tests
    for when error handling can be safely completed.
    
    I found a couple of commits in the old history
    https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git,
    that look very interesting in understanding this code.
    
    commit 39b56d902bf3 ("[PATCH] binfmt_elf: clearing bss may fail")
    commit c6e2227e4a3e ("[SPARC64]: Missing user access return value checks in fs/binfmt_elf.c and fs/compat.c")
    commit 5bf3be033f50 ("v2.4.10.1 -> v2.4.10.2")
    
    Looking at commit 39b56d902bf3 ("[PATCH] binfmt_elf: clearing bss may fail"):
    >  commit 39b56d902bf35241e7cba6cc30b828ed937175ad
    >  Author: Pavel Machek <pavel@ucw.cz>
    >  Date:   Wed Feb 9 22:40:30 2005 -0800
    >
    >     [PATCH] binfmt_elf: clearing bss may fail
    >
    >     So we discover that Borland's Kylix application builder emits weird elf
    >     files which describe a non-writeable bss segment.
    >
    >     So remove the clear_user() check at the place where we zero out the bss.  I
    >     don't _think_ there are any security implications here (plus we've never
    >     checked that clear_user() return value, so whoops if it is a problem).
    >
    >     Signed-off-by: Pavel Machek <pavel@suse.cz>
    >     Signed-off-by: Andrew Morton <akpm@osdl.org>
    >     Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    
    It seems pretty clear that binfmt_elf_fdpic with skipping clear_user() for
    non-writable segments and otherwise calling clear_user(), aka padzero(),
    and checking it's return code is the right thing to do.
    
    I just skipped the error checking as that avoids breaking things.
    
    And notably, it looks like Borland's Kylix died in 2005 so it might be
    safe to just consider read-only segments with memsz > filesz an error.
    
    Reported-by: Sebastian Ott <sebott@redhat.com>
    Reported-by: Thomas Weißschuh <linux@weissschuh.net>
    Closes: https://lkml.kernel.org/r/20230914-bss-alloc-v1-1-78de67d2c6dd@weissschuh.net
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Link: https://lore.kernel.org/r/87sf71f123.fsf@email.froward.int.ebiederm.org
    Tested-by: Pedro Falcato <pedro.falcato@gmail.com>
    Signed-off-by: Sebastian Ott <sebott@redhat.com>
    Link: https://lore.kernel.org/r/20230929032435.2391507-1-keescook@chromium.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bnxt_en: Fix receive ring space parameters when XDP is active [+ + +]
Author: Shravya KN <shravya.k-n@broadcom.com>
Date:   Fri Nov 22 14:45:44 2024 -0800

    bnxt_en: Fix receive ring space parameters when XDP is active
    
    commit 3051a77a09dfe3022aa012071346937fdf059033 upstream.
    
    The MTU setting at the time an XDP multi-buffer is attached
    determines whether the aggregation ring will be used and the
    rx_skb_func handler.  This is done in bnxt_set_rx_skb_mode().
    
    If the MTU is later changed, the aggregation ring setting may need
    to be changed and it may become out-of-sync with the settings
    initially done in bnxt_set_rx_skb_mode().  This may result in
    random memory corruption and crashes as the HW may DMA data larger
    than the allocated buffer size, such as:
    
    BUG: kernel NULL pointer dereference, address: 00000000000003c0
    PGD 0 P4D 0
    Oops: 0000 [#1] PREEMPT SMP NOPTI
    CPU: 17 PID: 0 Comm: swapper/17 Kdump: loaded Tainted: G S         OE      6.1.0-226bf9805506 #1
    Hardware name: Wiwynn Delta Lake PVT BZA.02601.0150/Delta Lake-Class1, BIOS F0E_3A12 08/26/2021
    RIP: 0010:bnxt_rx_pkt+0xe97/0x1ae0 [bnxt_en]
    Code: 8b 95 70 ff ff ff 4c 8b 9d 48 ff ff ff 66 41 89 87 b4 00 00 00 e9 0b f7 ff ff 0f b7 43 0a 49 8b 95 a8 04 00 00 25 ff 0f 00 00 <0f> b7 14 42 48 c1 e2 06 49 03 95 a0 04 00 00 0f b6 42 33f
    RSP: 0018:ffffa19f40cc0d18 EFLAGS: 00010202
    RAX: 00000000000001e0 RBX: ffff8e2c805c6100 RCX: 00000000000007ff
    RDX: 0000000000000000 RSI: ffff8e2c271ab990 RDI: ffff8e2c84f12380
    RBP: ffffa19f40cc0e48 R08: 000000000001000d R09: 974ea2fcddfa4cbf
    R10: 0000000000000000 R11: ffffa19f40cc0ff8 R12: ffff8e2c94b58980
    R13: ffff8e2c952d6600 R14: 0000000000000016 R15: ffff8e2c271ab990
    FS:  0000000000000000(0000) GS:ffff8e3b3f840000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000000003c0 CR3: 0000000e8580a004 CR4: 00000000007706e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     <IRQ>
     __bnxt_poll_work+0x1c2/0x3e0 [bnxt_en]
    
    To address the issue, we now call bnxt_set_rx_skb_mode() within
    bnxt_change_mtu() to properly set the AGG rings configuration and
    update rx_skb_func based on the new MTU value.
    Additionally, BNXT_FLAG_NO_AGG_RINGS is cleared at the beginning of
    bnxt_set_rx_skb_mode() to make sure it gets set or cleared based on
    the current MTU.
    
    Fixes: 08450ea98ae9 ("bnxt_en: Fix max_mtu setting for multi-buf XDP")
    Co-developed-by: Somnath Kotur <somnath.kotur@broadcom.com>
    Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
    Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Zhaoyang Li <lizy04@hust.edu.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
bpf, arm64: Fix address emission with tag-based KASAN enabled [+ + +]
Author: Peter Collingbourne <pcc@google.com>
Date:   Fri Oct 18 15:16:43 2024 -0700

    bpf, arm64: Fix address emission with tag-based KASAN enabled
    
    commit a552e2ef5fd1a6c78267cd4ec5a9b49aa11bbb1c upstream.
    
    When BPF_TRAMP_F_CALL_ORIG is enabled, the address of a bpf_tramp_image
    struct on the stack is passed during the size calculation pass and
    an address on the heap is passed during code generation. This may
    cause a heap buffer overflow if the heap address is tagged because
    emit_a64_mov_i64() will emit longer code than it did during the size
    calculation pass. The same problem could occur without tag-based
    KASAN if one of the 16-bit words of the stack address happened to
    be all-ones during the size calculation pass. Fix the problem by
    assuming the worst case (4 instructions) when calculating the size
    of the bpf_tramp_image address emission.
    
    Fixes: 19d3c179a377 ("bpf, arm64: Fix trampoline for BPF_TRAMP_F_CALL_ORIG")
    Signed-off-by: Peter Collingbourne <pcc@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Xu Kuohai <xukuohai@huawei.com>
    Link: https://linux-review.googlesource.com/id/I1496f2bc24fba7a1d492e16e2b94cf43714f2d3c
    Link: https://lore.kernel.org/bpf/20241018221644.3240898-1-pcc@google.com
    [Minor context change fixed.]
    Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
    Signed-off-by: He Zhe <zhe.he@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

bpf, arm64: Fix trampoline for BPF_TRAMP_F_CALL_ORIG [+ + +]
Author: Puranjay Mohan <puranjay@kernel.org>
Date:   Thu Jul 11 15:18:38 2024 +0000

    bpf, arm64: Fix trampoline for BPF_TRAMP_F_CALL_ORIG
    
    commit 19d3c179a37730caf600a97fed3794feac2b197b upstream.
    
    When BPF_TRAMP_F_CALL_ORIG is set, the trampoline calls
    __bpf_tramp_enter() and __bpf_tramp_exit() functions, passing them
    the struct bpf_tramp_image *im pointer as an argument in R0.
    
    The trampoline generation code uses emit_addr_mov_i64() to emit
    instructions for moving the bpf_tramp_image address into R0, but
    emit_addr_mov_i64() assumes the address to be in the vmalloc() space
    and uses only 48 bits. Because bpf_tramp_image is allocated using
    kzalloc(), its address can use more than 48-bits, in this case the
    trampoline will pass an invalid address to __bpf_tramp_enter/exit()
    causing a kernel crash.
    
    Fix this by using emit_a64_mov_i64() in place of emit_addr_mov_i64()
    as it can work with addresses that are greater than 48-bits.
    
    Fixes: efc9909fdce0 ("bpf, arm64: Add bpf trampoline for arm64")
    Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Closes: https://lore.kernel.org/all/SJ0PR15MB461564D3F7E7A763498CA6A8CBDB2@SJ0PR15MB4615.namprd15.prod.outlook.com/
    Link: https://lore.kernel.org/bpf/20240711151838.43469-1-puranjay@kernel.org
    [Minor context change fixed.]
    Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
    Signed-off-by: He Zhe <zhe.he@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
btrfs: don't BUG_ON() when 0 reference count at btrfs_lookup_extent_info() [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Jun 18 12:15:01 2024 +0100

    btrfs: don't BUG_ON() when 0 reference count at btrfs_lookup_extent_info()
    
    commit 28cb13f29faf6290597b24b728dc3100c019356f upstream.
    
    Instead of doing a BUG_ON() handle the error by returning -EUCLEAN,
    aborting the transaction and logging an error message.
    
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [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>

btrfs: fix discard worker infinite loop after disabling discard [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon May 5 16:03:16 2025 +0100

    btrfs: fix discard worker infinite loop after disabling discard
    
    commit 54db6d1bdd71fa90172a2a6aca3308bbf7fa7eb5 upstream.
    
    If the discard worker is running and there's currently only one block
    group, that block group is a data block group, it's in the unused block
    groups discard list and is being used (it got an extent allocated from it
    after becoming unused), the worker can end up in an infinite loop if a
    transaction abort happens or the async discard is disabled (during remount
    or unmount for example).
    
    This happens like this:
    
    1) Task A, the discard worker, is at peek_discard_list() and
       find_next_block_group() returns block group X;
    
    2) Block group X is in the unused block groups discard list (its discard
       index is BTRFS_DISCARD_INDEX_UNUSED) since at some point in the past
       it become an unused block group and was added to that list, but then
       later it got an extent allocated from it, so its ->used counter is not
       zero anymore;
    
    3) The current transaction is aborted by task B and we end up at
       __btrfs_handle_fs_error() in the transaction abort path, where we call
       btrfs_discard_stop(), which clears BTRFS_FS_DISCARD_RUNNING from
       fs_info, and then at __btrfs_handle_fs_error() we set the fs to RO mode
       (setting SB_RDONLY in the super block's s_flags field);
    
    4) Task A calls __add_to_discard_list() with the goal of moving the block
       group from the unused block groups discard list into another discard
       list, but at __add_to_discard_list() we end up doing nothing because
       btrfs_run_discard_work() returns false, since the super block has
       SB_RDONLY set in its flags and BTRFS_FS_DISCARD_RUNNING is not set
       anymore in fs_info->flags. So block group X remains in the unused block
       groups discard list;
    
    5) Task A then does a goto into the 'again' label, calls
       find_next_block_group() again we gets block group X again. Then it
       repeats the previous steps over and over since there are not other
       block groups in the discard lists and block group X is never moved
       out of the unused block groups discard list since
       btrfs_run_discard_work() keeps returning false and therefore
       __add_to_discard_list() doesn't move block group X out of that discard
       list.
    
    When this happens we can get a soft lockup report like this:
    
      [71.957] watchdog: BUG: soft lockup - CPU#0 stuck for 27s! [kworker/u4:3:97]
      [71.957] Modules linked in: xfs af_packet rfkill (...)
      [71.957] CPU: 0 UID: 0 PID: 97 Comm: kworker/u4:3 Tainted: G        W          6.14.2-1-default #1 openSUSE Tumbleweed 968795ef2b1407352128b466fe887416c33af6fa
      [71.957] Tainted: [W]=WARN
      [71.957] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
      [71.957] Workqueue: btrfs_discard btrfs_discard_workfn [btrfs]
      [71.957] RIP: 0010:btrfs_discard_workfn+0xc4/0x400 [btrfs]
      [71.957] Code: c1 01 48 83 (...)
      [71.957] RSP: 0018:ffffafaec03efe08 EFLAGS: 00000246
      [71.957] RAX: ffff897045500000 RBX: ffff8970413ed8d0 RCX: 0000000000000000
      [71.957] RDX: 0000000000000001 RSI: ffff8970413ed8d0 RDI: 0000000a8f1272ad
      [71.957] RBP: 0000000a9d61c60e R08: ffff897045500140 R09: 8080808080808080
      [71.957] R10: ffff897040276800 R11: fefefefefefefeff R12: ffff8970413ed860
      [71.957] R13: ffff897045500000 R14: ffff8970413ed868 R15: 0000000000000000
      [71.957] FS:  0000000000000000(0000) GS:ffff89707bc00000(0000) knlGS:0000000000000000
      [71.957] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [71.957] CR2: 00005605bcc8d2f0 CR3: 000000010376a001 CR4: 0000000000770ef0
      [71.957] PKRU: 55555554
      [71.957] Call Trace:
      [71.957]  <TASK>
      [71.957]  process_one_work+0x17e/0x330
      [71.957]  worker_thread+0x2ce/0x3f0
      [71.957]  ? __pfx_worker_thread+0x10/0x10
      [71.957]  kthread+0xef/0x220
      [71.957]  ? __pfx_kthread+0x10/0x10
      [71.957]  ret_from_fork+0x34/0x50
      [71.957]  ? __pfx_kthread+0x10/0x10
      [71.957]  ret_from_fork_asm+0x1a/0x30
      [71.957]  </TASK>
      [71.957] Kernel panic - not syncing: softlockup: hung tasks
      [71.987] CPU: 0 UID: 0 PID: 97 Comm: kworker/u4:3 Tainted: G        W    L     6.14.2-1-default #1 openSUSE Tumbleweed 968795ef2b1407352128b466fe887416c33af6fa
      [71.989] Tainted: [W]=WARN, [L]=SOFTLOCKUP
      [71.989] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
      [71.991] Workqueue: btrfs_discard btrfs_discard_workfn [btrfs]
      [71.992] Call Trace:
      [71.993]  <IRQ>
      [71.994]  dump_stack_lvl+0x5a/0x80
      [71.994]  panic+0x10b/0x2da
      [71.995]  watchdog_timer_fn.cold+0x9a/0xa1
      [71.996]  ? __pfx_watchdog_timer_fn+0x10/0x10
      [71.997]  __hrtimer_run_queues+0x132/0x2a0
      [71.997]  hrtimer_interrupt+0xff/0x230
      [71.998]  __sysvec_apic_timer_interrupt+0x55/0x100
      [71.999]  sysvec_apic_timer_interrupt+0x6c/0x90
      [72.000]  </IRQ>
      [72.000]  <TASK>
      [72.001]  asm_sysvec_apic_timer_interrupt+0x1a/0x20
      [72.002] RIP: 0010:btrfs_discard_workfn+0xc4/0x400 [btrfs]
      [72.002] Code: c1 01 48 83 (...)
      [72.005] RSP: 0018:ffffafaec03efe08 EFLAGS: 00000246
      [72.006] RAX: ffff897045500000 RBX: ffff8970413ed8d0 RCX: 0000000000000000
      [72.006] RDX: 0000000000000001 RSI: ffff8970413ed8d0 RDI: 0000000a8f1272ad
      [72.007] RBP: 0000000a9d61c60e R08: ffff897045500140 R09: 8080808080808080
      [72.008] R10: ffff897040276800 R11: fefefefefefefeff R12: ffff8970413ed860
      [72.009] R13: ffff897045500000 R14: ffff8970413ed868 R15: 0000000000000000
      [72.010]  ? btrfs_discard_workfn+0x51/0x400 [btrfs 23b01089228eb964071fb7ca156eee8cd3bf996f]
      [72.011]  process_one_work+0x17e/0x330
      [72.012]  worker_thread+0x2ce/0x3f0
      [72.013]  ? __pfx_worker_thread+0x10/0x10
      [72.014]  kthread+0xef/0x220
      [72.014]  ? __pfx_kthread+0x10/0x10
      [72.015]  ret_from_fork+0x34/0x50
      [72.015]  ? __pfx_kthread+0x10/0x10
      [72.016]  ret_from_fork_asm+0x1a/0x30
      [72.017]  </TASK>
      [72.017] Kernel Offset: 0x15000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
      [72.019] Rebooting in 90 seconds..
    
    So fix this by making sure we move a block group out of the unused block
    groups discard list when calling __add_to_discard_list().
    
    Fixes: 2bee7eb8bb81 ("btrfs: discard one region at a time in async discard")
    Link: https://bugzilla.suse.com/show_bug.cgi?id=1242012
    CC: stable@vger.kernel.org # 5.10+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Reviewed-by: Daniel Vacek <neelx@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable() [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Apr 4 15:31:16 2025 +0200

    clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable()
    
    [ Upstream commit 94cff94634e506a4a44684bee1875d2dbf782722 ]
    
    On x86 during boot, clockevent_i8253_disable() can be invoked via
    x86_late_time_init -> hpet_time_init() -> pit_timer_init() which happens
    with enabled interrupts.
    
    If some of the old i8253 hardware is actually used then lockdep will notice
    that i8253_lock is used in hard interrupt context. This causes lockdep to
    complain because it observed the lock being acquired with interrupts
    enabled and in hard interrupt context.
    
    Make clockevent_i8253_disable() acquire the lock with
    raw_spinlock_irqsave() to cure this.
    
    [ tglx: Massage change log and use guard() ]
    
    Fixes: c8c4076723dac ("x86/timer: Skip PIT initialization on modern chipsets")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20250404133116.p-XRWJXf@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dma-buf: insert memory barrier before updating num_fences [+ + +]
Author: Hyejeong Choi <hjeong.choi@samsung.com>
Date:   Mon May 12 21:06:38 2025 -0500

    dma-buf: insert memory barrier before updating num_fences
    
    commit 72c7d62583ebce7baeb61acce6057c361f73be4a upstream.
    
    smp_store_mb() inserts memory barrier after storing operation.
    It is different with what the comment is originally aiming so Null
    pointer dereference can be happened if memory update is reordered.
    
    Signed-off-by: Hyejeong Choi <hjeong.choi@samsung.com>
    Fixes: a590d0fdbaa5 ("dma-buf: Update reservation shared_count after adding the new fence")
    CC: stable@vger.kernel.org
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Link: https://lore.kernel.org/r/20250513020638.GA2329653@au1-maretx-p37.eng.sarc.samsung.com
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dmaengine: idxd: Add missing cleanup for early error out in idxd_setup_internals [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:12 2025 +0800

    dmaengine: idxd: Add missing cleanup for early error out in idxd_setup_internals
    
    commit 61259fb96e023f7299c442c48b13e72c441fc0f2 upstream.
    
    The idxd_setup_internals() is missing some cleanup when things fail in
    the middle.
    
    Add the appropriate cleanup routines:
    
    - cleanup groups
    - cleanup enginces
    - cleanup wqs
    
    to make sure it exits gracefully.
    
    Fixes: defe49f96012 ("dmaengine: idxd: fix group conf_dev lifetime")
    Cc: stable@vger.kernel.org
    Suggested-by: Fenghua Yu <fenghuay@nvidia.com>
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-5-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: idxd: Add missing cleanups in cleanup internals [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:13 2025 +0800

    dmaengine: idxd: Add missing cleanups in cleanup internals
    
    commit 61d651572b6c4fe50c7b39a390760f3a910c7ccf upstream.
    
    The idxd_cleanup_internals() function only decreases the reference count
    of groups, engines, and wqs but is missing the step to release memory
    resources.
    
    To fix this, use the cleanup helper to properly release the memory
    resources.
    
    Fixes: ddf742d4f3f1 ("dmaengine: idxd: Add missing cleanup for early error out in probe call")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-6-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: idxd: Add missing idxd cleanup to fix memory leak in remove call [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:16 2025 +0800

    dmaengine: idxd: Add missing idxd cleanup to fix memory leak in remove call
    
    commit d5449ff1b04dfe9ed8e455769aa01e4c2ccf6805 upstream.
    
    The remove call stack is missing idxd cleanup to free bitmap, ida and
    the idxd_device. Call idxd_free() helper routines to make sure we exit
    gracefully.
    
    Fixes: bfe1d56091c1 ("dmaengine: idxd: Init and probe for Intel data accelerators")
    Cc: stable@vger.kernel.org
    Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-9-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: idxd: fix memory leak in error handling path of idxd_alloc [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:14 2025 +0800

    dmaengine: idxd: fix memory leak in error handling path of idxd_alloc
    
    commit 46a5cca76c76c86063000a12936f8e7875295838 upstream.
    
    Memory allocated for idxd is not freed if an error occurs during
    idxd_alloc(). To fix it, free the allocated memory in the reverse order
    of allocation before exiting the function in case of an error.
    
    Fixes: a8563a33a5e2 ("dmanegine: idxd: reformat opcap output to match bitmap_parse() input")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-7-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: idxd: fix memory leak in error handling path of idxd_pci_probe [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:15 2025 +0800

    dmaengine: idxd: fix memory leak in error handling path of idxd_pci_probe
    
    commit 90022b3a6981ec234902be5dbf0f983a12c759fc upstream.
    
    Memory allocated for idxd is not freed if an error occurs during
    idxd_pci_probe(). To fix it, free the allocated memory in the reverse
    order of allocation before exiting the function in case of an error.
    
    Fixes: bfe1d56091c1 ("dmaengine: idxd: Init and probe for Intel data accelerators")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-8-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: idxd: fix memory leak in error handling path of idxd_setup_engines [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:10 2025 +0800

    dmaengine: idxd: fix memory leak in error handling path of idxd_setup_engines
    
    commit 817bced19d1dbdd0b473580d026dc0983e30e17b upstream.
    
    Memory allocated for engines is not freed if an error occurs during
    idxd_setup_engines(). To fix it, free the allocated memory in the
    reverse order of allocation before exiting the function in case of an
    error.
    
    Fixes: 75b911309060 ("dmaengine: idxd: fix engine conf_dev lifetime")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-3-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: idxd: fix memory leak in error handling path of idxd_setup_groups [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:11 2025 +0800

    dmaengine: idxd: fix memory leak in error handling path of idxd_setup_groups
    
    commit aa6f4f945b10eac57aed46154ae7d6fada7fccc7 upstream.
    
    Memory allocated for groups is not freed if an error occurs during
    idxd_setup_groups(). To fix it, free the allocated memory in the reverse
    order of allocation before exiting the function in case of an error.
    
    Fixes: defe49f96012 ("dmaengine: idxd: fix group conf_dev lifetime")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-4-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: idxd: fix memory leak in error handling path of idxd_setup_wqs [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Fri Apr 4 20:02:09 2025 +0800

    dmaengine: idxd: fix memory leak in error handling path of idxd_setup_wqs
    
    commit 3fd2f4bc010cdfbc07dd21018dc65bd9370eb7a4 upstream.
    
    Memory allocated for wqs is not freed if an error occurs during
    idxd_setup_wqs(). To fix it, free the allocated memory in the reverse
    order of allocation before exiting the function in case of an error.
    
    Fixes: 7c5dd23e57c1 ("dmaengine: idxd: fix wq conf_dev 'struct device' lifetime")
    Fixes: 700af3a0a26c ("dmaengine: idxd: add 'struct idxd_dev' as wrapper for conf_dev")
    Fixes: de5819b99489 ("dmaengine: idxd: track enabled workqueues in bitmap")
    Fixes: b0325aefd398 ("dmaengine: idxd: add WQ operation cap restriction support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
    Link: https://lore.kernel.org/r/20250404120217.48772-2-xueshuai@linux.alibaba.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: Revert "dmaengine: dmatest: Fix dmatest waiting less when interrupted" [+ + +]
Author: Nathan Lynch <nathan.lynch@amd.com>
Date:   Thu Apr 3 11:24:19 2025 -0500

    dmaengine: Revert "dmaengine: dmatest: Fix dmatest waiting less when interrupted"
    
    commit df180e65305f8c1e020d54bfc2132349fd693de1 upstream.
    
    Several issues with this change:
    
    * The analysis is flawed and it's unclear what problem is being
      fixed. There is no difference between wait_event_freezable_timeout()
      and wait_event_timeout() with respect to device interrupts. And of
      course "the interrupt notifying the finish of an operation happens
      during wait_event_freezable_timeout()" -- that's how it's supposed
      to work.
    
    * The link at the "Closes:" tag appears to be an unrelated
      use-after-free in idxd.
    
    * It introduces a regression: dmatest threads are meant to be
      freezable and this change breaks that.
    
    See discussion here:
    https://lore.kernel.org/dmaengine/878qpa13fe.fsf@AUSNATLYNCH.amd.com/
    
    Fixes: e87ca16e9911 ("dmaengine: dmatest: Fix dmatest waiting less when interrupted")
    Signed-off-by: Nathan Lynch <nathan.lynch@amd.com>
    Link: https://lore.kernel.org/r/20250403-dmaengine-dmatest-revert-waiting-less-v1-1-8227c5a3d7c8@amd.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: ti: k3-udma: Add missing locking [+ + +]
Author: Ronald Wahl <ronald.wahl@legrand.com>
Date:   Mon Apr 14 19:31:13 2025 +0200

    dmaengine: ti: k3-udma: Add missing locking
    
    commit fca280992af8c2fbd511bc43f65abb4a17363f2f upstream.
    
    Recent kernels complain about a missing lock in k3-udma.c when the lock
    validator is enabled:
    
    [    4.128073] WARNING: CPU: 0 PID: 746 at drivers/dma/ti/../virt-dma.h:169 udma_start.isra.0+0x34/0x238
    [    4.137352] CPU: 0 UID: 0 PID: 746 Comm: kworker/0:3 Not tainted 6.12.9-arm64 #28
    [    4.144867] Hardware name: pp-v12 (DT)
    [    4.148648] Workqueue: events udma_check_tx_completion
    [    4.153841] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    4.160834] pc : udma_start.isra.0+0x34/0x238
    [    4.165227] lr : udma_start.isra.0+0x30/0x238
    [    4.169618] sp : ffffffc083cabcf0
    [    4.172963] x29: ffffffc083cabcf0 x28: 0000000000000000 x27: ffffff800001b005
    [    4.180167] x26: ffffffc0812f0000 x25: 0000000000000000 x24: 0000000000000000
    [    4.187370] x23: 0000000000000001 x22: 00000000e21eabe9 x21: ffffff8000fa0670
    [    4.194571] x20: ffffff8001b6bf00 x19: ffffff8000fa0430 x18: ffffffc083b95030
    [    4.201773] x17: 0000000000000000 x16: 00000000f0000000 x15: 0000000000000048
    [    4.208976] x14: 0000000000000048 x13: 0000000000000000 x12: 0000000000000001
    [    4.216179] x11: ffffffc08151a240 x10: 0000000000003ea1 x9 : ffffffc08046ab68
    [    4.223381] x8 : ffffffc083cabac0 x7 : ffffffc081df3718 x6 : 0000000000029fc8
    [    4.230583] x5 : ffffffc0817ee6d8 x4 : 0000000000000bc0 x3 : 0000000000000000
    [    4.237784] x2 : 0000000000000000 x1 : 00000000001fffff x0 : 0000000000000000
    [    4.244986] Call trace:
    [    4.247463]  udma_start.isra.0+0x34/0x238
    [    4.251509]  udma_check_tx_completion+0xd0/0xdc
    [    4.256076]  process_one_work+0x244/0x3fc
    [    4.260129]  process_scheduled_works+0x6c/0x74
    [    4.264610]  worker_thread+0x150/0x1dc
    [    4.268398]  kthread+0xd8/0xe8
    [    4.271492]  ret_from_fork+0x10/0x20
    [    4.275107] irq event stamp: 220
    [    4.278363] hardirqs last  enabled at (219): [<ffffffc080a27c7c>] _raw_spin_unlock_irq+0x38/0x50
    [    4.287183] hardirqs last disabled at (220): [<ffffffc080a1c154>] el1_dbg+0x24/0x50
    [    4.294879] softirqs last  enabled at (182): [<ffffffc080037e68>] handle_softirqs+0x1c0/0x3cc
    [    4.303437] softirqs last disabled at (177): [<ffffffc080010170>] __do_softirq+0x1c/0x28
    [    4.311559] ---[ end trace 0000000000000000 ]---
    
    This commit adds the missing locking.
    
    Fixes: 25dcb5dd7b7c ("dmaengine: ti: New driver for K3 UDMA")
    Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Cc: Vignesh Raghavendra <vigneshr@ti.com>
    Cc: Vinod Koul <vkoul@kernel.org>
    Cc: dmaengine@vger.kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Ronald Wahl <ronald.wahl@legrand.com>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Link: https://lore.kernel.org/r/20250414173113.80677-1-rwahl@gmx.de
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dmaengine: ti: k3-udma: Use cap_mask directly from dma_device structure instead of a local copy [+ + +]
Author: Yemike Abhilash Chandra <y-abhilashchandra@ti.com>
Date:   Thu Apr 17 13:25:21 2025 +0530

    dmaengine: ti: k3-udma: Use cap_mask directly from dma_device structure instead of a local copy
    
    commit 8ca9590c39b69b55a8de63d2b21b0d44f523b43a upstream.
    
    Currently, a local dma_cap_mask_t variable is used to store device
    cap_mask within udma_of_xlate(). However, the DMA_PRIVATE flag in
    the device cap_mask can get cleared when the last channel is released.
    This can happen right after storing the cap_mask locally in
    udma_of_xlate(), and subsequent dma_request_channel() can fail due to
    mismatch in the cap_mask. Fix this by removing the local dma_cap_mask_t
    variable and directly using the one from the dma_device structure.
    
    Fixes: 25dcb5dd7b7c ("dmaengine: ti: New driver for K3 UDMA")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Reviewed-by: Udit Kumar <u-kumar1@ti.com>
    Signed-off-by: Yemike Abhilash Chandra <y-abhilashchandra@ti.com>
    Link: https://lore.kernel.org/r/20250417075521.623651-1-y-abhilashchandra@ti.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Drivers: hv: Allow vmbus_sendpacket_mpb_desc() to create multiple ranges [+ + +]
Author: Michael Kelley <mhklinux@outlook.com>
Date:   Mon May 12 17:06:00 2025 -0700

    Drivers: hv: Allow vmbus_sendpacket_mpb_desc() to create multiple ranges
    
    commit 380b75d3078626aadd0817de61f3143f5db6e393 upstream.
    
    vmbus_sendpacket_mpb_desc() is currently used only by the storvsc driver
    and is hardcoded to create a single GPA range. To allow it to also be
    used by the netvsc driver to create multiple GPA ranges, no longer
    hardcode as having a single GPA range. Allow the calling driver to
    specify the rangecount in the supplied descriptor.
    
    Update the storvsc driver to reflect this new approach.
    
    Cc: <stable@vger.kernel.org> # 6.1.x
    Signed-off-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://patch.msgid.link/20250513000604.1396-2-mhklinux@outlook.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Drivers: hv: vmbus: Remove vmbus_sendpacket_pagebuffer() [+ + +]
Author: Michael Kelley <mhklinux@outlook.com>
Date:   Mon May 12 17:06:04 2025 -0700

    Drivers: hv: vmbus: Remove vmbus_sendpacket_pagebuffer()
    
    commit 45a442fe369e6c4e0b4aa9f63b31c3f2f9e2090e upstream.
    
    With the netvsc driver changed to use vmbus_sendpacket_mpb_desc()
    instead of vmbus_sendpacket_pagebuffer(), the latter has no remaining
    callers. Remove it.
    
    Cc: <stable@vger.kernel.org> # 6.1.x
    Signed-off-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://patch.msgid.link/20250513000604.1396-6-mhklinux@outlook.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/display: Avoid flooding unnecessary info messages [+ + +]
Author: Wayne Lin <Wayne.Lin@amd.com>
Date:   Tue May 13 11:20:24 2025 +0800

    drm/amd/display: Avoid flooding unnecessary info messages
    
    commit d33724ffb743d3d2698bd969e29253ae0cff9739 upstream.
    
    It's expected that we'll encounter temporary exceptions
    during aux transactions. Adjust logging from drm_info to
    drm_dbg_dp to prevent flooding with unnecessary log messages.
    
    Fixes: 3637e457eb00 ("drm/amd/display: Fix wrong handling for AUX_DEFER case")
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Link: https://lore.kernel.org/r/20250513032026.838036-1-Wayne.Lin@amd.com
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 9a9c3e1fe5256da14a0a307dff0478f90c55fc8c)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: Correct the reply value when AUX write incomplete [+ + +]
Author: Wayne Lin <Wayne.Lin@amd.com>
Date:   Fri Apr 25 14:44:02 2025 +0800

    drm/amd/display: Correct the reply value when AUX write incomplete
    
    commit d433981385c62c72080e26f1c00a961d18b233be upstream.
    
    [Why]
    Now forcing aux->transfer to return 0 when incomplete AUX write is
    inappropriate. It should return bytes have been transferred.
    
    [How]
    aux->transfer is asked not to change original msg except reply field of
    drm_dp_aux_msg structure. Copy the msg->buffer when it's write request,
    and overwrite the first byte when sink reply 1 byte indicating partially
    written byte number. Then we can return the correct value without
    changing the original msg.
    
    Fixes: 3637e457eb00 ("drm/amd/display: Fix wrong handling for AUX_DEFER case")
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Ray Wu <ray.wu@amd.com>
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Signed-off-by: Ray Wu <ray.wu@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 7ac37f0dcd2e0b729fa7b5513908dc8ab802b540)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd: Add Suspend/Hibernate notification callback support [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Wed Nov 27 21:26:56 2024 -0600

    drm/amd: Add Suspend/Hibernate notification callback support
    
    [ Upstream commit 2965e6355dcdf157b5fafa25a2715f00064da8bf ]
    
    As part of the suspend sequence VRAM needs to be evicted on dGPUs.
    In order to make suspend/resume more reliable we moved this into
    the pmops prepare() callback so that the suspend sequence would fail
    but the system could remain operational under high memory usage suspend.
    
    Another class of issues exist though where due to memory fragementation
    there isn't a large enough contiguous space and swap isn't accessible.
    
    Add support for a suspend/hibernate notification callback that could
    evict VRAM before tasks are frozen. This should allow paging out to swap
    if necessary.
    
    Link: https://github.com/ROCm/ROCK-Kernel-Driver/issues/174
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3476
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2362
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3781
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Link: https://lore.kernel.org/r/20241128032656.2090059-2-superm1@kernel.org
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: d0ce1aaa8531 ("Revert "drm/amd: Stop evicting resources on APUs in suspend"")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd: Stop evicting resources on APUs in suspend [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Wed Feb 7 23:52:55 2024 -0600

    drm/amd: Stop evicting resources on APUs in suspend
    
    [ Upstream commit 226db36032c61d8717dfdd052adac351b22d3e83 ]
    
    commit 5095d5418193 ("drm/amd: Evict resources during PM ops prepare()
    callback") intentionally moved the eviction of resources to earlier in
    the suspend process, but this introduced a subtle change that it occurs
    before adev->in_s0ix or adev->in_s3 are set. This meant that APUs
    actually started to evict resources at suspend time as well.
    
    Explicitly set s0ix or s3 in the prepare() stage, and unset them if the
    prepare() stage failed.
    
    v2: squash in warning fix from Stephen Rothwell
    
    Reported-by: Jürg Billeter <j@bitron.ch>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3132#note_2271038
    Fixes: 5095d5418193 ("drm/amd: Evict resources during PM ops prepare() callback")
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: d0ce1aaa8531 ("Revert "drm/amd: Stop evicting resources on APUs in suspend"")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: fix pm notifier handling [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu May 1 13:46:46 2025 -0400

    drm/amdgpu: fix pm notifier handling
    
    commit 4aaffc85751da5722e858e4333e8cf0aa4b6c78f upstream.
    
    Set the s3/s0ix and s4 flags in the pm notifier so that we can skip
    the resource evictions properly in pm prepare based on whether
    we are suspending or hibernating.  Drop the eviction as processes
    are not frozen at this time, we we can end up getting stuck trying
    to evict VRAM while applications continue to submit work which
    causes the buffers to get pulled back into VRAM.
    
    v2: Move suspend flags out of pm notifier (Mario)
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4178
    Fixes: 2965e6355dcd ("drm/amd: Add Suspend/Hibernate notification callback support")
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 06f2dcc241e7e5c681f81fbc46cacdf4bfd7d6d7)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: Fix the runtime resume failure issue [+ + +]
Author: Ma Jun <Jun.Ma2@amd.com>
Date:   Wed Feb 21 17:16:49 2024 +0800

    drm/amdgpu: Fix the runtime resume failure issue
    
    [ Upstream commit bbfaf2aea7164db59739728d62d9cc91d64ff856 ]
    
    Don't set power state flag when system enter runtime suspend,
    or it may cause runtime resume failure issue.
    
    Fixes: 3a9626c816db ("drm/amd: Stop evicting resources on APUs in suspend")
    Signed-off-by: Ma Jun <Jun.Ma2@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Stable-dep-of: d0ce1aaa8531 ("Revert "drm/amd: Stop evicting resources on APUs in suspend"")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: trigger flr_work if reading pf2vf data failed [+ + +]
Author: Zhigang Luo <Zhigang.Luo@amd.com>
Date:   Thu Feb 29 16:04:35 2024 -0500

    drm/amdgpu: trigger flr_work if reading pf2vf data failed
    
    [ Upstream commit ab66c832847fcdffc97d4591ba5547e3990d9d33 ]
    
    if reading pf2vf data failed 30 times continuously, it means something is
    wrong. Need to trigger flr_work to recover the issue.
    
    also use dev_err to print the error message to get which device has
    issue and add warning message if waiting IDH_FLR_NOTIFICATION_CMPL
    timeout.
    
    Signed-off-by: Zhigang Luo <Zhigang.Luo@amd.com>
    Acked-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: d0ce1aaa8531 ("Revert "drm/amd: Stop evicting resources on APUs in suspend"")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ftrace: Fix preemption accounting for stacktrace filter command [+ + +]
Author: pengdonglin <pengdonglin@xiaomi.com>
Date:   Mon May 12 17:42:46 2025 +0800

    ftrace: Fix preemption accounting for stacktrace filter command
    
    commit 11aff32439df6ca5b3b891b43032faf88f4a6a29 upstream.
    
    The preemption count of the stacktrace filter command to trace ksys_read
    is consistently incorrect:
    
    $ echo ksys_read:stacktrace > set_ftrace_filter
    
       <...>-453     [004] ...1.    38.308956: <stack trace>
    => ksys_read
    => do_syscall_64
    => entry_SYSCALL_64_after_hwframe
    
    The root cause is that the trace framework disables preemption when
    invoking the filter command callback in function_trace_probe_call:
    
       preempt_disable_notrace();
       probe_ops->func(ip, parent_ip, probe_opsbe->tr, probe_ops, probe->data);
       preempt_enable_notrace();
    
    Use tracing_gen_ctx_dec() to account for the preempt_disable_notrace(),
    which will output the correct preemption count:
    
    $ echo ksys_read:stacktrace > set_ftrace_filter
    
       <...>-410     [006] .....    31.420396: <stack trace>
    => ksys_read
    => do_syscall_64
    => entry_SYSCALL_64_after_hwframe
    
    Cc: stable@vger.kernel.org
    Fixes: 36590c50b2d07 ("tracing: Merge irqflags + preempt counter.")
    Link: https://lore.kernel.org/20250512094246.1167956-2-dolinux.peng@gmail.com
    Signed-off-by: pengdonglin <dolinux.peng@gmail.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ftrace: Fix preemption accounting for stacktrace trigger command [+ + +]
Author: pengdonglin <pengdonglin@xiaomi.com>
Date:   Mon May 12 17:42:45 2025 +0800

    ftrace: Fix preemption accounting for stacktrace trigger command
    
    commit e333332657f615ac2b55aa35565c4a882018bbe9 upstream.
    
    When using the stacktrace trigger command to trace syscalls, the
    preemption count was consistently reported as 1 when the system call
    event itself had 0 (".").
    
    For example:
    
    root@ubuntu22-vm:/sys/kernel/tracing/events/syscalls/sys_enter_read
    $ echo stacktrace > trigger
    $ echo 1 > enable
    
        sshd-416     [002] .....   232.864910: sys_read(fd: a, buf: 556b1f3221d0, count: 8000)
        sshd-416     [002] ...1.   232.864913: <stack trace>
     => ftrace_syscall_enter
     => syscall_trace_enter
     => do_syscall_64
     => entry_SYSCALL_64_after_hwframe
    
    The root cause is that the trace framework disables preemption in __DO_TRACE before
    invoking the trigger callback.
    
    Use the tracing_gen_ctx_dec() that will accommodate for the increase of
    the preemption count in __DO_TRACE when calling the callback. The result
    is the accurate reporting of:
    
        sshd-410     [004] .....   210.117660: sys_read(fd: 4, buf: 559b725ba130, count: 40000)
        sshd-410     [004] .....   210.117662: <stack trace>
     => ftrace_syscall_enter
     => syscall_trace_enter
     => do_syscall_64
     => entry_SYSCALL_64_after_hwframe
    
    Cc: stable@vger.kernel.org
    Fixes: ce33c845b030c ("tracing: Dump stacktrace trigger to the corresponding instance")
    Link: https://lore.kernel.org/20250512094246.1167956-1-dolinux.peng@gmail.com
    Signed-off-by: pengdonglin <dolinux.peng@gmail.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: thrustmaster: fix memory leak in thrustmaster_interrupts() [+ + +]
Author: Qasim Ijaz <qasdev00@gmail.com>
Date:   Thu Mar 27 23:11:46 2025 +0000

    HID: thrustmaster: fix memory leak in thrustmaster_interrupts()
    
    [ Upstream commit 09d546303b370113323bfff456c4e8cff8756005 ]
    
    In thrustmaster_interrupts(), the allocated send_buf is not
    freed if the usb_check_int_endpoints() check fails, leading
    to a memory leak.
    
    Fix this by ensuring send_buf is freed before returning in
    the error path.
    
    Fixes: 50420d7c79c3 ("HID: hid-thrustmaster: Fix warning in thrustmaster_probe by adding endpoint check")
    Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: uclogic: Add NULL check in uclogic_input_configured() [+ + +]
Author: Henry Martin <bsdhenrymartin@gmail.com>
Date:   Tue Apr 1 17:48:53 2025 +0800

    HID: uclogic: Add NULL check in uclogic_input_configured()
    
    [ Upstream commit bd07f751208ba190f9b0db5e5b7f35d5bb4a8a1e ]
    
    devm_kasprintf() returns NULL when memory allocation fails. Currently,
    uclogic_input_configured() does not check for this case, which results
    in a NULL pointer dereference.
    
    Add NULL check after devm_kasprintf() to prevent this issue.
    
    Fixes: dd613a4e45f8 ("HID: uclogic: Correct devm device reference for hidinput input_dev name")
    Signed-off-by: Henry Martin <bsdhenrymartin@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hv_netvsc: Preserve contiguous PFN grouping in the page buffer array [+ + +]
Author: Michael Kelley <mhklinux@outlook.com>
Date:   Mon May 12 17:06:02 2025 -0700

    hv_netvsc: Preserve contiguous PFN grouping in the page buffer array
    
    commit 41a6328b2c55276f89ea3812069fd7521e348bbf upstream.
    
    Starting with commit dca5161f9bd0 ("hv_netvsc: Check status in
    SEND_RNDIS_PKT completion message") in the 6.3 kernel, the Linux
    driver for Hyper-V synthetic networking (netvsc) occasionally reports
    "nvsp_rndis_pkt_complete error status: 2".[1] This error indicates
    that Hyper-V has rejected a network packet transmit request from the
    guest, and the outgoing network packet is dropped. Higher level
    network protocols presumably recover and resend the packet so there is
    no functional error, but performance is slightly impacted. Commit
    dca5161f9bd0 is not the cause of the error -- it only added reporting
    of an error that was already happening without any notice. The error
    has presumably been present since the netvsc driver was originally
    introduced into Linux.
    
    The root cause of the problem is that the netvsc driver in Linux may
    send an incorrectly formatted VMBus message to Hyper-V when
    transmitting the network packet. The incorrect formatting occurs when
    the rndis header of the VMBus message crosses a page boundary due to
    how the Linux skb head memory is aligned. In such a case, two PFNs are
    required to describe the location of the rndis header, even though
    they are contiguous in guest physical address (GPA) space. Hyper-V
    requires that two rndis header PFNs be in a single "GPA range" data
    struture, but current netvsc code puts each PFN in its own GPA range,
    which Hyper-V rejects as an error.
    
    The incorrect formatting occurs only for larger packets that netvsc
    must transmit via a VMBus "GPA Direct" message. There's no problem
    when netvsc transmits a smaller packet by copying it into a pre-
    allocated send buffer slot because the pre-allocated slots don't have
    page crossing issues.
    
    After commit 14ad6ed30a10 ("net: allow small head cache usage with
    large MAX_SKB_FRAGS values") in the 6.14-rc4 kernel, the error occurs
    much more frequently in VMs with 16 or more vCPUs. It may occur every
    few seconds, or even more frequently, in an ssh session that outputs a
    lot of text. Commit 14ad6ed30a10 subtly changes how skb head memory is
    allocated, making it much more likely that the rndis header will cross
    a page boundary when the vCPU count is 16 or more. The changes in
    commit 14ad6ed30a10 are perfectly valid -- they just had the side
    effect of making the netvsc bug more prominent.
    
    Current code in init_page_array() creates a separate page buffer array
    entry for each PFN required to identify the data to be transmitted.
    Contiguous PFNs get separate entries in the page buffer array, and any
    information about contiguity is lost.
    
    Fix the core issue by having init_page_array() construct the page
    buffer array to represent contiguous ranges rather than individual
    pages. When these ranges are subsequently passed to
    netvsc_build_mpb_array(), it can build GPA ranges that contain
    multiple PFNs, as required to avoid the error "nvsp_rndis_pkt_complete
    error status: 2". If instead the network packet is sent by copying
    into a pre-allocated send buffer slot, the copy proceeds using the
    contiguous ranges rather than individual pages, but the result of the
    copying is the same. Also fix rndis_filter_send_request() to construct
    a contiguous range, since it has its own page buffer array.
    
    This change has a side benefit in CoCo VMs in that netvsc_dma_map()
    calls dma_map_single() on each contiguous range instead of on each
    page. This results in fewer calls to dma_map_single() but on larger
    chunks of memory, which should reduce contention on the swiotlb.
    
    Since the page buffer array now contains one entry for each contiguous
    range instead of for each individual page, the number of entries in
    the array can be reduced, saving 208 bytes of stack space in
    netvsc_xmit() when MAX_SKG_FRAGS has the default value of 17.
    
    [1] https://bugzilla.kernel.org/show_bug.cgi?id=217503
    
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217503
    Cc: <stable@vger.kernel.org> # 6.1.x
    Signed-off-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://patch.msgid.link/20250513000604.1396-4-mhklinux@outlook.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

hv_netvsc: Remove rmsg_pgcnt [+ + +]
Author: Michael Kelley <mhklinux@outlook.com>
Date:   Mon May 12 17:06:03 2025 -0700

    hv_netvsc: Remove rmsg_pgcnt
    
    commit 5bbc644bbf4e97a05bc0cb052189004588ff8a09 upstream.
    
    init_page_array() now always creates a single page buffer array entry
    for the rndis message, even if the rndis message crosses a page
    boundary. As such, the number of page buffer array entries used for
    the rndis message must no longer be tracked -- it is always just 1.
    Remove the rmsg_pgcnt field and use "1" where the value is needed.
    
    Cc: <stable@vger.kernel.org> # 6.1.x
    Signed-off-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://patch.msgid.link/20250513000604.1396-5-mhklinux@outlook.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

hv_netvsc: Use vmbus_sendpacket_mpb_desc() to send VMBus messages [+ + +]
Author: Michael Kelley <mhklinux@outlook.com>
Date:   Mon May 12 17:06:01 2025 -0700

    hv_netvsc: Use vmbus_sendpacket_mpb_desc() to send VMBus messages
    
    commit 4f98616b855cb0e3b5917918bb07b44728eb96ea upstream.
    
    netvsc currently uses vmbus_sendpacket_pagebuffer() to send VMBus
    messages. This function creates a series of GPA ranges, each of which
    contains a single PFN. However, if the rndis header in the VMBus
    message crosses a page boundary, the netvsc protocol with the host
    requires that both PFNs for the rndis header must be in a single "GPA
    range" data structure, which isn't possible with
    vmbus_sendpacket_pagebuffer(). As the first step in fixing this, add a
    new function netvsc_build_mpb_array() to build a VMBus message with
    multiple GPA ranges, each of which may contain multiple PFNs. Use
    vmbus_sendpacket_mpb_desc() to send this VMBus message to the host.
    
    There's no functional change since higher levels of netvsc don't
    maintain or propagate knowledge of contiguous PFNs. Based on its
    input, netvsc_build_mpb_array() still produces a separate GPA range
    for each PFN and the behavior is the same as with
    vmbus_sendpacket_pagebuffer(). But the groundwork is laid for a
    subsequent patch to provide the necessary grouping.
    
    Cc: <stable@vger.kernel.org> # 6.1.x
    Signed-off-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://patch.msgid.link/20250513000604.1396-3-mhklinux@outlook.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hwpoison, memory_hotplug: lock folio before unmap hwpoisoned folio [+ + +]
Author: Ma Wupeng <mawupeng1@huawei.com>
Date:   Mon Feb 17 09:43:29 2025 +0800

    hwpoison, memory_hotplug: lock folio before unmap hwpoisoned folio
    
    commit af288a426c3e3552b62595c6138ec6371a17dbba upstream.
    
    Commit b15c87263a69 ("hwpoison, memory_hotplug: allow hwpoisoned pages to
    be offlined) add page poison checks in do_migrate_range in order to make
    offline hwpoisoned page possible by introducing isolate_lru_page and
    try_to_unmap for hwpoisoned page.  However folio lock must be held before
    calling try_to_unmap.  Add it to fix this problem.
    
    Warning will be produced if folio is not locked during unmap:
    
      ------------[ cut here ]------------
      kernel BUG at ./include/linux/swapops.h:400!
      Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
      Modules linked in:
      CPU: 4 UID: 0 PID: 411 Comm: bash Tainted: G        W          6.13.0-rc1-00016-g3c434c7ee82a-dirty #41
      Tainted: [W]=WARN
      Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015
      pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : try_to_unmap_one+0xb08/0xd3c
      lr : try_to_unmap_one+0x3dc/0xd3c
      Call trace:
       try_to_unmap_one+0xb08/0xd3c (P)
       try_to_unmap_one+0x3dc/0xd3c (L)
       rmap_walk_anon+0xdc/0x1f8
       rmap_walk+0x3c/0x58
       try_to_unmap+0x88/0x90
       unmap_poisoned_folio+0x30/0xa8
       do_migrate_range+0x4a0/0x568
       offline_pages+0x5a4/0x670
       memory_block_action+0x17c/0x374
       memory_subsys_offline+0x3c/0x78
       device_offline+0xa4/0xd0
       state_store+0x8c/0xf0
       dev_attr_store+0x18/0x2c
       sysfs_kf_write+0x44/0x54
       kernfs_fop_write_iter+0x118/0x1a8
       vfs_write+0x3a8/0x4bc
       ksys_write+0x6c/0xf8
       __arm64_sys_write+0x1c/0x28
       invoke_syscall+0x44/0x100
       el0_svc_common.constprop.0+0x40/0xe0
       do_el0_svc+0x1c/0x28
       el0_svc+0x30/0xd0
       el0t_64_sync_handler+0xc8/0xcc
       el0t_64_sync+0x198/0x19c
      Code: f9407be0 b5fff320 d4210000 17ffff97 (d4210000)
      ---[ end trace 0000000000000000 ]---
    
    Link: https://lkml.kernel.org/r/20250217014329.3610326-4-mawupeng1@huawei.com
    Fixes: b15c87263a69 ("hwpoison, memory_hotplug: allow hwpoisoned pages to be offlined")
    Signed-off-by: Ma Wupeng <mawupeng1@huawei.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Acked-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
    Signed-off-by: He Zhe <zhe.he@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iio: adc: ad7266: Fix potential timestamp alignment issue. [+ + +]
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Sun Apr 13 11:34:24 2025 +0100

    iio: adc: ad7266: Fix potential timestamp alignment issue.
    
    [ Upstream commit 52d349884738c346961e153f195f4c7fe186fcf4 ]
    
    On architectures where an s64 is only 32-bit aligned insufficient padding
    would be left between the earlier elements and the timestamp. Use
    aligned_s64 to enforce the correct placement and ensure the storage is
    large enough.
    
    Fixes: 54e018da3141 ("iio:ad7266: Mark transfer buffer as __be16") # aligned_s64 is much newer.
    Reported-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Nuno Sá <nuno.sa@analog.com>
    Reviewed-by: David Lechner <dlechner@baylibre.com>
    Link: https://patch.msgid.link/20250413103443.2420727-2-jic23@kernel.org
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iio: adc: ad7768-1: Fix insufficient alignment of timestamp. [+ + +]
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Sun Apr 13 11:34:25 2025 +0100

    iio: adc: ad7768-1: Fix insufficient alignment of timestamp.
    
    [ Upstream commit ffbc26bc91c1f1eb3dcf5d8776e74cbae21ee13a ]
    
    On architectures where an s64 is not 64-bit aligned, this may result
    insufficient alignment of the timestamp and the structure being too small.
    Use aligned_s64 to force the alignment.
    
    Fixes: a1caeebab07e ("iio: adc: ad7768-1: Fix too small buffer passed to iio_push_to_buffers_with_timestamp()") # aligned_s64 newer
    Reported-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Nuno Sá <nuno.sa@analog.com>
    Reviewed-by: David Lechner <dlechner@baylibre.com>
    Link: https://patch.msgid.link/20250413103443.2420727-3-jic23@kernel.org
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iio: chemical: sps30: use aligned_s64 for timestamp [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Thu Apr 17 11:52:37 2025 -0500

    iio: chemical: sps30: use aligned_s64 for timestamp
    
    [ Upstream commit bb49d940344bcb8e2b19e69d7ac86f567887ea9a ]
    
    Follow the pattern of other drivers and use aligned_s64 for the
    timestamp. This will ensure that the timestamp is correctly aligned on
    all architectures.
    
    Fixes: a5bf6fdd19c3 ("iio:chemical:sps30: Fix timestamp alignment")
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Nuno Sá <nuno.sa@analog.com>
    Link: https://patch.msgid.link/20250417-iio-more-timestamp-alignment-v1-5-eafac1e22318@baylibre.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv4: Fix uninit-value access in __ip_make_skb() [+ + +]
Author: Shigeru Yoshida <syoshida@redhat.com>
Date:   Tue Apr 30 21:39:45 2024 +0900

    ipv4: Fix uninit-value access in __ip_make_skb()
    
    commit fc1092f51567277509563800a3c56732070b6aa4 upstream.
    
    KMSAN reported uninit-value access in __ip_make_skb() [1].  __ip_make_skb()
    tests HDRINCL to know if the skb has icmphdr. However, HDRINCL can cause a
    race condition. If calling setsockopt(2) with IP_HDRINCL changes HDRINCL
    while __ip_make_skb() is running, the function will access icmphdr in the
    skb even if it is not included. This causes the issue reported by KMSAN.
    
    Check FLOWI_FLAG_KNOWN_NH on fl4->flowi4_flags instead of testing HDRINCL
    on the socket.
    
    Also, fl4->fl4_icmp_type and fl4->fl4_icmp_code are not initialized. These
    are union in struct flowi4 and are implicitly initialized by
    flowi4_init_output(), but we should not rely on specific union layout.
    
    Initialize these explicitly in raw_sendmsg().
    
    [1]
    BUG: KMSAN: uninit-value in __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481
     __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481
     ip_finish_skb include/net/ip.h:243 [inline]
     ip_push_pending_frames+0x4c/0x5c0 net/ipv4/ip_output.c:1508
     raw_sendmsg+0x2381/0x2690 net/ipv4/raw.c:654
     inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851
     sock_sendmsg_nosec net/socket.c:730 [inline]
     __sock_sendmsg+0x274/0x3c0 net/socket.c:745
     __sys_sendto+0x62c/0x7b0 net/socket.c:2191
     __do_sys_sendto net/socket.c:2203 [inline]
     __se_sys_sendto net/socket.c:2199 [inline]
     __x64_sys_sendto+0x130/0x200 net/socket.c:2199
     do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x6d/0x75
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:3804 [inline]
     slab_alloc_node mm/slub.c:3845 [inline]
     kmem_cache_alloc_node+0x5f6/0xc50 mm/slub.c:3888
     kmalloc_reserve+0x13c/0x4a0 net/core/skbuff.c:577
     __alloc_skb+0x35a/0x7c0 net/core/skbuff.c:668
     alloc_skb include/linux/skbuff.h:1318 [inline]
     __ip_append_data+0x49ab/0x68c0 net/ipv4/ip_output.c:1128
     ip_append_data+0x1e7/0x260 net/ipv4/ip_output.c:1365
     raw_sendmsg+0x22b1/0x2690 net/ipv4/raw.c:648
     inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851
     sock_sendmsg_nosec net/socket.c:730 [inline]
     __sock_sendmsg+0x274/0x3c0 net/socket.c:745
     __sys_sendto+0x62c/0x7b0 net/socket.c:2191
     __do_sys_sendto net/socket.c:2203 [inline]
     __se_sys_sendto net/socket.c:2199 [inline]
     __x64_sys_sendto+0x130/0x200 net/socket.c:2199
     do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x6d/0x75
    
    CPU: 1 PID: 15709 Comm: syz-executor.7 Not tainted 6.8.0-11567-gb3603fcb79b1 #25
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014
    
    Fixes: 99e5acae193e ("ipv4: Fix potential uninit variable access bug in __ip_make_skb()")
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Signed-off-by: Shigeru Yoshida <syoshida@redhat.com>
    Link: https://lore.kernel.org/r/20240430123945.2057348-1-syoshida@redhat.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Zhaoyang Li <lizy04@hust.edu.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv6: Fix potential uninit-value access in __ip6_make_skb() [+ + +]
Author: Shigeru Yoshida <syoshida@redhat.com>
Date:   Mon May 6 23:11:29 2024 +0900

    ipv6: Fix potential uninit-value access in __ip6_make_skb()
    
    commit 4e13d3a9c25b7080f8a619f961e943fe08c2672c upstream.
    
    As it was done in commit fc1092f51567 ("ipv4: Fix uninit-value access in
    __ip_make_skb()") for IPv4, check FLOWI_FLAG_KNOWN_NH on fl6->flowi6_flags
    instead of testing HDRINCL on the socket to avoid a race condition which
    causes uninit-value access.
    
    Fixes: ea30388baebc ("ipv6: Fix an uninit variable access bug in __ip6_make_skb()")
    Signed-off-by: Shigeru Yoshida <syoshida@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Zhaoyang Li <lizy04@hust.edu.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.1.140 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu May 22 14:10:11 2025 +0200

    Linux 6.1.140
    
    Link: https://lore.kernel.org/r/20250520125800.653047540@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: Explicitly specify code model in Makefile [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Fri Nov 22 15:47:47 2024 +0800

    LoongArch: Explicitly specify code model in Makefile
    
    commit e67e0eb6a98b261caf45048f9eb95fd7609289c0 upstream.
    
    LoongArch's toolchain may change the default code model from normal to
    medium. This is unnecessary for kernel, and generates some relocations
    which cannot be handled by the module loader. So explicitly specify the
    code model to normal in Makefile (for Rust 'normal' is 'small').
    
    Cc: stable@vger.kernel.org
    Tested-by: Haiyong Sun <sunhaiyong@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Fix MAX_REG_OFFSET calculation [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Wed May 14 22:17:43 2025 +0800

    LoongArch: Fix MAX_REG_OFFSET calculation
    
    commit 90436d234230e9a950ccd87831108b688b27a234 upstream.
    
    Fix MAX_REG_OFFSET calculation, make it point to the last register
    in 'struct pt_regs' and not to the marker itself, which could allow
    regs_get_register() to return an invalid offset.
    
    Cc: stable@vger.kernel.org
    Fixes: 803b0fc5c3f2baa6e5 ("LoongArch: Add process management")
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/vmscan: fix a bug calling wakeup_kswapd() with a wrong zone index [+ + +]
Author: Byungchul Park <byungchul@sk.com>
Date:   Fri Feb 16 20:15:02 2024 +0900

    mm/vmscan: fix a bug calling wakeup_kswapd() with a wrong zone index
    
    commit 2774f256e7c0219e2b0a0894af1c76bdabc4f974 upstream.
    
    With numa balancing on, when a numa system is running where a numa node
    doesn't have its local memory so it has no managed zones, the following
    oops has been observed.  It's because wakeup_kswapd() is called with a
    wrong zone index, -1.  Fixed it by checking the index before calling
    wakeup_kswapd().
    
    > BUG: unable to handle page fault for address: 00000000000033f3
    > #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: 2 PID: 895 Comm: masim Not tainted 6.6.0-dirty #255
    > Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    >    rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
    > RIP: 0010:wakeup_kswapd (./linux/mm/vmscan.c:7812)
    > Code: (omitted)
    > RSP: 0000:ffffc90004257d58 EFLAGS: 00010286
    > RAX: ffffffffffffffff RBX: ffff88883fff0480 RCX: 0000000000000003
    > RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88883fff0480
    > RBP: ffffffffffffffff R08: ff0003ffffffffff R09: ffffffffffffffff
    > R10: ffff888106c95540 R11: 0000000055555554 R12: 0000000000000003
    > R13: 0000000000000000 R14: 0000000000000000 R15: ffff88883fff0940
    > FS:  00007fc4b8124740(0000) GS:ffff888827c00000(0000) knlGS:0000000000000000
    > CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    > CR2: 00000000000033f3 CR3: 000000026cc08004 CR4: 0000000000770ee0
    > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    > DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    > PKRU: 55555554
    > Call Trace:
    >  <TASK>
    > ? __die
    > ? page_fault_oops
    > ? __pte_offset_map_lock
    > ? exc_page_fault
    > ? asm_exc_page_fault
    > ? wakeup_kswapd
    > migrate_misplaced_page
    > __handle_mm_fault
    > handle_mm_fault
    > do_user_addr_fault
    > exc_page_fault
    > asm_exc_page_fault
    > RIP: 0033:0x55b897ba0808
    > Code: (omitted)
    > RSP: 002b:00007ffeefa821a0 EFLAGS: 00010287
    > RAX: 000055b89983acd0 RBX: 00007ffeefa823f8 RCX: 000055b89983acd0
    > RDX: 00007fc2f8122010 RSI: 0000000000020000 RDI: 000055b89983acd0
    > RBP: 00007ffeefa821a0 R08: 0000000000000037 R09: 0000000000000075
    > R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000
    > R13: 00007ffeefa82410 R14: 000055b897ba5dd8 R15: 00007fc4b8340000
    >  </TASK>
    
    Link: https://lkml.kernel.org/r/20240216111502.79759-1-byungchul@sk.com
    Signed-off-by: Byungchul Park <byungchul@sk.com>
    Reported-by: Hyeongtak Ji <hyeongtak.ji@sk.com>
    Fixes: c574bbe917036 ("NUMA balancing: optimize page placement for memory tiering system")
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    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/mlx5e: Disable MACsec offload for uplink representor profile [+ + +]
Author: Carolina Jubran <cjubran@nvidia.com>
Date:   Sun May 11 13:15:52 2025 +0300

    net/mlx5e: Disable MACsec offload for uplink representor profile
    
    [ Upstream commit 588431474eb7572e57a927fa8558c9ba2f8af143 ]
    
    MACsec offload is not supported in switchdev mode for uplink
    representors. When switching to the uplink representor profile, the
    MACsec offload feature must be cleared from the netdevice's features.
    
    If left enabled, attempts to add offloads result in a null pointer
    dereference, as the uplink representor does not support MACsec offload
    even though the feature bit remains set.
    
    Clear NETIF_F_HW_MACSEC in mlx5e_fix_uplink_rep_features().
    
    Kernel log:
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc000000000f: 0000 [#1] SMP KASAN
    KASAN: null-ptr-deref in range [0x0000000000000078-0x000000000000007f]
    CPU: 29 UID: 0 PID: 4714 Comm: ip Not tainted 6.14.0-rc4_for_upstream_debug_2025_03_02_17_35 #1
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
    RIP: 0010:__mutex_lock+0x128/0x1dd0
    Code: d0 7c 08 84 d2 0f 85 ad 15 00 00 8b 35 91 5c fe 03 85 f6 75 29 49 8d 7e 60 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 a6 15 00 00 4d 3b 76 60 0f 85 fd 0b 00 00 65 ff
    RSP: 0018:ffff888147a4f160 EFLAGS: 00010206
    RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000001
    RDX: 000000000000000f RSI: 0000000000000000 RDI: 0000000000000078
    RBP: ffff888147a4f2e0 R08: ffffffffa05d2c19 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
    R13: dffffc0000000000 R14: 0000000000000018 R15: ffff888152de0000
    FS:  00007f855e27d800(0000) GS:ffff88881ee80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000004e5768 CR3: 000000013ae7c005 CR4: 0000000000372eb0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ? die_addr+0x3d/0xa0
     ? exc_general_protection+0x144/0x220
     ? asm_exc_general_protection+0x22/0x30
     ? mlx5e_macsec_add_secy+0xf9/0x700 [mlx5_core]
     ? __mutex_lock+0x128/0x1dd0
     ? lockdep_set_lock_cmp_fn+0x190/0x190
     ? mlx5e_macsec_add_secy+0xf9/0x700 [mlx5_core]
     ? mutex_lock_io_nested+0x1ae0/0x1ae0
     ? lock_acquire+0x1c2/0x530
     ? macsec_upd_offload+0x145/0x380
     ? lockdep_hardirqs_on_prepare+0x400/0x400
     ? kasan_save_stack+0x30/0x40
     ? kasan_save_stack+0x20/0x40
     ? kasan_save_track+0x10/0x30
     ? __kasan_kmalloc+0x77/0x90
     ? __kmalloc_noprof+0x249/0x6b0
     ? genl_family_rcv_msg_attrs_parse.constprop.0+0xb5/0x240
     ? mlx5e_macsec_add_secy+0xf9/0x700 [mlx5_core]
     mlx5e_macsec_add_secy+0xf9/0x700 [mlx5_core]
     ? mlx5e_macsec_add_rxsa+0x11a0/0x11a0 [mlx5_core]
     macsec_update_offload+0x26c/0x820
     ? macsec_set_mac_address+0x4b0/0x4b0
     ? lockdep_hardirqs_on_prepare+0x284/0x400
     ? _raw_spin_unlock_irqrestore+0x47/0x50
     macsec_upd_offload+0x2c8/0x380
     ? macsec_update_offload+0x820/0x820
     ? __nla_parse+0x22/0x30
     ? genl_family_rcv_msg_attrs_parse.constprop.0+0x15e/0x240
     genl_family_rcv_msg_doit+0x1cc/0x2a0
     ? genl_family_rcv_msg_attrs_parse.constprop.0+0x240/0x240
     ? cap_capable+0xd4/0x330
     genl_rcv_msg+0x3ea/0x670
     ? genl_family_rcv_msg_dumpit+0x2a0/0x2a0
     ? lockdep_set_lock_cmp_fn+0x190/0x190
     ? macsec_update_offload+0x820/0x820
     netlink_rcv_skb+0x12b/0x390
     ? genl_family_rcv_msg_dumpit+0x2a0/0x2a0
     ? netlink_ack+0xd80/0xd80
     ? rwsem_down_read_slowpath+0xf90/0xf90
     ? netlink_deliver_tap+0xcd/0xac0
     ? netlink_deliver_tap+0x155/0xac0
     ? _copy_from_iter+0x1bb/0x12c0
     genl_rcv+0x24/0x40
     netlink_unicast+0x440/0x700
     ? netlink_attachskb+0x760/0x760
     ? lock_acquire+0x1c2/0x530
     ? __might_fault+0xbb/0x170
     netlink_sendmsg+0x749/0xc10
     ? netlink_unicast+0x700/0x700
     ? __might_fault+0xbb/0x170
     ? netlink_unicast+0x700/0x700
     __sock_sendmsg+0xc5/0x190
     ____sys_sendmsg+0x53f/0x760
     ? import_iovec+0x7/0x10
     ? kernel_sendmsg+0x30/0x30
     ? __copy_msghdr+0x3c0/0x3c0
     ? filter_irq_stacks+0x90/0x90
     ? stack_depot_save_flags+0x28/0xa30
     ___sys_sendmsg+0xeb/0x170
     ? kasan_save_stack+0x30/0x40
     ? copy_msghdr_from_user+0x110/0x110
     ? do_syscall_64+0x6d/0x140
     ? lock_acquire+0x1c2/0x530
     ? __virt_addr_valid+0x116/0x3b0
     ? __virt_addr_valid+0x1da/0x3b0
     ? lock_downgrade+0x680/0x680
     ? __delete_object+0x21/0x50
     __sys_sendmsg+0xf7/0x180
     ? __sys_sendmsg_sock+0x20/0x20
     ? kmem_cache_free+0x14c/0x4e0
     ? __x64_sys_close+0x78/0xd0
     do_syscall_64+0x6d/0x140
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    RIP: 0033:0x7f855e113367
    Code: 0e 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b9 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
    RSP: 002b:00007ffd15e90c88 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f855e113367
    RDX: 0000000000000000 RSI: 00007ffd15e90cf0 RDI: 0000000000000004
    RBP: 00007ffd15e90dbc R08: 0000000000000028 R09: 000000000045d100
    R10: 00007f855e011dd8 R11: 0000000000000246 R12: 0000000000000019
    R13: 0000000067c6b785 R14: 00000000004a1e80 R15: 0000000000000000
     </TASK>
    Modules linked in: 8021q garp mrp sch_ingress openvswitch nsh mlx5_ib mlx5_fwctl mlx5_dpll mlx5_core rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi ib_umad rdma_cm ib_ipoib iw_cm ib_cm ib_uverbs ib_core xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addrtype iptable_nat nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcgss oid_registry overlay zram zsmalloc fuse [last unloaded: mlx5_core]
    ---[ end trace 0000000000000000 ]---
    
    Fixes: 8ff0ac5be144 ("net/mlx5: Add MACsec offload Tx command support")
    Signed-off-by: Carolina Jubran <cjubran@nvidia.com>
    Reviewed-by: Shahar Shitrit <shshitrit@nvidia.com>
    Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/1746958552-561295-1-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/tls: fix kernel panic when alloc_page failed [+ + +]
Author: Pengtao He <hept.hept.hept@gmail.com>
Date:   Wed May 14 21:20:13 2025 +0800

    net/tls: fix kernel panic when alloc_page failed
    
    [ Upstream commit 491deb9b8c4ad12fe51d554a69b8165b9ef9429f ]
    
    We cannot set frag_list to NULL pointer when alloc_page failed.
    It will be used in tls_strp_check_queue_ok when the next time
    tls_strp_read_sock is called.
    
    This is because we don't reset full_len in tls_strp_flush_anchor_copy()
    so the recv path will try to continue handling the partial record
    on the next call but we dettached the rcvq from the frag list.
    Alternative fix would be to reset full_len.
    
    Unable to handle kernel NULL pointer dereference
    at virtual address 0000000000000028
     Call trace:
     tls_strp_check_rcv+0x128/0x27c
     tls_strp_data_ready+0x34/0x44
     tls_data_ready+0x3c/0x1f0
     tcp_data_ready+0x9c/0xe4
     tcp_data_queue+0xf6c/0x12d0
     tcp_rcv_established+0x52c/0x798
    
    Fixes: 84c61fe1a75b ("tls: rx: do not use the standard strparser")
    Signed-off-by: Pengtao He <hept.hept.hept@gmail.com>
    Link: https://patch.msgid.link/20250514132013.17274-1-hept.hept.hept@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: cadence: macb: Fix a possible deadlock in macb_halt_tx. [+ + +]
Author: Mathieu Othacehe <othacehe@gnu.org>
Date:   Fri May 9 14:19:35 2025 +0200

    net: cadence: macb: Fix a possible deadlock in macb_halt_tx.
    
    [ Upstream commit c92d6089d8ad7d4d815ebcedee3f3907b539ff1f ]
    
    There is a situation where after THALT is set high, TGO stays high as
    well. Because jiffies are never updated, as we are in a context with
    interrupts disabled, we never exit that loop and have a deadlock.
    
    That deadlock was noticed on a sama5d4 device that stayed locked for days.
    
    Use retries instead of jiffies so that the timeout really works and we do
    not have a deadlock anymore.
    
    Fixes: e86cd53afc590 ("net/macb: better manage tx errors")
    Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250509121935.16282-1-othacehe@gnu.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: sja1105: discard incoming frames in BR_STATE_LISTENING [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri May 9 14:38:16 2025 +0300

    net: dsa: sja1105: discard incoming frames in BR_STATE_LISTENING
    
    [ Upstream commit 498625a8ab2c8e1c9ab5105744310e8d6952cc01 ]
    
    It has been reported that when under a bridge with stp_state=1, the logs
    get spammed with this message:
    
    [  251.734607] fsl_dpaa2_eth dpni.5 eth0: Couldn't decode source port
    
    Further debugging shows the following info associated with packets:
    source_port=-1, switch_id=-1, vid=-1, vbid=1
    
    In other words, they are data plane packets which are supposed to be
    decoded by dsa_tag_8021q_find_port_by_vbid(), but the latter (correctly)
    refuses to do so, because no switch port is currently in
    BR_STATE_LEARNING or BR_STATE_FORWARDING - so the packet is effectively
    unexpected.
    
    The error goes away after the port progresses to BR_STATE_LEARNING in 15
    seconds (the default forward_time of the bridge), because then,
    dsa_tag_8021q_find_port_by_vbid() can correctly associate the data plane
    packets with a plausible bridge port in a plausible STP state.
    
    Re-reading IEEE 802.1D-1990, I see the following:
    
    "4.4.2 Learning: (...) The Forwarding Process shall discard received
    frames."
    
    IEEE 802.1D-2004 further clarifies:
    
    "DISABLED, BLOCKING, LISTENING, and BROKEN all correspond to the
    DISCARDING port state. While those dot1dStpPortStates serve to
    distinguish reasons for discarding frames, the operation of the
    Forwarding and Learning processes is the same for all of them. (...)
    LISTENING represents a port that the spanning tree algorithm has
    selected to be part of the active topology (computing a Root Port or
    Designated Port role) but is temporarily discarding frames to guard
    against loops or incorrect learning."
    
    Well, this is not what the driver does - instead it sets
    mac[port].ingress = true.
    
    To get rid of the log spam, prevent unexpected data plane packets to
    be received by software by discarding them on ingress in the LISTENING
    state.
    
    In terms of blame attribution: the prints only date back to commit
    d7f9787a763f ("net: dsa: tag_8021q: add support for imprecise RX based
    on the VBID"). However, the settings would permit a LISTENING port to
    forward to a FORWARDING port, and the standard suggests that's not OK.
    
    Fixes: 640f763f98c2 ("net: dsa: sja1105: Add support for Spanning Tree Protocol")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://patch.msgid.link/20250509113816.2221992-1-vladimir.oltean@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mctp: Ensure keys maintain only one ref to corresponding dev [+ + +]
Author: Andrew Jeffery <andrew@codeconstruct.com.au>
Date:   Thu May 8 14:16:00 2025 +0930

    net: mctp: Ensure keys maintain only one ref to corresponding dev
    
    [ Upstream commit e4f349bd6e58051df698b82f94721f18a02a293d ]
    
    mctp_flow_prepare_output() is called in mctp_route_output(), which
    places outbound packets onto a given interface. The packet may represent
    a message fragment, in which case we provoke an unbalanced reference
    count to the underlying device. This causes trouble if we ever attempt
    to remove the interface:
    
        [   48.702195] usb 1-1: USB disconnect, device number 2
        [   58.883056] unregister_netdevice: waiting for mctpusb0 to become free. Usage count = 2
        [   69.022548] unregister_netdevice: waiting for mctpusb0 to become free. Usage count = 2
        [   79.172568] unregister_netdevice: waiting for mctpusb0 to become free. Usage count = 2
        ...
    
    Predicate the invocation of mctp_dev_set_key() in
    mctp_flow_prepare_output() on not already having associated the device
    with the key. It's not yet realistic to uphold the property that the key
    maintains only one device reference earlier in the transmission sequence
    as the route (and therefore the device) may not be known at the time the
    key is associated with the socket.
    
    Fixes: 67737c457281 ("mctp: Pass flow data & flow release events to drivers")
    Acked-by: Jeremy Kerr <jk@codeconstruct.com.au>
    Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
    Link: https://patch.msgid.link/20250508-mctp-dev-refcount-v1-1-d4f965c67bb5@codeconstruct.com.au
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: qede: Initialize qede_ll_ops with designated initializer [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Wed May 7 21:47:45 2025 +0100

    net: qede: Initialize qede_ll_ops with designated initializer
    
    commit 6b3ab7f2cbfaeb6580709cd8ef4d72cfd01bfde4 upstream.
    
    After a recent change [1] in clang's randstruct implementation to
    randomize structures that only contain function pointers, there is an
    error because qede_ll_ops get randomized but does not use a designated
    initializer for the first member:
    
      drivers/net/ethernet/qlogic/qede/qede_main.c:206:2: error: a randomized struct can only be initialized with a designated initializer
        206 |         {
            |         ^
    
    Explicitly initialize the common member using a designated initializer
    to fix the build.
    
    Cc: stable@vger.kernel.org
    Fixes: 035f7f87b729 ("randstruct: Enable Clang support")
    Link: https://github.com/llvm/llvm-project/commit/04364fb888eea6db9811510607bed4b200bcb082 [1]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://patch.msgid.link/20250507-qede-fix-clang-randstruct-v1-1-5ccc15626fba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net_sched: Flush gso_skb list too during ->change() [+ + +]
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Tue May 6 21:35:58 2025 -0700

    net_sched: Flush gso_skb list too during ->change()
    
    [ Upstream commit 2d3cbfd6d54a2c39ce3244f33f85c595844bd7b8 ]
    
    Previously, when reducing a qdisc's limit via the ->change() operation, only
    the main skb queue was trimmed, potentially leaving packets in the gso_skb
    list. This could result in NULL pointer dereference when we only check
    sch->limit against sch->q.qlen.
    
    This patch introduces a new helper, qdisc_dequeue_internal(), which ensures
    both the gso_skb list and the main queue are properly flushed when trimming
    excess packets. All relevant qdiscs (codel, fq, fq_codel, fq_pie, hhf, pie)
    are updated to use this helper in their ->change() routines.
    
    Fixes: 76e3cc126bb2 ("codel: Controlled Delay AQM")
    Fixes: 4b549a2ef4be ("fq_codel: Fair Queue Codel AQM")
    Fixes: afe4fd062416 ("pkt_sched: fq: Fair Queue packet scheduler")
    Fixes: ec97ecf1ebe4 ("net: sched: add Flow Queue PIE packet scheduler")
    Fixes: 10239edf86f1 ("net-qdisc-hhf: Heavy-Hitter Filter (HHF) qdisc")
    Fixes: d4b36210c2e6 ("net: pkt_sched: PIE AQM scheme")
    Reported-by: Will <willsroot@protonmail.com>
    Reported-by: Savy <savy@syst3mfailure.io>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: nf_tables: do not defer rule destruction via call_rcu [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Tue May 20 01:34:38 2025 +0200

    netfilter: nf_tables: do not defer rule destruction via call_rcu
    
    commit b04df3da1b5c6f6dc7cdccc37941740c078c4043 upstream.
    
    nf_tables_chain_destroy can sleep, it can't be used from call_rcu
    callbacks.
    
    Moreover, nf_tables_rule_release() is only safe for error unwinding,
    while transaction mutex is held and the to-be-desroyed rule was not
    exposed to either dataplane or dumps, as it deactives+frees without
    the required synchronize_rcu() in-between.
    
    nft_rule_expr_deactivate() callbacks will change ->use counters
    of other chains/sets, see e.g. nft_lookup .deactivate callback, these
    must be serialized via transaction mutex.
    
    Also add a few lockdep asserts to make this more explicit.
    
    Calling synchronize_rcu() isn't ideal, but fixing this without is hard
    and way more intrusive.  As-is, we can get:
    
    WARNING: .. net/netfilter/nf_tables_api.c:5515 nft_set_destroy+0x..
    Workqueue: events nf_tables_trans_destroy_work
    RIP: 0010:nft_set_destroy+0x3fe/0x5c0
    Call Trace:
     <TASK>
     nf_tables_trans_destroy_work+0x6b7/0xad0
     process_one_work+0x64a/0xce0
     worker_thread+0x613/0x10d0
    
    In case the synchronize_rcu becomes an issue, we can explore alternatives.
    
    One way would be to allocate nft_trans_rule objects + one nft_trans_chain
    object, deactivate the rules + the chain and then defer the freeing to the
    nft destroy workqueue.  We'd still need to keep the synchronize_rcu path as
    a fallback to handle -ENOMEM corner cases though.
    
    Reported-by: syzbot+b26935466701e56cfdc2@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/67478d92.050a0220.253251.0062.GAE@google.com/T/
    Fixes: c03d278fdf35 ("netfilter: nf_tables: wait for rcu grace period on net_device removal")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

netfilter: nf_tables: pass nft_chain to destroy function, not nft_ctx [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Tue May 20 01:34:36 2025 +0200

    netfilter: nf_tables: pass nft_chain to destroy function, not nft_ctx
    
    commit 8965d42bcf54d42cbc72fe34a9d0ec3f8527debd upstream.
    
    It would be better to not store nft_ctx inside nft_trans object,
    the netlink ctx strucutre is huge and most of its information is
    never needed in places that use trans->ctx.
    
    Avoid/reduce its usage if possible, no runtime behaviour change
    intended.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: c03d278fdf35 ("netfilter: nf_tables: wait for rcu grace period on net_device removal")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

netfilter: nf_tables: wait for rcu grace period on net_device removal [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue May 20 01:34:37 2025 +0200

    netfilter: nf_tables: wait for rcu grace period on net_device removal
    
    commit c03d278fdf35e73dd0ec543b9b556876b9d9a8dc upstream.
    
    8c873e219970 ("netfilter: core: free hooks with call_rcu") removed
    synchronize_net() call when unregistering basechain hook, however,
    net_device removal event handler for the NFPROTO_NETDEV was not updated
    to wait for RCU grace period.
    
    Note that 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks
    on net_device removal") does not remove basechain rules on device
    removal, I was hinted to remove rules on net_device removal later, see
    5ebe0b0eec9d ("netfilter: nf_tables: destroy basechain and rules on
    netdevice removal").
    
    Although NETDEV_UNREGISTER event is guaranteed to be handled after
    synchronize_net() call, this path needs to wait for rcu grace period via
    rcu callback to release basechain hooks if netns is alive because an
    ongoing netlink dump could be in progress (sockets hold a reference on
    the netns).
    
    Note that nf_tables_pre_exit_net() unregisters and releases basechain
    hooks but it is possible to see NETDEV_UNREGISTER at a later stage in
    the netns exit path, eg. veth peer device in another netns:
    
     cleanup_net()
      default_device_exit_batch()
       unregister_netdevice_many_notify()
        notifier_call_chain()
         nf_tables_netdev_event()
          __nft_release_basechain()
    
    In this particular case, same rule of thumb applies: if netns is alive,
    then wait for rcu grace period because netlink dump in the other netns
    could be in progress. Otherwise, if the other netns is going away then
    no netlink dump can be in progress and basechain hooks can be released
    inmediately.
    
    While at it, turn WARN_ON() into WARN_ON_ONCE() for the basechain
    validation, which should not ever happen.
    
    Fixes: 835b803377f5 ("netfilter: nf_tables_netdev: unregister hooks on net_device removal")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfs: handle failure of nfs_get_lock_context in unlock path [+ + +]
Author: Li Lingfeng <lilingfeng3@huawei.com>
Date:   Thu Apr 17 15:25:08 2025 +0800

    nfs: handle failure of nfs_get_lock_context in unlock path
    
    [ Upstream commit c457dc1ec770a22636b473ce5d35614adfe97636 ]
    
    When memory is insufficient, the allocation of nfs_lock_context in
    nfs_get_lock_context() fails and returns -ENOMEM. If we mistakenly treat
    an nfs4_unlockdata structure (whose l_ctx member has been set to -ENOMEM)
    as valid and proceed to execute rpc_run_task(), this will trigger a NULL
    pointer dereference in nfs4_locku_prepare. For example:
    
    BUG: kernel NULL pointer dereference, address: 000000000000000c
    PGD 0 P4D 0
    Oops: Oops: 0000 [#1] SMP PTI
    CPU: 15 UID: 0 PID: 12 Comm: kworker/u64:0 Not tainted 6.15.0-rc2-dirty #60
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-2.fc40
    Workqueue: rpciod rpc_async_schedule
    RIP: 0010:nfs4_locku_prepare+0x35/0xc2
    Code: 89 f2 48 89 fd 48 c7 c7 68 69 ef b5 53 48 8b 8e 90 00 00 00 48 89 f3
    RSP: 0018:ffffbbafc006bdb8 EFLAGS: 00010246
    RAX: 000000000000004b RBX: ffff9b964fc1fa00 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: fffffffffffffff4 RDI: ffff9ba53fddbf40
    RBP: ffff9ba539934000 R08: 0000000000000000 R09: ffffbbafc006bc38
    R10: ffffffffb6b689c8 R11: 0000000000000003 R12: ffff9ba539934030
    R13: 0000000000000001 R14: 0000000004248060 R15: ffffffffb56d1c30
    FS: 0000000000000000(0000) GS:ffff9ba5881f0000(0000) knlGS:00000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000000000c CR3: 000000093f244000 CR4: 00000000000006f0
    Call Trace:
     <TASK>
     __rpc_execute+0xbc/0x480
     rpc_async_schedule+0x2f/0x40
     process_one_work+0x232/0x5d0
     worker_thread+0x1da/0x3d0
     ? __pfx_worker_thread+0x10/0x10
     kthread+0x10d/0x240
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x34/0x50
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1a/0x30
     </TASK>
    Modules linked in:
    CR2: 000000000000000c
    ---[ end trace 0000000000000000 ]---
    
    Free the allocated nfs4_unlockdata when nfs_get_lock_context() fails and
    return NULL to terminate subsequent rpc_run_task, preventing NULL pointer
    dereference.
    
    Fixes: f30cb757f680 ("NFS: Always wait for I/O completion before unlock")
    Signed-off-by: Li Lingfeng <lilingfeng3@huawei.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Link: https://lore.kernel.org/r/20250417072508.3850532-1-lilingfeng3@huawei.com
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFSv4/pnfs: Reset the layout state after a layoutreturn [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sat May 10 10:50:13 2025 -0400

    NFSv4/pnfs: Reset the layout state after a layoutreturn
    
    [ Upstream commit 6d6d7f91cc8c111d40416ac9240a3bb9396c5235 ]
    
    If there are still layout segments in the layout plh_return_lsegs list
    after a layout return, we should be resetting the state to ensure they
    eventually get returned as well.
    
    Fixes: 68f744797edd ("pNFS: Do not free layout segments that are marked for return")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme-pci: acquire cq_poll_lock in nvme_poll_irqdisable [+ + +]
Author: Keith Busch <kbusch@kernel.org>
Date:   Thu May 8 16:57:06 2025 +0200

    nvme-pci: acquire cq_poll_lock in nvme_poll_irqdisable
    
    [ Upstream commit 3d8932133dcecbd9bef1559533c1089601006f45 ]
    
    We need to lock this queue for that condition because the timeout work
    executes per-namespace and can poll the poll CQ.
    
    Reported-by: Hannes Reinecke <hare@kernel.org>
    Closes: https://lore.kernel.org/all/20240902130728.1999-1-hare@kernel.org/
    Fixes: a0fa9647a54e ("NVMe: add blk polling support")
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Daniel Wagner <wagi@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nvme-pci: make nvme_pci_npages_prp() __always_inline [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Tue May 6 20:35:40 2025 -0700

    nvme-pci: make nvme_pci_npages_prp() __always_inline
    
    [ Upstream commit 40696426b8c8c4f13cf6ac52f0470eed144be4b2 ]
    
    The only reason nvme_pci_npages_prp() could be used as a compile-time
    known result in BUILD_BUG_ON() is because the compiler was always choosing
    to inline the function. Under special circumstances (sanitizer coverage
    functions disabled for __init functions on ARCH=um), the compiler decided
    to stop inlining it:
    
       drivers/nvme/host/pci.c: In function 'nvme_init':
       include/linux/compiler_types.h:557:45: error: call to '__compiletime_assert_678' declared with attribute error: BUILD_BUG_ON failed: nvme_pci_npages_prp() > NVME_MAX_NR_ALLOCATIONS
         557 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
             |                                             ^
       include/linux/compiler_types.h:538:25: note: in definition of macro '__compiletime_assert'
         538 |                         prefix ## suffix();                             \
             |                         ^~~~~~
       include/linux/compiler_types.h:557:9: note: in expansion of macro '_compiletime_assert'
         557 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
             |         ^~~~~~~~~~~~~~~~~~~
       include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
          39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
             |                                     ^~~~~~~~~~~~~~~~~~
       include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
          50 |         BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
             |         ^~~~~~~~~~~~~~~~
       drivers/nvme/host/pci.c:3804:9: note: in expansion of macro 'BUILD_BUG_ON'
        3804 |         BUILD_BUG_ON(nvme_pci_npages_prp() > NVME_MAX_NR_ALLOCATIONS);
             |         ^~~~~~~~~~~~
    
    Force it to be __always_inline to make sure it is always available for
    use with BUILD_BUG_ON().
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202505061846.12FMyRjj-lkp@intel.com/
    Fixes: c372cdd1efdf ("nvme-pci: iod npages fits in s8")
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
octeontx2-pf: macsec: Fix incorrect max transmit size in TX secy [+ + +]
Author: Subbaraya Sundeep <sbhatta@marvell.com>
Date:   Mon May 12 18:12:36 2025 +0530

    octeontx2-pf: macsec: Fix incorrect max transmit size in TX secy
    
    [ Upstream commit 865ab2461375e3a5a2526f91f9a9f17b8931bc9e ]
    
    MASCEC hardware block has a field called maximum transmit size for
    TX secy. Max packet size going out of MCS block has be programmed
    taking into account full packet size which has L2 header,SecTag
    and ICV. MACSEC offload driver is configuring max transmit size as
    macsec interface MTU which is incorrect. Say with 1500 MTU of real
    device, macsec interface created on top of real device will have MTU of
    1468(1500 - (SecTag + ICV)). This is causing packets from macsec
    interface of size greater than or equal to 1468 are not getting
    transmitted out because driver programmed max transmit size as 1468
    instead of 1514(1500 + ETH_HDR_LEN).
    
    Fixes: c54ffc73601c ("octeontx2-pf: mcs: Introduce MACSEC hardware offloading")
    Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/1747053756-4529-1-git-send-email-sbhatta@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
phy: Fix error handling in tegra_xusb_port_init [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Mon Mar 3 15:27:39 2025 +0800

    phy: Fix error handling in tegra_xusb_port_init
    
    commit b2ea5f49580c0762d17d80d8083cb89bc3acf74f upstream.
    
    If device_add() fails, do not use device_unregister() for error
    handling. device_unregister() consists two functions: device_del() and
    put_device(). device_unregister() should only be called after
    device_add() succeeded because device_del() undoes what device_add()
    does if successful. Change device_unregister() to put_device() call
    before returning from the function.
    
    As comment of device_add() says, 'if device_add() succeeds, you should
    call device_del() when you want to get rid of it. If device_add() has
    not succeeded, use only put_device() to drop the reference count'.
    
    Found by code review.
    
    Cc: stable@vger.kernel.org
    Fixes: 53d2a715c240 ("phy: Add Tegra XUSB pad controller support")
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Link: https://lore.kernel.org/r/20250303072739.3874987-1-make24@iscas.ac.cn
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: renesas: rcar-gen3-usb2: Fix role detection on unbind/bind [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Wed May 7 15:50:28 2025 +0300

    phy: renesas: rcar-gen3-usb2: Fix role detection on unbind/bind
    
    commit 54c4c58713aaff76c2422ff5750e557ab3b100d7 upstream.
    
    It has been observed on the Renesas RZ/G3S SoC that unbinding and binding
    the PHY driver leads to role autodetection failures. This issue occurs when
    PHY 3 is the first initialized PHY. PHY 3 does not have an interrupt
    associated with the USB2_INT_ENABLE register (as
    rcar_gen3_int_enable[3] = 0). As a result, rcar_gen3_init_otg() is called
    to initialize OTG without enabling PHY interrupts.
    
    To resolve this, add rcar_gen3_is_any_otg_rphy_initialized() and call it in
    role_store(), role_show(), and rcar_gen3_init_otg(). At the same time,
    rcar_gen3_init_otg() is only called when initialization for a PHY with
    interrupt bits is in progress. As a result, the
    struct rcar_gen3_phy::otg_initialized is no longer needed.
    
    Fixes: 549b6b55b005 ("phy: renesas: rcar-gen3-usb2: enable/disable independent irqs")
    Cc: stable@vger.kernel.org
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250507125032.565017-2-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

phy: renesas: rcar-gen3-usb2: Set timing registers only once [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Wed May 7 15:50:32 2025 +0300

    phy: renesas: rcar-gen3-usb2: Set timing registers only once
    
    commit 86e70849f4b2b4597ac9f7c7931f2a363774be25 upstream.
    
    phy-rcar-gen3-usb2 driver exports 4 PHYs. The timing registers are common
    to all PHYs. There is no need to set them every time a PHY is initialized.
    Set timing register only when the 1st PHY is initialized.
    
    Fixes: f3b5a8d9b50d ("phy: rcar-gen3-usb2: Add R-Car Gen3 USB2 PHY driver")
    Cc: stable@vger.kernel.org
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250507125032.565017-6-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled it [+ + +]
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Date:   Mon Jan 6 18:40:34 2025 +0100

    platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled it
    
    commit dd410d784402c5775f66faf8b624e85e41c38aaf upstream.
    
    Wakeup for IRQ1 should be disabled only in cases where i8042 had
    actually enabled it, otherwise "wake_depth" for this IRQ will try to
    drop below zero and there will be an unpleasant WARN() logged:
    
    kernel: atkbd serio0: Disabling IRQ1 wakeup source to avoid platform firmware bug
    kernel: ------------[ cut here ]------------
    kernel: Unbalanced IRQ 1 wake disable
    kernel: WARNING: CPU: 10 PID: 6431 at kernel/irq/manage.c:920 irq_set_irq_wake+0x147/0x1a0
    
    The PMC driver uses DEFINE_SIMPLE_DEV_PM_OPS() to define its dev_pm_ops
    which sets amd_pmc_suspend_handler() to the .suspend, .freeze, and
    .poweroff handlers. i8042_pm_suspend(), however, is only set as
    the .suspend handler.
    
    Fix the issue by call PMC suspend handler only from the same set of
    dev_pm_ops handlers as i8042_pm_suspend(), which currently means just
    the .suspend handler.
    
    To reproduce this issue try hibernating (S4) the machine after a fresh boot
    without putting it into s2idle first.
    
    Fixes: 8e60615e8932 ("platform/x86/amd: pmc: Disable IRQ1 wakeup for RN/CZN")
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
    Link: https://lore.kernel.org/r/c8f28c002ca3c66fbeeb850904a1f43118e17200.1736184606.git.mail@maciej.szmigiero.name
    [ij: edited the commit message.]
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Zhaoyang Li <lizy04@hust.edu.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86: asus-wmi: Fix wlan_ctrl_by_user detection [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu May 1 15:17:02 2025 +0200

    platform/x86: asus-wmi: Fix wlan_ctrl_by_user detection
    
    [ Upstream commit bfcfe6d335a967f8ea0c1980960e6f0205b5de6e ]
    
    The wlan_ctrl_by_user detection was introduced by commit a50bd128f28c
    ("asus-wmi: record wlan status while controlled by userapp").
    
    Quoting from that commit's commit message:
    
    """
    When you call WMIMethod(DSTS, 0x00010011) to get WLAN status, it may return
    
    (1) 0x00050001 (On)
    (2) 0x00050000 (Off)
    (3) 0x00030001 (On)
    (4) 0x00030000 (Off)
    (5) 0x00000002 (Unknown)
    
    (1), (2) means that the model has hardware GPIO for WLAN, you can call
    WMIMethod(DEVS, 0x00010011, 1 or 0) to turn WLAN on/off.
    (3), (4) means that the model doesn’t have hardware GPIO, you need to use
    API or driver library to turn WLAN on/off, and call
    WMIMethod(DEVS, 0x00010012, 1 or 0) to set WLAN LED status.
    After you set WLAN LED status, you can see the WLAN status is changed with
    WMIMethod(DSTS, 0x00010011). Because the status is recorded lastly
    (ex: Windows), you can use it for synchronization.
    (5) means that the model doesn’t have WLAN device.
    
    WLAN is the ONLY special case with upper rule.
    """
    
    The wlan_ctrl_by_user flag should be set on 0x0003000? ((3), (4) above)
    return values, but the flag mistakenly also gets set on laptops with
    0x0005000? ((1), (2)) return values. This is causing rfkill problems on
    laptops where 0x0005000? is returned.
    
    Fix the check to only set the wlan_ctrl_by_user flag for 0x0003000?
    return values.
    
    Fixes: a50bd128f28c ("asus-wmi: record wlan status while controlled by userapp")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219786
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Armin Wolf <W_Armin@gmx.de>
    Link: https://lore.kernel.org/r/20250501131702.103360-2-hdegoede@redhat.com
    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>

 
qlcnic: fix memory leak in qlcnic_sriov_channel_cfg_cmd() [+ + +]
Author: Abdun Nihaal <abdun.nihaal@gmail.com>
Date:   Mon May 12 10:18:27 2025 +0530

    qlcnic: fix memory leak in qlcnic_sriov_channel_cfg_cmd()
    
    [ Upstream commit 9d8a99c5a7c7f4f7eca2c168a4ec254409670035 ]
    
    In one of the error paths in qlcnic_sriov_channel_cfg_cmd(), the memory
    allocated in qlcnic_sriov_alloc_bc_mbx_args() for mailbox arguments is
    not freed. Fix that by jumping to the error path that frees them, by
    calling qlcnic_free_mbx_args(). This was found using static analysis.
    
    Fixes: f197a7aa6288 ("qlcnic: VF-PF communication channel implementation")
    Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250512044829.36400-1-abdun.nihaal@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rxe: Fix slab-use-after-free Read in rxe_queue_cleanup bug [+ + +]
Author: Zhu Yanjun <yanjun.zhu@linux.dev>
Date:   Sat Apr 12 09:57:14 2025 +0200

    RDMA/rxe: Fix slab-use-after-free Read in rxe_queue_cleanup bug
    
    [ Upstream commit f81b33582f9339d2dc17c69b92040d3650bb4bae ]
    
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x7d/0xa0 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:378 [inline]
     print_report+0xcf/0x610 mm/kasan/report.c:489
     kasan_report+0xb5/0xe0 mm/kasan/report.c:602
     rxe_queue_cleanup+0xd0/0xe0 drivers/infiniband/sw/rxe/rxe_queue.c:195
     rxe_cq_cleanup+0x3f/0x50 drivers/infiniband/sw/rxe/rxe_cq.c:132
     __rxe_cleanup+0x168/0x300 drivers/infiniband/sw/rxe/rxe_pool.c:232
     rxe_create_cq+0x22e/0x3a0 drivers/infiniband/sw/rxe/rxe_verbs.c:1109
     create_cq+0x658/0xb90 drivers/infiniband/core/uverbs_cmd.c:1052
     ib_uverbs_create_cq+0xc7/0x120 drivers/infiniband/core/uverbs_cmd.c:1095
     ib_uverbs_write+0x969/0xc90 drivers/infiniband/core/uverbs_main.c:679
     vfs_write fs/read_write.c:677 [inline]
     vfs_write+0x26a/0xcc0 fs/read_write.c:659
     ksys_write+0x1b8/0x200 fs/read_write.c:731
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xaa/0x1b0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    In the function rxe_create_cq, when rxe_cq_from_init fails, the function
    rxe_cleanup will be called to handle the allocated resources. In fact,
    some memory resources have already been freed in the function
    rxe_cq_from_init. Thus, this problem will occur.
    
    The solution is to let rxe_cleanup do all the work.
    
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Link: https://paste.ubuntu.com/p/tJgC42wDf6/
    Tested-by: liuyi <liuy22@mails.tsinghua.edu.cn>
    Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Link: https://patch.msgid.link/20250412075714.3257358-1-yanjun.zhu@linux.dev
    Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
regulator: max20086: fix invalid memory access [+ + +]
Author: Cosmin Tanislav <demonsingur@gmail.com>
Date:   Thu May 8 09:49:43 2025 +0300

    regulator: max20086: fix invalid memory access
    
    [ Upstream commit 6b0cd72757c69bc2d45da42b41023e288d02e772 ]
    
    max20086_parse_regulators_dt() calls of_regulator_match() using an
    array of struct of_regulator_match allocated on the stack for the
    matches argument.
    
    of_regulator_match() calls devm_of_regulator_put_matches(), which calls
    devres_alloc() to allocate a struct devm_of_regulator_matches which will
    be de-allocated using devm_of_regulator_put_matches().
    
    struct devm_of_regulator_matches is populated with the stack allocated
    matches array.
    
    If the device fails to probe, devm_of_regulator_put_matches() will be
    called and will try to call of_node_put() on that stack pointer,
    generating the following dmesg entries:
    
    max20086 6-0028: Failed to read DEVICE_ID reg: -121
    kobject: '\xc0$\xa5\x03' (000000002cebcb7a): is not initialized, yet
    kobject_put() is being called.
    
    Followed by a stack trace matching the call flow described above.
    
    Switch to allocating the matches array using devm_kcalloc() to
    avoid accessing the stack pointer long after it's out of scope.
    
    This also has the advantage of allowing multiple max20086 to probe
    without overriding the data stored inside the global of_regulator_match.
    
    Fixes: bfff546aae50 ("regulator: Add MAX20086-MAX20089 driver")
    Signed-off-by: Cosmin Tanislav <demonsingur@gmail.com>
    Link: https://patch.msgid.link/20250508064947.2567255-1-demonsingur@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "drm/amd: Stop evicting resources on APUs in suspend" [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu May 1 13:00:16 2025 -0400

    Revert "drm/amd: Stop evicting resources on APUs in suspend"
    
    [ Upstream commit d0ce1aaa8531a4a4707711cab5721374751c51b0 ]
    
    This reverts commit 3a9626c816db901def438dc2513622e281186d39.
    
    This breaks S4 because we end up setting the s3/s0ix flags
    even when we are entering s4 since prepare is used by both
    flows.  The causes both the S3/s0ix and s4 flags to be set
    which breaks several checks in the driver which assume they
    are mutually exclusive.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3634
    Cc: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit ce8f7d95899c2869b47ea6ce0b3e5bf304b2fff4)
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
riscv: mm: Fix the out of bound issue of vmemmap address [+ + +]
Author: Xu Lu <luxu.kernel@bytedance.com>
Date:   Mon Dec 9 20:26:17 2024 +0800

    riscv: mm: Fix the out of bound issue of vmemmap address
    
    commit f754f27e98f88428aaf6be6e00f5cbce97f62d4b upstream.
    
    In sparse vmemmap model, the virtual address of vmemmap is calculated as:
    ((struct page *)VMEMMAP_START - (phys_ram_base >> PAGE_SHIFT)).
    And the struct page's va can be calculated with an offset:
    (vmemmap + (pfn)).
    
    However, when initializing struct pages, kernel actually starts from the
    first page from the same section that phys_ram_base belongs to. If the
    first page's physical address is not (phys_ram_base >> PAGE_SHIFT), then
    we get an va below VMEMMAP_START when calculating va for it's struct page.
    
    For example, if phys_ram_base starts from 0x82000000 with pfn 0x82000, the
    first page in the same section is actually pfn 0x80000. During
    init_unavailable_range(), we will initialize struct page for pfn 0x80000
    with virtual address ((struct page *)VMEMMAP_START - 0x2000), which is
    below VMEMMAP_START as well as PCI_IO_END.
    
    This commit fixes this bug by introducing a new variable
    'vmemmap_start_pfn' which is aligned with memory section size and using
    it to calculate vmemmap address instead of phys_ram_base.
    
    Fixes: a11dd49dcb93 ("riscv: Sparse-Memory/vmemmap out-of-bounds fix")
    Signed-off-by: Xu Lu <luxu.kernel@bytedance.com>
    Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Tested-by: Björn Töpel <bjorn@rivosinc.com>
    Reviewed-by: Björn Töpel <bjorn@rivosinc.com>
    Link: https://lore.kernel.org/r/20241209122617.53341-1-luxu.kernel@bytedance.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Zhaoyang Li <lizy04@hust.edu.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: sd_zbc: block: Respect bio vector limits for REPORT ZONES buffer [+ + +]
Author: Steve Siwinski <ssiwinski@atto.com>
Date:   Thu May 8 16:01:22 2025 -0400

    scsi: sd_zbc: block: Respect bio vector limits for REPORT ZONES buffer
    
    commit e8007fad5457ea547ca63bb011fdb03213571c7e upstream.
    
    The REPORT ZONES buffer size is currently limited by the HBA's maximum
    segment count to ensure the buffer can be mapped. However, the block
    layer further limits the number of iovec entries to 1024 when allocating
    a bio.
    
    To avoid allocation of buffers too large to be mapped, further restrict
    the maximum buffer size to BIO_MAX_INLINE_VECS.
    
    Replace the UIO_MAXIOV symbolic name with the more contextually
    appropriate BIO_MAX_INLINE_VECS.
    
    Fixes: b091ac616846 ("sd_zbc: Fix report zones buffer allocation")
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve Siwinski <ssiwinski@atto.com>
    Link: https://lore.kernel.org/r/20250508200122.243129-1-ssiwinski@atto.com
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sctp: add mutual exclusion in proc_sctp_do_udp_port() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Mar 31 09:15:32 2025 +0000

    sctp: add mutual exclusion in proc_sctp_do_udp_port()
    
    commit 10206302af856791fbcc27a33ed3c3eb09b2793d upstream.
    
    We must serialize calls to sctp_udp_sock_stop() and sctp_udp_sock_start()
    or risk a crash as syzbot reported:
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc000000000d: 0000 [#1] SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000068-0x000000000000006f]
    CPU: 1 UID: 0 PID: 6551 Comm: syz.1.44 Not tainted 6.14.0-syzkaller-g7f2ff7b62617 #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
     RIP: 0010:kernel_sock_shutdown+0x47/0x70 net/socket.c:3653
    Call Trace:
     <TASK>
      udp_tunnel_sock_release+0x68/0x80 net/ipv4/udp_tunnel_core.c:181
      sctp_udp_sock_stop+0x71/0x160 net/sctp/protocol.c:930
      proc_sctp_do_udp_port+0x264/0x450 net/sctp/sysctl.c:553
      proc_sys_call_handler+0x3d0/0x5b0 fs/proc/proc_sysctl.c:601
      iter_file_splice_write+0x91c/0x1150 fs/splice.c:738
      do_splice_from fs/splice.c:935 [inline]
      direct_splice_actor+0x18f/0x6c0 fs/splice.c:1158
      splice_direct_to_actor+0x342/0xa30 fs/splice.c:1102
      do_splice_direct_actor fs/splice.c:1201 [inline]
      do_splice_direct+0x174/0x240 fs/splice.c:1227
      do_sendfile+0xafd/0xe50 fs/read_write.c:1368
      __do_sys_sendfile64 fs/read_write.c:1429 [inline]
      __se_sys_sendfile64 fs/read_write.c:1415 [inline]
      __x64_sys_sendfile64+0x1d8/0x220 fs/read_write.c:1415
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
    
    Fixes: 046c052b475e ("sctp: enable udp tunneling socks")
    Reported-by: syzbot+fae49d997eb56fa7c74d@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/67ea5c01.050a0220.1547ec.012b.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Xin Long <lucien.xin@gmail.com>
    Link: https://patch.msgid.link/20250331091532.224982-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [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>

 
selftests/exec: Build both static and non-static load_address tests [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Wed May 8 10:31:46 2024 -0700

    selftests/exec: Build both static and non-static load_address tests
    
    [ Upstream commit b57a2907c9d96c56494ef25f8ec821cd0b355dd6 ]
    
    After commit 4d1cd3b2c5c1 ("tools/testing/selftests/exec: fix link
    error"), the load address alignment tests tried to build statically.
    This was silently ignored in some cases. However, after attempting to
    further fix the build by switching to "-static-pie", the test started
    failing. This appears to be due to non-PT_INTERP ET_DYN execs ("static
    PIE") not doing alignment correctly, which remains unfixed[1]. See commit
    aeb7923733d1 ("revert "fs/binfmt_elf: use PT_LOAD p_align values for
    static PIE"") for more details.
    
    Provide rules to build both static and non-static PIE binaries, improve
    debug reporting, and perform several test steps instead of a single
    all-or-nothing test. However, do not actually enable static-pie tests;
    alignment specification is only supported for ET_DYN with PT_INTERP
    ("regular PIE").
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215275 [1]
    Link: https://lore.kernel.org/r/20240508173149.677910-1-keescook@chromium.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests/exec: load_address: conform test to TAP format output [+ + +]
Author: Muhammad Usama Anjum <usama.anjum@collabora.com>
Date:   Mon Mar 4 20:59:24 2024 +0500

    selftests/exec: load_address: conform test to TAP format output
    
    [ Upstream commit c4095067736b7ed50316a2bc7c9577941e87ad45 ]
    
    Conform the layout, informational and status messages to TAP. No
    functional change is intended other than the layout of output messages.
    
    Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Link: https://lore.kernel.org/r/20240304155928.1818928-2-usama.anjum@collabora.com
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Stable-dep-of: 11854fe263eb ("binfmt_elf: Move brk for static PIE even if ASLR disabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/mm: compaction_test: support platform with huge mount of memory [+ + +]
Author: Feng Tang <feng.tang@linux.alibaba.com>
Date:   Wed Apr 23 18:36:45 2025 +0800

    selftests/mm: compaction_test: support platform with huge mount of memory
    
    commit ab00ddd802f80e31fc9639c652d736fe3913feae upstream.
    
    When running mm selftest to verify mm patches, 'compaction_test' case
    failed on an x86 server with 1TB memory.  And the root cause is that it
    has too much free memory than what the test supports.
    
    The test case tries to allocate 100000 huge pages, which is about 200 GB
    for that x86 server, and when it succeeds, it expects it's large than 1/3
    of 80% of the free memory in system.  This logic only works for platform
    with 750 GB ( 200 / (1/3) / 80% ) or less free memory, and may raise false
    alarm for others.
    
    Fix it by changing the fixed page number to self-adjustable number
    according to the real number of free memory.
    
    Link: https://lkml.kernel.org/r/20250423103645.2758-1-feng.tang@linux.alibaba.com
    Fixes: bd67d5c15cc1 ("Test compaction of mlocked memory")
    Signed-off-by: Feng Tang <feng.tang@linux.alibaba.com>
    Acked-by: Dev Jain <dev.jain@arm.com>
    Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
    Tested-by: Baolin Wang <baolin.wang@inux.alibaba.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Sri Jayaramappa <sjayaram@akamai.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: fix memory leak during error handling for POSIX mkdir [+ + +]
Author: Jethro Donaldson <devel@jro.nz>
Date:   Thu May 15 01:23:23 2025 +1200

    smb: client: fix memory leak during error handling for POSIX mkdir
    
    commit 1fe4a44b7fa3955bcb7b4067c07b778fe90d8ee7 upstream.
    
    The response buffer for the CREATE request handled by smb311_posix_mkdir()
    is leaked on the error path (goto err_free_rsp_buf) because the structure
    pointer *rsp passed to free_rsp_buf() is not assigned until *after* the
    error condition is checked.
    
    As *rsp is initialised to NULL, free_rsp_buf() becomes a no-op and the leak
    is instead reported by __kmem_cache_shutdown() upon subsequent rmmod of
    cifs.ko if (and only if) the error path has been hit.
    
    Pass rsp_iov.iov_base to free_rsp_buf() instead, similar to the code in
    other functions in smb2pdu.c for which *rsp is assigned late.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jethro Donaldson <devel@jro.nz>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
spi: cadence-qspi: fix pointer reference in runtime PM hooks [+ + +]
Author: Théo Lebrun <theo.lebrun@bootlin.com>
Date:   Thu Feb 22 11:12:29 2024 +0100

    spi: cadence-qspi: fix pointer reference in runtime PM hooks
    
    commit 32ce3bb57b6b402de2aec1012511e7ac4e7449dc upstream.
    
    dev_get_drvdata() gets used to acquire the pointer to cqspi and the SPI
    controller. Neither embed the other; this lead to memory corruption.
    
    On a given platform (Mobileye EyeQ5) the memory corruption is hidden
    inside cqspi->f_pdata. Also, this uninitialised memory is used as a
    mutex (ctlr->bus_lock_mutex) by spi_controller_suspend().
    
    Fixes: 2087e85bb66e ("spi: cadence-quadspi: fix suspend-resume implementations")
    Reviewed-by: Dhruva Gole <d-gole@ti.com>
    Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
    Link: https://msgid.link/r/20240222-cdns-qspi-pm-fix-v4-1-6b6af8bcbf59@bootlin.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Zhaoyang Li <lizy04@hust.edu.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

spi: loopback-test: Do not split 1024-byte hexdumps [+ + +]
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri May 2 13:10:35 2025 +0200

    spi: loopback-test: Do not split 1024-byte hexdumps
    
    [ Upstream commit a73fa3690a1f3014d6677e368dce4e70767a6ba2 ]
    
    spi_test_print_hex_dump() prints buffers holding less than 1024 bytes in
    full.  Larger buffers are truncated: only the first 512 and the last 512
    bytes are printed, separated by a truncation message.  The latter is
    confusing in case the buffer holds exactly 1024 bytes, as all data is
    printed anyway.
    
    Fix this by printing buffers holding up to and including 1024 bytes in
    full.
    
    Fixes: 84e0c4e5e2c4ef42 ("spi: add loopback test driver to allow for spi_master regression tests")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://patch.msgid.link/37ee1bc90c6554c9347040adabf04188c8f704aa.1746184171.git.geert+renesas@glider.be
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tpm: tis: Double the timeout B to 4s [+ + +]
Author: Michal Suchanek <msuchanek@suse.de>
Date:   Fri Apr 4 10:23:14 2025 +0200

    tpm: tis: Double the timeout B to 4s
    
    [ Upstream commit 2f661f71fda1fc0c42b7746ca5b7da529eb6b5be ]
    
    With some Infineon chips the timeouts in tpm_tis_send_data (both B and
    C) can reach up to about 2250 ms.
    
    Timeout C is retried since
    commit de9e33df7762 ("tpm, tpm_tis: Workaround failed command reception on Infineon devices")
    
    Timeout B still needs to be extended.
    
    The problem is most commonly encountered with context related operation
    such as load context/save context. These are issued directly by the
    kernel, and there is no retry logic for them.
    
    When a filesystem is set up to use the TPM for unlocking the boot fails,
    and restarting the userspace service is ineffective. This is likely
    because ignoring a load context/save context result puts the real TPM
    state and the TPM state expected by the kernel out of sync.
    
    Chips known to be affected:
    tpm_tis IFX1522:00: 2.0 TPM (device-id 0x1D, rev-id 54)
    Description: SLB9672
    Firmware Revision: 15.22
    
    tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1B, rev-id 22)
    Firmware Revision: 7.83
    
    tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1A, rev-id 16)
    Firmware Revision: 5.63
    
    Link: https://lore.kernel.org/linux-integrity/Z5pI07m0Muapyu9w@kitsune.suse.cz/
    Signed-off-by: Michal Suchanek <msuchanek@suse.de>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing: probes: Fix a possible race in trace_probe_log APIs [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Sat May 10 12:44:41 2025 +0900

    tracing: probes: Fix a possible race in trace_probe_log APIs
    
    [ Upstream commit fd837de3c9cb1a162c69bc1fb1f438467fe7f2f5 ]
    
    Since the shared trace_probe_log variable can be accessed and
    modified via probe event create operation of kprobe_events,
    uprobe_events, and dynamic_events, it should be protected.
    In the dynamic_events, all operations are serialized by
    `dyn_event_ops_mutex`. But kprobe_events and uprobe_events
    interfaces are not serialized.
    
    To solve this issue, introduces dyn_event_create(), which runs
    create() operation under the mutex, for kprobe_events and
    uprobe_events. This also uses lockdep to check the mutex is
    held when using trace_probe_log* APIs.
    
    Link: https://lore.kernel.org/all/174684868120.551552.3068655787654268804.stgit@devnote2/
    
    Reported-by: Paul Cacheux <paulcacheux@gmail.com>
    Closes: https://lore.kernel.org/all/20250510074456.805a16872b591e2971a4d221@kernel.org/
    Fixes: ab105a4fb894 ("tracing: Use tracing error_log with probe events")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tracing: samples: Initialize trace_array_printk() with the correct function [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Fri May 9 15:26:57 2025 -0400

    tracing: samples: Initialize trace_array_printk() with the correct function
    
    commit 1b0c192c92ea1fe2dcb178f84adf15fe37c3e7c8 upstream.
    
    When using trace_array_printk() on a created instance, the correct
    function to use to initialize it is:
    
      trace_array_init_printk()
    
    Not
    
      trace_printk_init_buffer()
    
    The former is a proper function to use, the latter is for initializing
    trace_printk() and causes the NOTICE banner to be displayed.
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Divya Indi <divya.indi@oracle.com>
    Link: https://lore.kernel.org/20250509152657.0f6744d9@gandalf.local.home
    Fixes: 89ed42495ef4a ("tracing: Sample module to demonstrate kernel access to Ftrace instances.")
    Fixes: 38ce2a9e33db6 ("tracing: Add trace_array_init_printk() to initialize instance trace_printk() buffers")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: typec: altmodes/displayport: create sysfs nodes as driver's default device attribute group [+ + +]
Author: RD Babiera <rdbabiera@google.com>
Date:   Thu Feb 29 00:11:02 2024 +0000

    usb: typec: altmodes/displayport: create sysfs nodes as driver's default device attribute group
    
    commit 165376f6b23e9a779850e750fb2eb06622e5a531 upstream.
    
    The DisplayPort driver's sysfs nodes may be present to the userspace before
    typec_altmode_set_drvdata() completes in dp_altmode_probe. This means that
    a sysfs read can trigger a NULL pointer error by deferencing dp->hpd in
    hpd_show or dp->lock in pin_assignment_show, as dev_get_drvdata() returns
    NULL in those cases.
    
    Remove manual sysfs node creation in favor of adding attribute group as
    default for devices bound to the driver. The ATTRIBUTE_GROUPS() macro is
    not used here otherwise the path to the sysfs nodes is no longer compliant
    with the ABI.
    
    Fixes: 0e3bb7d6894d ("usb: typec: Add driver for DisplayPort alternate mode")
    Cc: stable@vger.kernel.org
    Signed-off-by: RD Babiera <rdbabiera@google.com>
    Link: https://lore.kernel.org/r/20240229001101.3889432-2-rdbabiera@google.com
    [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>

usb: typec: fix pm usage counter imbalance in ucsi_ccg_sync_control() [+ + +]
Author: GONG Ruiqi <gongruiqi1@huawei.com>
Date:   Tue Jan 7 09:57:50 2025 +0800

    usb: typec: fix pm usage counter imbalance in ucsi_ccg_sync_control()
    
    commit b0e525d7a22ea350e75e2aec22e47fcfafa4cacd upstream.
    
    The error handling for the case `con_index == 0` should involve dropping
    the pm usage counter, as ucsi_ccg_sync_control() gets it at the
    beginning. Fix it.
    
    Cc: stable <stable@kernel.org>
    Fixes: e56aac6e5a25 ("usb: typec: fix potential array underflow in ucsi_ccg_sync_control()")
    Signed-off-by: GONG Ruiqi <gongruiqi1@huawei.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20250107015750.2778646-1-gongruiqi1@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [Minor context change fixed.]
    Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
    Signed-off-by: He Zhe <zhe.he@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: fix potential array underflow in ucsi_ccg_sync_control() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Mon Nov 11 14:08:06 2024 +0300

    usb: typec: fix potential array underflow in ucsi_ccg_sync_control()
    
    commit e56aac6e5a25630645607b6856d4b2a17b2311a5 upstream.
    
    The "command" variable can be controlled by the user via debugfs.  The
    worry is that if con_index is zero then "&uc->ucsi->connector[con_index
    - 1]" would be an array underflow.
    
    Fixes: 170a6726d0e2 ("usb: typec: ucsi: add support for separate DP altmode devices")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/c69ef0b3-61b0-4dde-98dd-97b97f81d912@stanley.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [ The function ucsi_ccg_sync_write() is renamed to ucsi_ccg_sync_control()
      in commit 13f2ec3115c8 ("usb: typec: ucsi:simplify command sending API").
      Apply this patch to ucsi_ccg_sync_write() in 6.1.y accordingly. ]
    Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
    Signed-off-by: He Zhe <zhe.he@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: ucsi: displayport: Fix deadlock [+ + +]
Author: Andrei Kuchynski <akuchynski@chromium.org>
Date:   Thu Apr 24 08:44:28 2025 +0000

    usb: typec: ucsi: displayport: Fix deadlock
    
    commit 364618c89d4c57c85e5fc51a2446cd939bf57802 upstream.
    
    This patch introduces the ucsi_con_mutex_lock / ucsi_con_mutex_unlock
    functions to the UCSI driver. ucsi_con_mutex_lock ensures the connector
    mutex is only locked if a connection is established and the partner pointer
    is valid. This resolves a deadlock scenario where
    ucsi_displayport_remove_partner holds con->mutex waiting for
    dp_altmode_work to complete while dp_altmode_work attempts to acquire it.
    
    Cc: stable <stable@kernel.org>
    Fixes: af8622f6a585 ("usb: typec: ucsi: Support for DisplayPort alt mode")
    Signed-off-by: Andrei Kuchynski <akuchynski@chromium.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20250424084429.3220757-2-akuchynski@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: mt76: disable napi on driver removal [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Tue May 6 14:55:39 2025 +0300

    wifi: mt76: disable napi on driver removal
    
    commit 78ab4be549533432d97ea8989d2f00b508fa68d8 upstream.
    
    A warning on driver removal started occurring after commit 9dd05df8403b
    ("net: warn if NAPI instance wasn't shut down"). Disable tx napi before
    deleting it in mt76_dma_cleanup().
    
     WARNING: CPU: 4 PID: 18828 at net/core/dev.c:7288 __netif_napi_del_locked+0xf0/0x100
     CPU: 4 UID: 0 PID: 18828 Comm: modprobe Not tainted 6.15.0-rc4 #4 PREEMPT(lazy)
     Hardware name: ASUS System Product Name/PRIME X670E-PRO WIFI, BIOS 3035 09/05/2024
     RIP: 0010:__netif_napi_del_locked+0xf0/0x100
     Call Trace:
     <TASK>
     mt76_dma_cleanup+0x54/0x2f0 [mt76]
     mt7921_pci_remove+0xd5/0x190 [mt7921e]
     pci_device_remove+0x47/0xc0
     device_release_driver_internal+0x19e/0x200
     driver_detach+0x48/0x90
     bus_remove_driver+0x6d/0xf0
     pci_unregister_driver+0x2e/0xb0
     __do_sys_delete_module.isra.0+0x197/0x2e0
     do_syscall_64+0x7b/0x160
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Tested with mt7921e but the same pattern can be actually applied to other
    mt76 drivers calling mt76_dma_cleanup() during removal. Tx napi is enabled
    in their *_dma_init() functions and only toggled off and on again inside
    their suspend/resume/reset paths. So it should be okay to disable tx
    napi in such a generic way.
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: 2ac515a5d74f ("mt76: mt76x02: use napi polling for tx cleanup")
    Cc: stable@vger.kernel.org
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Tested-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
    Link: https://patch.msgid.link/20250506115540.19045-1-pchelkin@ispras.ru
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/modules: Set VM_FLUSH_RESET_PERMS in module_alloc() [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Sep 15 13:10:44 2022 +0200

    x86/modules: Set VM_FLUSH_RESET_PERMS in module_alloc()
    
    commit 4c4eb3ecc91f4fee6d6bf7cfbc1e21f2e38d19ff upstream.
    
    Instead of resetting permissions all over the place when freeing module
    memory tell the vmalloc code to do so. Avoids the exercise for the next
    upcoming user.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20220915111143.406703869@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>