Changelog in Linux kernel 6.15.7

 
ALSA: ad1816a: Fix potential NULL pointer deref in snd_card_ad1816a_pnp() [+ + +]
Author: Thorsten Blum <[email protected]>
Date:   Thu Jul 3 22:06:13 2025 +0200

    ALSA: ad1816a: Fix potential NULL pointer deref in snd_card_ad1816a_pnp()
    
    commit 043faef334a1f3d96ae88e1b7618bfa2b4946388 upstream.
    
    Use pr_warn() instead of dev_warn() when 'pdev' is NULL to avoid a
    potential NULL pointer dereference.
    
    Cc: [email protected]
    Fixes: 20869176d7a7 ("ALSA: ad1816a: Use standard print API")
    Signed-off-by: Thorsten Blum <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda/realtek - Add mute LED support for HP Victus 15-fb2xxx [+ + +]
Author: Edip Hazuri <[email protected]>
Date:   Fri Jun 27 23:34:16 2025 +0300

    ALSA: hda/realtek - Add mute LED support for HP Victus 15-fb2xxx
    
    commit ce174b48aebb3fa18fe48c59a3d10a89c414fdf2 upstream.
    
    The mute led on this laptop is using ALC245 but requires a quirk to work
    This patch enables the existing quirk for the device.
    
    Tested on my friend's Victus 15-fb2xxx Laptop. The LED behaviour works
    as intended.
    
    Cc: <[email protected]>
    Signed-off-by: Edip Hazuri <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda/realtek - Enable mute LED on HP Pavilion Laptop 15-eg100 [+ + +]
Author: Yasmin Fitzgerald <[email protected]>
Date:   Sat Jun 21 01:36:14 2025 -0400

    ALSA: hda/realtek - Enable mute LED on HP Pavilion Laptop 15-eg100
    
    [ Upstream commit 68cc9d3c8e44afe90e43cbbd2960da15c2f31e23 ]
    
    The HP Pavilion Laptop 15-eg100 has Realtek HDA codec ALC287.
    It needs the ALC287_FIXUP_HP_GPIO_LED quirk to enable the mute LED.
    
    Signed-off-by: Yasmin Fitzgerald <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Add mic-mute LED setup for ASUS UM5606 [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Mon Jun 23 17:18:39 2025 +0200

    ALSA: hda/realtek: Add mic-mute LED setup for ASUS UM5606
    
    [ Upstream commit 41c66461cb2e8d3934a5395f27e572ebe63696b4 ]
    
    ASUS UM5606* models use the quirk to set up the bass speakers, but it
    missed the mic-mute LED configuration.  Other similar models have the
    AMD ACP dmic, and the mic-mute is set up for that, but those models
    don't have AMD ACP but rather built-in mics of Realtek codec, hence
    the Realtek driver should set it up, instead.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220125
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Add quirks for some Clevo laptops [+ + +]
Author: Tim Crawford <[email protected]>
Date:   Fri Jun 20 14:43:29 2025 -0600

    ALSA: hda/realtek: Add quirks for some Clevo laptops
    
    [ Upstream commit e41687b511d5e5437db5d2151e23c115dba30411 ]
    
    Add audio quirks to fix speaker output and headset detection on the
    following Clevo models:
    
    - V350ENC
    - V350WNPQ
    - V540TU
    - X560WNR
    - X580WNS
    
    Signed-off-by: Tim Crawford <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: fix mute/micmute LEDs for HP EliteBook 6 G1a [+ + +]
Author: Chris Chiu <[email protected]>
Date:   Mon Jun 23 14:30:23 2025 +0800

    ALSA: hda/realtek: fix mute/micmute LEDs for HP EliteBook 6 G1a
    
    [ Upstream commit 9a07ca9a4015f8f71e2b594ee76ac55483babd89 ]
    
    HP EliteBook 6 G1a laptops use ALC236 codec and need the fixup
    ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF to make the mic/micmute LEDs
    work.
    
    Signed-off-by: Chris Chiu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64/mm: Drop wrong writes into TCR2_EL1 [+ + +]
Author: Anshuman Khandual <[email protected]>
Date:   Fri Jul 4 12:08:12 2025 +0530

    arm64/mm: Drop wrong writes into TCR2_EL1
    
    [ Upstream commit 9dd1757493416310a5e71146a08bc228869f8dae ]
    
    Register X0 contains PIE_E1_ASM and should not be written into REG_TCR2_EL1
    which could have an adverse impact otherwise. This has remained undetected
    till now probably because current value for PIE_E1_ASM (0xcc880e0ac0800000)
    clears TCR2_EL1 which again gets set subsequently with 'tcr2' after testing
    for FEAT_TCR2.
    
    Drop this unwarranted 'msr' which is a stray change from an earlier commit.
    This line got re-introduced when rebasing on top of the commit 926b66e2ebc8
    ("arm64: setup: name 'tcr2' register").
    
    Cc: Catalin Marinas <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Fixes: 7052e808c446 ("arm64/sysreg: Get rid of the TCR2_EL1x SysregFields")
    Acked-by: Marc Zyngier <[email protected]>
    Signed-off-by: Anshuman Khandual <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: Filter out SME hwcaps when FEAT_SME isn't implemented [+ + +]
Author: Mark Brown <[email protected]>
Date:   Fri Jun 20 12:28:48 2025 +0100

    arm64: Filter out SME hwcaps when FEAT_SME isn't implemented
    
    commit a75ad2fc76a2ab70817c7eed3163b66ea84ca6ac upstream.
    
    We have a number of hwcaps for various SME subfeatures enumerated via
    ID_AA64SMFR0_EL1. Currently we advertise these without cross checking
    against the main SME feature, advertised in ID_AA64PFR1_EL1.SME which
    means that if the two are out of sync userspace can see a confusing
    situation where SME subfeatures are advertised without the base SME
    hwcap. This can be readily triggered by using the arm64.nosme override
    which only masks out ID_AA64PFR1_EL1.SME, and there have also been
    reports of VMMs which do the same thing.
    
    Fix this as we did previously for SVE in 064737920bdb ("arm64: Filter
    out SVE hwcaps when FEAT_SVE isn't implemented") by filtering out the
    SME subfeature hwcaps when FEAT_SME is not present.
    
    Fixes: 5e64b862c482 ("arm64/sme: Basic enumeration support")
    Reported-by: Yury Khrustalev <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: poe: Handle spurious Overlay faults [+ + +]
Author: Kevin Brodsky <[email protected]>
Date:   Thu Jun 19 17:00:41 2025 +0100

    arm64: poe: Handle spurious Overlay faults
    
    [ Upstream commit 22f3a4f6085951eff28bd1e44d3f388c1d9a5f44 ]
    
    We do not currently issue an ISB after updating POR_EL0 when
    context-switching it, for instance. The rationale is that if the old
    value of POR_EL0 is more restrictive and causes a fault during
    uaccess, the access will be retried [1]. In other words, we are
    trading an ISB on every context-switching for the (unlikely)
    possibility of a spurious fault. We may also miss faults if the new
    value of POR_EL0 is more restrictive, but that's considered
    acceptable.
    
    However, as things stand, a spurious Overlay fault results in
    uaccess failing right away since it causes fault_from_pkey() to
    return true. If an Overlay fault is reported, we therefore need to
    double check POR_EL0 against vma_pkey(vma) - this is what
    arch_vma_access_permitted() already does.
    
    As it turns out, we already perform that explicit check if no
    Overlay fault is reported, and we need to keep that check (see
    comment added in fault_from_pkey()). Net result: the Overlay ISS2
    bit isn't of much help to decide whether a pkey fault occurred.
    
    Remove the check for the Overlay bit from fault_from_pkey() and
    add a comment to try and explain the situation. While at it, also
    add a comment to permission_overlay_switch() in case anyone gets
    surprised by the lack of ISB.
    
    [1] https://lore.kernel.org/linux-arm-kernel/[email protected]/
    
    Fixes: 160a8e13de6c ("arm64: context switch POR_EL0 register")
    Signed-off-by: Kevin Brodsky <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: amd: yc: add quirk for Acer Nitro ANV15-41 internal mic [+ + +]
Author: Yuzuru10 <[email protected]>
Date:   Sun Jun 22 22:58:00 2025 +0000

    ASoC: amd: yc: add quirk for Acer Nitro ANV15-41 internal mic
    
    [ Upstream commit 7186b81807b4a08f8bf834b6bdc72d6ed8ba1587 ]
    
    This patch adds DMI-based quirk for the Acer Nitro ANV15-41,
    allowing the internal microphone to be detected correctly on
    machines with "RB" as board vendor.
    
    Signed-off-by: Yuzuru <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: cs35l56: probe() should fail if the device ID is not recognized [+ + +]
Author: Richard Fitzgerald <[email protected]>
Date:   Thu Jul 3 11:25:21 2025 +0100

    ASoC: cs35l56: probe() should fail if the device ID is not recognized
    
    [ Upstream commit 3b3312f28ee2d9c386602f8521e419cfc69f4823 ]
    
    Return an error from driver probe if the DEVID read from the chip is not
    one supported by this driver.
    
    In cs35l56_hw_init() there is a check for valid DEVID, but the invalid
    case was returning the value of ret. At this point in the code ret == 0
    so the caller would think that cs35l56_hw_init() was successful.
    
    Signed-off-by: Richard Fitzgerald <[email protected]>
    Fixes: 84851aa055c8 ("ASoC: cs35l56: Move part of cs35l56_init() to shared library")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode [+ + +]
Author: Shengjiu Wang <[email protected]>
Date:   Wed Jun 25 10:05:04 2025 +0800

    ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode
    
    [ Upstream commit cbe876121633dadb2b0ce52711985328638e9aab ]
    
    When USRC=0, there is underrun issue for the non-ideal ratio mode;
    according to the reference mannual, the internal measured ratio can be
    used with USRC=1 and IDRC=0.
    
    Fixes: d0250cf4f2ab ("ASoC: fsl_asrc: Add an option to select internal ratio mode")
    Signed-off-by: Shengjiu Wang <[email protected]>
    Reviewed-by: Daniel Baluta <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: fsl_sai: Force a software reset when starting in consumer mode [+ + +]
Author: Arun Raghavan <[email protected]>
Date:   Thu Jun 26 09:08:25 2025 -0400

    ASoC: fsl_sai: Force a software reset when starting in consumer mode
    
    commit dc78f7e59169d3f0e6c3c95d23dc8e55e95741e2 upstream.
    
    On an imx8mm platform with an external clock provider, when running the
    receiver (arecord) and triggering an xrun with xrun_injection, we see a
    channel swap/offset. This happens sometimes when running only the
    receiver, but occurs reliably if a transmitter (aplay) is also
    concurrently running.
    
    It seems that the SAI loses track of frame sync during the trigger stop
    -> trigger start cycle that occurs during an xrun. Doing just a FIFO
    reset in this case does not suffice, and only a software reset seems to
    get it back on track.
    
    This looks like the same h/w bug that is already handled for the
    producer case, so we now do the reset unconditionally on config disable.
    
    Signed-off-by: Arun Raghavan <[email protected]>
    Reported-by: Pieterjan Camerlynck <[email protected]>
    Fixes: 3e3f8bd56955 ("ASoC: fsl_sai: fix no frame clk in master mode")
    Cc: [email protected]
    Reviewed-by: Fabio Estevam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: Intel: add sof_sdw_get_tplg_files ops [+ + +]
Author: Bard Liao <[email protected]>
Date:   Mon Apr 14 14:32:33 2025 +0800

    ASoC: Intel: add sof_sdw_get_tplg_files ops
    
    [ Upstream commit 2fbeff33381cf017facbf5f13d34693baa5a2296 ]
    
    Add sof_sdw_get_tplg_files ops to get sub-topology file names for the
    sof_sdw card.
    
    Signed-off-by: Bard Liao <[email protected]>
    Reviewed-by: Liam Girdwood <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Reviewed-by: Péter Ujfalusi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: a7528e9beadb ("ASoC: Intel: soc-acpi: arl: Correct order of cs42l43 matches")
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: SND_SOC_INTEL_SOF_BOARD_HELPERS select SND_SOC_ACPI_INTEL_MATCH [+ + +]
Author: Bard Liao <[email protected]>
Date:   Thu Jun 26 14:44:20 2025 +0800

    ASoC: Intel: SND_SOC_INTEL_SOF_BOARD_HELPERS select SND_SOC_ACPI_INTEL_MATCH
    
    [ Upstream commit 960aed31eedbaeb2e47b1bc485b462fd38a53311 ]
    
    The helpers that are provided by SND_SOC_ACPI_INTEL_MATCH
    (soc-acpi-intel-ssp-common) are used in SND_SOC_INTEL_SOF_BOARD_HELPERS
    (sof_board_helpers).
    SND_SOC_ACPI_INTEL_MATCH is selected by machine drivers. When
    skl_hda_dsp_generic uses the board helpers, it select
    SND_SOC_INTEL_SOF_BOARD_HELPERS only but not SND_SOC_ACPI_INTEL_MATCH
    which initroduce the undefined symbol errors. However, it makes more
    sense that SND_SOC_INTEL_SOF_BOARD_HELPERS select
    SND_SOC_ACPI_INTEL_MATCH itself.
    
    Fixes: b28b23dea314 ("ASoC: Intel: skl_hda_dsp_generic: use common module for DAI links")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Bard Liao <[email protected]>
    Reviewed-by: Péter Ujfalusi <[email protected]>
    Reviewed-by: Liam Girdwood <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: soc-acpi-intel-arl-match: set get_function_tplg_files ops [+ + +]
Author: Bard Liao <[email protected]>
Date:   Mon Apr 14 14:32:35 2025 +0800

    ASoC: Intel: soc-acpi-intel-arl-match: set get_function_tplg_files ops
    
    [ Upstream commit d348b4181cd15ed432c2ae7eb33ef1bb7dfd7527 ]
    
    The audio configs with multi-function SDCA codecs can use the
    sof_sdw_get_tplg_files ops to get function topologies dynamically.
    
    Signed-off-by: Bard Liao <[email protected]>
    Reviewed-by: Liam Girdwood <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Reviewed-by: Péter Ujfalusi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: a7528e9beadb ("ASoC: Intel: soc-acpi: arl: Correct order of cs42l43 matches")
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: soc-acpi: arl: Correct order of cs42l43 matches [+ + +]
Author: Charles Keepax <[email protected]>
Date:   Thu Jun 26 15:18:41 2025 +0100

    ASoC: Intel: soc-acpi: arl: Correct order of cs42l43 matches
    
    [ Upstream commit a7528e9beadbddcec21b394ce5fa8dc4e5cdaa24 ]
    
    Matches should go from more specific to less specific, correct the
    ordering of two cs42l43 entries.
    
    Fixes: c0524067653d ("ASoC: Intel: soc-acpi: arl: Add match entries for new cs42l43 laptops")
    Signed-off-by: Charles Keepax <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: sof-function-topology-lib: Print out the unsupported dmic count [+ + +]
Author: Peter Ujfalusi <[email protected]>
Date:   Thu Jun 19 13:47:05 2025 +0300

    ASoC: Intel: sof-function-topology-lib: Print out the unsupported dmic count
    
    commit 16ea4666bbb7f5bd1130fa2d75631ccf8b62362e upstream.
    
    It is better to print out the non supported num_dmics than printing that
    it is not matching with 2 or 4.
    
    Fixes: 2fbeff33381c ("ASoC: Intel: add sof_sdw_get_tplg_files ops")
    Cc: [email protected]
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Reviewed-by: Bard Liao <[email protected]>
    Reviewed-by: Pierre-Louis Bossart <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: rt721-sdca: fix boost gain calculation error [+ + +]
Author: Jack Yu <[email protected]>
Date:   Tue Jun 24 02:59:28 2025 +0000

    ASoC: rt721-sdca: fix boost gain calculation error
    
    [ Upstream commit ff21a6ec0f27c126db0a86d96751bd6e5d1d9874 ]
    
    Fix the boost gain calculation error in rt721_sdca_set_gain_get.
    This patch is specific for "FU33 Boost Volume".
    
    Signed-off-by: Jack Yu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: soc-acpi: add get_function_tplg_files ops [+ + +]
Author: Bard Liao <[email protected]>
Date:   Mon Apr 14 14:32:31 2025 +0800

    ASoC: soc-acpi: add get_function_tplg_files ops
    
    [ Upstream commit d1e70eed0b30bd2b15fc6c93b5701be564bbe353 ]
    
    We always use a single topology that contains all PCM devices belonging
    to a machine configuration.
    However, with SDCA, we want to be able to load function topologies based
    on the supported device functions. This change is in preparation for
    loading those function topologies.
    
    Signed-off-by: Bard Liao <[email protected]>
    Reviewed-by: Liam Girdwood <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Reviewed-by: Péter Ujfalusi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: a7528e9beadb ("ASoC: Intel: soc-acpi: arl: Correct order of cs42l43 matches")
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: SOF: Intel: hda: Use devm_kstrdup() to avoid memleak. [+ + +]
Author: Tamura Dai <[email protected]>
Date:   Mon Jun 16 08:55:48 2025 +0900

    ASoC: SOF: Intel: hda: Use devm_kstrdup() to avoid memleak.
    
    [ Upstream commit 6c038b58a2dc5a008c7e7a1297f5aaa4deaaaa7e ]
    
    sof_pdata->tplg_filename can have address allocated by kstrdup()
    and can be overwritten. Memory leak was detected with kmemleak:
    
    unreferenced object 0xffff88812391ff60 (size 16):
      comm "kworker/4:1", pid 161, jiffies 4294802931
      hex dump (first 16 bytes):
        73 6f 66 2d 68 64 61 2d 67 65 6e 65 72 69 63 00  sof-hda-generic.
      backtrace (crc 4bf1675c):
        __kmalloc_node_track_caller_noprof+0x49c/0x6b0
        kstrdup+0x46/0xc0
        hda_machine_select.cold+0x1de/0x12cf [snd_sof_intel_hda_generic]
        sof_init_environment+0x16f/0xb50 [snd_sof]
        sof_probe_continue+0x45/0x7c0 [snd_sof]
        sof_probe_work+0x1e/0x40 [snd_sof]
        process_one_work+0x894/0x14b0
        worker_thread+0x5e5/0xfb0
        kthread+0x39d/0x760
        ret_from_fork+0x31/0x70
        ret_from_fork_asm+0x1a/0x30
    
    Signed-off-by: Tamura Dai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
atm: clip: Fix infinite recursive call of clip_push(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 06:23:53 2025 +0000

    atm: clip: Fix infinite recursive call of clip_push().
    
    [ Upstream commit c489f3283dbfc0f3c00c312149cae90d27552c45 ]
    
    syzbot reported the splat below. [0]
    
    This happens if we call ioctl(ATMARP_MKIP) more than once.
    
    During the first call, clip_mkip() sets clip_push() to vcc->push(),
    and the second call copies it to clip_vcc->old_push().
    
    Later, when the socket is close()d, vcc_destroy_socket() passes
    NULL skb to clip_push(), which calls clip_vcc->old_push(),
    triggering the infinite recursion.
    
    Let's prevent the second ioctl(ATMARP_MKIP) by checking
    vcc->user_back, which is allocated by the first call as clip_vcc.
    
    Note also that we use lock_sock() to prevent racy calls.
    
    [0]:
    BUG: TASK stack guard page was hit at ffffc9000d66fff8 (stack is ffffc9000d670000..ffffc9000d678000)
    Oops: stack guard page: 0000 [#1] SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 5322 Comm: syz.0.0 Not tainted 6.16.0-rc4-syzkaller #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:clip_push+0x5/0x720 net/atm/clip.c:191
    Code: e0 8f aa 8c e8 1c ad 5b fa eb ae 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 55 <41> 57 41 56 41 55 41 54 53 48 83 ec 20 48 89 f3 49 89 fd 48 bd 00
    RSP: 0018:ffffc9000d670000 EFLAGS: 00010246
    RAX: 1ffff1100235a4a5 RBX: ffff888011ad2508 RCX: ffff8880003c0000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff888037f01000
    RBP: dffffc0000000000 R08: ffffffff8fa104f7 R09: 1ffffffff1f4209e
    R10: dffffc0000000000 R11: ffffffff8a99b300 R12: ffffffff8a99b300
    R13: ffff888037f01000 R14: ffff888011ad2500 R15: ffff888037f01578
    FS:  000055557ab6d500(0000) GS:ffff88808d250000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffc9000d66fff8 CR3: 0000000043172000 CR4: 0000000000352ef0
    Call Trace:
     <TASK>
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
    ...
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     vcc_destroy_socket net/atm/common.c:183 [inline]
     vcc_release+0x157/0x460 net/atm/common.c:205
     __sock_release net/socket.c:647 [inline]
     sock_close+0xc0/0x240 net/socket.c:1391
     __fput+0x449/0xa70 fs/file_table.c:465
     task_work_run+0x1d1/0x260 kernel/task_work.c:227
     resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
     exit_to_user_mode_loop+0xec/0x110 kernel/entry/common.c:114
     exit_to_user_mode_prepare include/linux/entry-common.h:330 [inline]
     syscall_exit_to_user_mode_work include/linux/entry-common.h:414 [inline]
     syscall_exit_to_user_mode include/linux/entry-common.h:449 [inline]
     do_syscall_64+0x2bd/0x3b0 arch/x86/entry/syscall_64.c:100
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7ff31c98e929
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007fffb5aa1f78 EFLAGS: 00000246 ORIG_RAX: 00000000000001b4
    RAX: 0000000000000000 RBX: 0000000000012747 RCX: 00007ff31c98e929
    RDX: 0000000000000000 RSI: 000000000000001e RDI: 0000000000000003
    RBP: 00007ff31cbb7ba0 R08: 0000000000000001 R09: 0000000db5aa226f
    R10: 00007ff31c7ff030 R11: 0000000000000246 R12: 00007ff31cbb608c
    R13: 00007ff31cbb6080 R14: ffffffffffffffff R15: 00007fffb5aa2090
     </TASK>
    Modules linked in:
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=2371d94d248d126c1eb1
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: clip: Fix memory leak of struct clip_vcc. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 06:23:52 2025 +0000

    atm: clip: Fix memory leak of struct clip_vcc.
    
    [ Upstream commit 62dba28275a9a3104d4e33595c7b3328d4032d8d ]
    
    ioctl(ATMARP_MKIP) allocates struct clip_vcc and set it to
    vcc->user_back.
    
    The code assumes that vcc_destroy_socket() passes NULL skb
    to vcc->push() when the socket is close()d, and then clip_push()
    frees clip_vcc.
    
    However, ioctl(ATMARPD_CTRL) sets NULL to vcc->push() in
    atm_init_atmarp(), resulting in memory leak.
    
    Let's serialise two ioctl() by lock_sock() and check vcc->push()
    in atm_init_atmarp() to prevent memleak.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: clip: Fix NULL pointer dereference in vcc_sendmsg() [+ + +]
Author: Yue Haibing <[email protected]>
Date:   Sat Jul 5 16:52:28 2025 +0800

    atm: clip: Fix NULL pointer dereference in vcc_sendmsg()
    
    [ Upstream commit 22fc46cea91df3dce140a7dc6847c6fcf0354505 ]
    
    atmarpd_dev_ops does not implement the send method, which may cause crash
    as bellow.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    PGD 0 P4D 0
    Oops: Oops: 0010 [#1] SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 5324 Comm: syz.0.0 Not tainted 6.15.0-rc6-syzkaller-00346-g5723cc3450bc #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:0x0
    Code: Unable to access opcode bytes at 0xffffffffffffffd6.
    RSP: 0018:ffffc9000d3cf778 EFLAGS: 00010246
    RAX: 1ffffffff1910dd1 RBX: 00000000000000c0 RCX: dffffc0000000000
    RDX: ffffc9000dc82000 RSI: ffff88803e4c4640 RDI: ffff888052cd0000
    RBP: ffffc9000d3cf8d0 R08: ffff888052c9143f R09: 1ffff1100a592287
    R10: dffffc0000000000 R11: 0000000000000000 R12: 1ffff92001a79f00
    R13: ffff888052cd0000 R14: ffff88803e4c4640 R15: ffffffff8c886e88
    FS:  00007fbc762566c0(0000) GS:ffff88808d6c2000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffffffffd6 CR3: 0000000041f1b000 CR4: 0000000000352ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     vcc_sendmsg+0xa10/0xc50 net/atm/common.c:644
     sock_sendmsg_nosec net/socket.c:712 [inline]
     __sock_sendmsg+0x219/0x270 net/socket.c:727
     ____sys_sendmsg+0x52d/0x830 net/socket.c:2566
     ___sys_sendmsg+0x21f/0x2a0 net/socket.c:2620
     __sys_sendmmsg+0x227/0x430 net/socket.c:2709
     __do_sys_sendmmsg net/socket.c:2736 [inline]
     __se_sys_sendmmsg net/socket.c:2733 [inline]
     __x64_sys_sendmmsg+0xa0/0xc0 net/socket.c:2733
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xf6/0x210 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T
    Signed-off-by: Yue Haibing <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: clip: Fix potential null-ptr-deref in to_atmarpd(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 06:23:51 2025 +0000

    atm: clip: Fix potential null-ptr-deref in to_atmarpd().
    
    [ Upstream commit 706cc36477139c1616a9b2b96610a8bb520b7119 ]
    
    atmarpd is protected by RTNL since commit f3a0592b37b8 ("[ATM]: clip
    causes unregister hang").
    
    However, it is not enough because to_atmarpd() is called without RTNL,
    especially clip_neigh_solicit() / neigh_ops->solicit() is unsleepable.
    
    Also, there is no RTNL dependency around atmarpd.
    
    Let's use a private mutex and RCU to protect access to atmarpd in
    to_atmarpd().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: idt77252: Add missing `dma_map_error()` [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Tue Jun 24 08:41:47 2025 +0200

    atm: idt77252: Add missing `dma_map_error()`
    
    [ Upstream commit c4890963350dcf4e9a909bae23665921fba4ad27 ]
    
    The DMA map functions can fail and should be tested for errors.
    
    Signed-off-by: Thomas Fourier <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
block: reject bs > ps block devices when THP is disabled [+ + +]
Author: Pankaj Raghav <[email protected]>
Date:   Fri Jul 4 11:21:34 2025 +0200

    block: reject bs > ps block devices when THP is disabled
    
    [ Upstream commit 4cdf1bdd45ac78a088773722f009883af30ad318 ]
    
    If THP is disabled and when a block device with logical block size >
    page size is present, the following null ptr deref panic happens during
    boot:
    
    [   [13.2 mK  AOSAN: null-ptr-deref in range [0x0000000000000000-0x0000000000K0 0 0[07]
    [   13.017749] RIP: 0010:create_empty_buffers+0x3b/0x380
    <snip>
    [   13.025448] Call Trace:
    [   13.025692]  <TASK>
    [   13.025895]  block_read_full_folio+0x610/0x780
    [   13.026379]  ? __pfx_blkdev_get_block+0x10/0x10
    [   13.027008]  ? __folio_batch_add_and_move+0x1fa/0x2b0
    [   13.027548]  ? __pfx_blkdev_read_folio+0x10/0x10
    [   13.028080]  filemap_read_folio+0x9b/0x200
    [   13.028526]  ? __pfx_filemap_read_folio+0x10/0x10
    [   13.029030]  ? __filemap_get_folio+0x43/0x620
    [   13.029497]  do_read_cache_folio+0x155/0x3b0
    [   13.029962]  ? __pfx_blkdev_read_folio+0x10/0x10
    [   13.030381]  read_part_sector+0xb7/0x2a0
    [   13.030805]  read_lba+0x174/0x2c0
    <snip>
    [   13.045348]  nvme_scan_ns+0x684/0x850 [nvme_core]
    [   13.045858]  ? __pfx_nvme_scan_ns+0x10/0x10 [nvme_core]
    [   13.046414]  ? _raw_spin_unlock+0x15/0x40
    [   13.046843]  ? __switch_to+0x523/0x10a0
    [   13.047253]  ? kvm_clock_get_cycles+0x14/0x30
    [   13.047742]  ? __pfx_nvme_scan_ns_async+0x10/0x10 [nvme_core]
    [   13.048353]  async_run_entry_fn+0x96/0x4f0
    [   13.048787]  process_one_work+0x667/0x10a0
    [   13.049219]  worker_thread+0x63c/0xf60
    
    As large folio support depends on THP, only allow bs > ps block devices
    if THP is enabled.
    
    Fixes: 47dd67532303 ("block/bdev: lift block size restrictions to 64k")
    Signed-off-by: Pankaj Raghav <[email protected]>
    Reviewed-by: Luis Chamberlain <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: hci_core: Remove check of BDADDR_ANY in hci_conn_hash_lookup_big_state [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Mon Jun 30 15:37:46 2025 -0400

    Bluetooth: hci_core: Remove check of BDADDR_ANY in hci_conn_hash_lookup_big_state
    
    [ Upstream commit 59710a26a289ad4e7ef227d22063e964930928b0 ]
    
    The check for destination to be BDADDR_ANY is no longer necessary with
    the introduction of BIS_LINK.
    
    Fixes: 23205562ffc8 ("Bluetooth: separate CIS_LINK and BIS_LINK link types")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_event: Fix not marking Broadcast Sink BIS as connected [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Fri Jun 27 11:19:02 2025 -0400

    Bluetooth: hci_event: Fix not marking Broadcast Sink BIS as connected
    
    [ Upstream commit c7349772c268ec3c91d83cbfbbcf63f1bd7c256c ]
    
    Upon receiving HCI_EVT_LE_BIG_SYNC_ESTABLISHED with status 0x00
    (success) the corresponding BIS hci_conn state shall be set to
    BT_CONNECTED otherwise they will be left with BT_OPEN which is invalid
    at that point, also create the debugfs and sysfs entries following the
    same logic as the likes of Broadcast Source BIS and CIS connections.
    
    Fixes: f777d8827817 ("Bluetooth: ISO: Notify user space about failed bis connections")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_sync: Fix attempting to send HCI_Disconnect to BIS handle [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Thu Jul 3 09:45:08 2025 -0400

    Bluetooth: hci_sync: Fix attempting to send HCI_Disconnect to BIS handle
    
    [ Upstream commit 314d30b1508682e27c8a324096262c66f23455d9 ]
    
    BIS/PA connections do have their own cleanup proceedure which are
    performed by hci_conn_cleanup/bis_cleanup.
    
    Fixes: 23205562ffc8 ("Bluetooth: separate CIS_LINK and BIS_LINK link types")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_sync: Fix not disabling advertising instance [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Fri Jun 27 12:31:33 2025 -0400

    Bluetooth: hci_sync: Fix not disabling advertising instance
    
    [ Upstream commit ef9675b0ef030d135413e8638989f3a7d1f3217a ]
    
    As the code comments on hci_setup_ext_adv_instance_sync suggests the
    advertising instance needs to be disabled in order to update its
    parameters, but it was wrongly checking that !adv->pending.
    
    Fixes: cba6b758711c ("Bluetooth: hci_sync: Make use of hci_cmd_sync_queue set 2")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bnxt_en: eliminate the compile warning in bnxt_request_irq due to CONFIG_RFS_ACCEL [+ + +]
Author: Jason Xing <[email protected]>
Date:   Wed Jul 2 14:48:22 2025 +0800

    bnxt_en: eliminate the compile warning in bnxt_request_irq due to CONFIG_RFS_ACCEL
    
    [ Upstream commit b9fd9888a5654e59f6c6249337e36c53c1faa329 ]
    
    I received a kernel-test-bot report[1] that shows the
    [-Wunused-but-set-variable] warning. Since the previous commit I made, as
    the 'Fixes' tag shows, gives users an option to turn on and off the
    CONFIG_RFS_ACCEL, the issue then can be discovered and reproduced with
    GCC specifically.
    
    Like Simon and Jakub suggested, use fewer #ifdefs which leads to fewer
    bugs.
    
    [1]
    All warnings (new ones prefixed by >>):
    
       drivers/net/ethernet/broadcom/bnxt/bnxt.c: In function 'bnxt_request_irq':
    >> drivers/net/ethernet/broadcom/bnxt/bnxt.c:10703:9: warning: variable 'j' set but not used [-Wunused-but-set-variable]
       10703 |  int i, j, rc = 0;
             |         ^
    
    Fixes: 9b6a30febddf ("net: allow rps/rfs related configs to be switched")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Jason Xing <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bnxt_en: Fix DCB ETS validation [+ + +]
Author: Shravya KN <[email protected]>
Date:   Thu Jul 10 14:39:36 2025 -0700

    bnxt_en: Fix DCB ETS validation
    
    [ Upstream commit b74c2a2e9cc471e847abd87e50a2354c07e02040 ]
    
    In bnxt_ets_validate(), the code incorrectly loops over all possible
    traffic classes to check and add the ETS settings.  Fix it to loop
    over the configured traffic classes only.
    
    The unconfigured traffic classes will default to TSA_ETS with 0
    bandwidth.  Looping over these unconfigured traffic classes may
    cause the validation to fail and trigger this error message:
    
    "rejecting ETS config starving a TC\n"
    
    The .ieee_setets() will then fail.
    
    Fixes: 7df4ae9fe855 ("bnxt_en: Implement DCBNL to support host-based DCBX.")
    Reviewed-by: Sreekanth Reddy <[email protected]>
    Signed-off-by: Shravya KN <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bnxt_en: Flush FW trace before copying to the coredump [+ + +]
Author: Shruti Parab <[email protected]>
Date:   Thu Jul 10 14:39:37 2025 -0700

    bnxt_en: Flush FW trace before copying to the coredump
    
    [ Upstream commit 100c08c89d173b7fdf953e7d9f9ca8f69f80d1c5 ]
    
    bnxt_fill_drv_seg_record() calls bnxt_dbg_hwrm_log_buffer_flush()
    to flush the FW trace buffer.  This needs to be done before we
    call bnxt_copy_ctx_mem() to copy the trace data.
    
    Without this fix, the coredump may not contain all the FW
    traces.
    
    Fixes: 3c2179e66355 ("bnxt_en: Add FW trace coredump segments to the coredump")
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Shruti Parab <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT [+ + +]
Author: Somnath Kotur <[email protected]>
Date:   Thu Jul 10 14:39:38 2025 -0700

    bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT
    
    [ Upstream commit 3cdf199d4755d477972ee87110b2aebc88b3cfad ]
    
    When transmitting an XDP_REDIRECT packet, call dma_unmap_len_set()
    with the proper length instead of 0.  This bug triggers this warning
    on a system with IOMMU enabled:
    
    WARNING: CPU: 36 PID: 0 at drivers/iommu/dma-iommu.c:842 __iommu_dma_unmap+0x159/0x170
    RIP: 0010:__iommu_dma_unmap+0x159/0x170
    Code: a8 00 00 00 00 48 c7 45 b0 00 00 00 00 48 c7 45 c8 00 00 00 00 48 c7 45 a0 ff ff ff ff 4c 89 45
    b8 4c 89 45 c0 e9 77 ff ff ff <0f> 0b e9 60 ff ff ff e8 8b bf 6a 00 66 66 2e 0f 1f 84 00 00 00 00
    RSP: 0018:ff22d31181150c88 EFLAGS: 00010206
    RAX: 0000000000002000 RBX: 00000000e13a0000 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ff22d31181150cf0 R08: ff22d31181150ca8 R09: 0000000000000000
    R10: 0000000000000000 R11: ff22d311d36c9d80 R12: 0000000000001000
    R13: ff13544d10645010 R14: ff22d31181150c90 R15: ff13544d0b2bac00
    FS: 0000000000000000(0000) GS:ff13550908a00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00005be909dacff8 CR3: 0008000173408003 CR4: 0000000000f71ef0
    PKRU: 55555554
    Call Trace:
    <IRQ>
    ? show_regs+0x6d/0x80
    ? __warn+0x89/0x160
    ? __iommu_dma_unmap+0x159/0x170
    ? report_bug+0x17e/0x1b0
    ? handle_bug+0x46/0x90
    ? exc_invalid_op+0x18/0x80
    ? asm_exc_invalid_op+0x1b/0x20
    ? __iommu_dma_unmap+0x159/0x170
    ? __iommu_dma_unmap+0xb3/0x170
    iommu_dma_unmap_page+0x4f/0x100
    dma_unmap_page_attrs+0x52/0x220
    ? srso_alias_return_thunk+0x5/0xfbef5
    ? xdp_return_frame+0x2e/0xd0
    bnxt_tx_int_xdp+0xdf/0x440 [bnxt_en]
    __bnxt_poll_work_done+0x81/0x1e0 [bnxt_en]
    bnxt_poll+0xd3/0x1e0 [bnxt_en]
    
    Fixes: f18c2b77b2e4 ("bnxt_en: optimized XDP_REDIRECT support")
    Signed-off-by: Somnath Kotur <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Adjust free target to avoid global starvation of LRU map [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Wed Jun 18 17:57:40 2025 -0400

    bpf: Adjust free target to avoid global starvation of LRU map
    
    [ Upstream commit d4adf1c9ee7722545450608bcb095fb31512f0c6 ]
    
    BPF_MAP_TYPE_LRU_HASH can recycle most recent elements well before the
    map is full, due to percpu reservations and force shrink before
    neighbor stealing. Once a CPU is unable to borrow from the global map,
    it will once steal one elem from a neighbor and after that each time
    flush this one element to the global list and immediately recycle it.
    
    Batch value LOCAL_FREE_TARGET (128) will exhaust a 10K element map
    with 79 CPUs. CPU 79 will observe this behavior even while its
    neighbors hold 78 * 127 + 1 * 15 == 9921 free elements (99%).
    
    CPUs need not be active concurrently. The issue can appear with
    affinity migration, e.g., irqbalance. Each CPU can reserve and then
    hold onto its 128 elements indefinitely.
    
    Avoid global list exhaustion by limiting aggregate percpu caches to
    half of map size, by adjusting LOCAL_FREE_TARGET based on cpu count.
    This change has no effect on sufficiently large tables.
    
    Similar to LOCAL_NR_SCANS and lru->nr_scans, introduce a map variable
    lru->free_target. The extra field fits in a hole in struct bpf_lru.
    The cacheline is already warm where read in the hot path. The field is
    only accessed with the lru lock held.
    
    Tested-by: Anton Protopopov <[email protected]>
    Signed-off-by: Willem de Bruijn <[email protected]>
    Acked-by: Stanislav Fomichev <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: fix assertion when building free space tree [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Thu Jun 5 20:51:03 2025 +0100

    btrfs: fix assertion when building free space tree
    
    [ Upstream commit 1961d20f6fa8903266ed9bd77c691924c22c8f02 ]
    
    When building the free space tree with the block group tree feature
    enabled, we can hit an assertion failure like this:
    
      BTRFS info (device loop0 state M): rebuilding free space tree
      assertion failed: ret == 0, in fs/btrfs/free-space-tree.c:1102
      ------------[ cut here ]------------
      kernel BUG at fs/btrfs/free-space-tree.c:1102!
      Internal error: Oops - BUG: 00000000f2000800 [#1]  SMP
      Modules linked in:
      CPU: 1 UID: 0 PID: 6592 Comm: syz-executor322 Not tainted 6.15.0-rc7-syzkaller-gd7fa1af5b33e #0 PREEMPT
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
      pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102
      lr : populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102
      sp : ffff8000a4ce7600
      x29: ffff8000a4ce76e0 x28: ffff0000c9bc6000 x27: ffff0000ddfff3d8
      x26: ffff0000ddfff378 x25: dfff800000000000 x24: 0000000000000001
      x23: ffff8000a4ce7660 x22: ffff70001499cecc x21: ffff0000e1d8c160
      x20: ffff0000e1cb7800 x19: ffff0000e1d8c0b0 x18: 00000000ffffffff
      x17: ffff800092f39000 x16: ffff80008ad27e48 x15: ffff700011e740c0
      x14: 1ffff00011e740c0 x13: 0000000000000004 x12: ffffffffffffffff
      x11: ffff700011e740c0 x10: 0000000000ff0100 x9 : 94ef24f55d2dbc00
      x8 : 94ef24f55d2dbc00 x7 : 0000000000000001 x6 : 0000000000000001
      x5 : ffff8000a4ce6f98 x4 : ffff80008f415ba0 x3 : ffff800080548ef0
      x2 : 0000000000000000 x1 : 0000000100000000 x0 : 000000000000003e
      Call trace:
       populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102 (P)
       btrfs_rebuild_free_space_tree+0x14c/0x54c fs/btrfs/free-space-tree.c:1337
       btrfs_start_pre_rw_mount+0xa78/0xe10 fs/btrfs/disk-io.c:3074
       btrfs_remount_rw fs/btrfs/super.c:1319 [inline]
       btrfs_reconfigure+0x828/0x2418 fs/btrfs/super.c:1543
       reconfigure_super+0x1d4/0x6f0 fs/super.c:1083
       do_remount fs/namespace.c:3365 [inline]
       path_mount+0xb34/0xde0 fs/namespace.c:4200
       do_mount fs/namespace.c:4221 [inline]
       __do_sys_mount fs/namespace.c:4432 [inline]
       __se_sys_mount fs/namespace.c:4409 [inline]
       __arm64_sys_mount+0x3e8/0x468 fs/namespace.c:4409
       __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
       invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49
       el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132
       do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151
       el0_svc+0x58/0x17c arch/arm64/kernel/entry-common.c:767
       el0t_64_sync_handler+0x78/0x108 arch/arm64/kernel/entry-common.c:786
       el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
      Code: f0047182 91178042 528089c3 9771d47b (d4210000)
      ---[ end trace 0000000000000000 ]---
    
    This happens because we are processing an empty block group, which has
    no extents allocated from it, there are no items for this block group,
    including the block group item since block group items are stored in a
    dedicated tree when using the block group tree feature. It also means
    this is the block group with the highest start offset, so there are no
    higher keys in the extent root, hence btrfs_search_slot_for_read()
    returns 1 (no higher key found).
    
    Fix this by asserting 'ret' is 0 only if the block group tree feature
    is not enabled, in which case we should find a block group item for
    the block group since it's stored in the extent root and block group
    item keys are greater than extent item keys (the value for
    BTRFS_BLOCK_GROUP_ITEM_KEY is 192 and for BTRFS_EXTENT_ITEM_KEY and
    BTRFS_METADATA_ITEM_KEY the values are 168 and 169 respectively).
    In case 'ret' is 1, we just need to add a record to the free space
    tree which spans the whole block group, and we can achieve this by
    making 'ret == 0' as the while loop's condition.
    
    Reported-by: [email protected]
    Link: https://lore.kernel.org/linux-btrfs/[email protected]/
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level [+ + +]
Author: Sean Nyekjaer <[email protected]>
Date:   Fri Jul 11 12:12:02 2025 +0200

    can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level
    
    [ Upstream commit 58805e9cbc6f6a28f35d90e740956e983a0e036e ]
    
    Downgrade the "msg lost in rx" message to debug level, to prevent
    flooding the kernel log with error messages.
    
    Fixes: e0d1f4816f2a ("can: m_can: add Bosch M_CAN controller support")
    Reviewed-by: Vincent Mailhol <[email protected]>
    Signed-off-by: Sean Nyekjaer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [mkl: enhance commit message]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clk: imx: Fix an out-of-bounds access in dispmix_csr_clk_dev_data [+ + +]
Author: Xiaolei Wang <[email protected]>
Date:   Thu Jun 19 14:21:08 2025 +0800

    clk: imx: Fix an out-of-bounds access in dispmix_csr_clk_dev_data
    
    commit aacc875a448d363332b9df0621dde6d3a225ea9f upstream.
    
    When num_parents is 4, __clk_register() occurs an out-of-bounds
    when accessing parent_names member. Use ARRAY_SIZE() instead of
    hardcode number here.
    
     BUG: KASAN: global-out-of-bounds in __clk_register+0x1844/0x20d8
     Read of size 8 at addr ffff800086988e78 by task kworker/u24:3/59
      Hardware name: NXP i.MX95 19X19 board (DT)
      Workqueue: events_unbound deferred_probe_work_func
      Call trace:
        dump_backtrace+0x94/0xec
        show_stack+0x18/0x24
        dump_stack_lvl+0x8c/0xcc
        print_report+0x398/0x5fc
        kasan_report+0xd4/0x114
        __asan_report_load8_noabort+0x20/0x2c
        __clk_register+0x1844/0x20d8
        clk_hw_register+0x44/0x110
        __clk_hw_register_mux+0x284/0x3a8
        imx95_bc_probe+0x4f4/0xa70
    
    Fixes: 5224b189462f ("clk: imx: add i.MX95 BLK CTL clk driver")
    Cc: [email protected]
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Xiaolei Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: scmi: Handle case where child clocks are initialized before their parents [+ + +]
Author: Sascha Hauer <[email protected]>
Date:   Thu Jun 12 14:56:57 2025 +0200

    clk: scmi: Handle case where child clocks are initialized before their parents
    
    commit 6306e0c5a0d28e9df2b5902f4a021204bee75173 upstream.
    
    The SCMI clock driver currently assumes that parent clocks are always
    initialized before their children. However, this assumption can fail if
    a child clock is encountered before its parent during probe.
    
    This leads to an issue during initialization of the parent_data array:
    
        sclk->parent_data[i].hw = hws[sclk->info->parents[i]];
    
    If the parent clock's hardware structure has not been initialized yet,
    this assignment results in invalid data.
    
    To resolve this, allocate all struct scmi_clk instances as a contiguous
    array at the beginning of the probe and populate the hws[] array
    upfront. This ensures that any parent referenced later is already
    initialized, regardless of the order in which clocks are processed.
    
    Note that we can no longer free individual scmi_clk instances if
    scmi_clk_ops_init() fails which shouldn't be a problem if the SCMI
    platform has proper per-agent clock discovery.
    
    Fixes: 65a8a3dd3b95f ("clk: scmi: Add support for clock {set,get}_parent")
    Reviewed-by: [email protected]
    Reviewed-by: Cristian Marussi <[email protected]>
    Reviewed-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sascha Hauer <[email protected]>
    Link: https://lore.kernel.org/r/20250612-clk-scmi-children-parent-fix-v3-1-7de52a27593d@pengutronix.de
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
crypto: s390/sha - Fix uninitialized variable in SHA-1 and SHA-2 [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Thu Jul 3 10:23:16 2025 -0700

    crypto: s390/sha - Fix uninitialized variable in SHA-1 and SHA-2
    
    commit 68279380266a5fa70e664de754503338e2ec3f43 upstream.
    
    Commit 88c02b3f79a6 ("s390/sha3: Support sha3 performance enhancements")
    added the field s390_sha_ctx::first_message_part and made it be used by
    s390_sha_update() (now s390_sha_update_blocks()).  At the time,
    s390_sha_update() was used by all the s390 SHA-1, SHA-2, and SHA-3
    algorithms.  However, only the initialization functions for SHA-3 were
    updated, leaving SHA-1 and SHA-2 using first_message_part uninitialized.
    
    This could cause e.g. the function code CPACF_KIMD_SHA_512 |
    CPACF_KIMD_NIP to be used instead of just CPACF_KIMD_SHA_512.  This
    apparently was harmless, as the SHA-1 and SHA-2 function codes ignore
    CPACF_KIMD_NIP; it is recognized only by the SHA-3 function codes
    (https://lore.kernel.org/r/[email protected]/).
    Therefore, this bug was found only when first_message_part was later
    converted to a boolean and UBSAN detected its uninitialized use.
    Regardless, let's fix this by just initializing to zero.
    
    Note: in 6.16, we need to patch SHA-1, SHA-384, and SHA-512.  In 6.15
    and earlier, we'll also need to patch SHA-224 and SHA-256, as they
    hadn't yet been librarified (which incidentally fixed this bug).
    
    Fixes: 88c02b3f79a6 ("s390/sha3: Support sha3 performance enhancements")
    Cc: [email protected]
    Reported-by: Ingo Franzki <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Acked-by: Heiko Carstens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
driver: bluetooth: hci_qca:fix unable to load the BT driver [+ + +]
Author: Shuai Zhang <[email protected]>
Date:   Mon Jun 9 18:55:00 2025 +0800

    driver: bluetooth: hci_qca:fix unable to load the BT driver
    
    [ Upstream commit db0ff7e15923ffa7067874604ca275e92343f1b1 ]
    
    Some modules have BT_EN enabled via a hardware pull-up,
    meaning it is not defined in the DTS and is not controlled
    through the power sequence. In such cases, fall through
    to follow the legacy flow.
    
    Signed-off-by: Shuai Zhang <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu: Include sdma_4_4_4.bin [+ + +]
Author: Kent Russell <[email protected]>
Date:   Tue Jun 24 11:42:06 2025 -0400

    drm/amdgpu: Include sdma_4_4_4.bin
    
    commit e54c5de901ea56fc68f8d56b3cce9940169346f4 upstream.
    
    This got missed during SDMA 4.4.4 support.
    
    Fixes: 968e3811c3e8 ("drm/amdgpu: add initial support for sdma444")
    Signed-off-by: Kent Russell <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 51526efe02714339ed6139f7bc348377d363200a)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdkfd: add hqd_sdma_get_doorbell callbacks for gfx7/8 [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Wed Jun 25 18:15:37 2025 -0400

    drm/amdkfd: add hqd_sdma_get_doorbell callbacks for gfx7/8
    
    commit 34659c1a1f4fd4c148ab13e13b11fd64df01ffcd upstream.
    
    These were missed when support was added for other generations.
    The callbacks are called unconditionally so we need to make
    sure all generations have them.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4304
    Link: https://github.com/ROCm/ROCm/issues/4965
    Fixes: bac38ca8c475 ("drm/amdkfd: implement per queue sdma reset for gfx 9.4+")
    Cc: Jonathan Kim <[email protected]>
    Reported-by: Johl Brown <[email protected]>
    Reviewed-by: Jonathan Kim <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 1e9d17a5dcf1242e9518e461d8e63ad35240e49e)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amdkfd: Don't call mmput from MMU notifier callback [+ + +]
Author: Philip Yang <[email protected]>
Date:   Fri Jun 20 18:32:32 2025 -0400

    drm/amdkfd: Don't call mmput from MMU notifier callback
    
    commit cf234231fcbc7d391e2135b9518613218cc5347f upstream.
    
    If the process is exiting, the mmput inside mmu notifier callback from
    compactd or fork or numa balancing could release the last reference
    of mm struct to call exit_mmap and free_pgtable, this triggers deadlock
    with below backtrace.
    
    The deadlock will leak kfd process as mmu notifier release is not called
    and cause VRAM leaking.
    
    The fix is to take mm reference mmget_non_zero when adding prange to the
    deferred list to pair with mmput in deferred list work.
    
    If prange split and add into pchild list, the pchild work_item.mm is not
    used, so remove the mm parameter from svm_range_unmap_split and
    svm_range_add_child.
    
    The backtrace of hung task:
    
     INFO: task python:348105 blocked for more than 64512 seconds.
     Call Trace:
      __schedule+0x1c3/0x550
      schedule+0x46/0xb0
      rwsem_down_write_slowpath+0x24b/0x4c0
      unlink_anon_vmas+0xb1/0x1c0
      free_pgtables+0xa9/0x130
      exit_mmap+0xbc/0x1a0
      mmput+0x5a/0x140
      svm_range_cpu_invalidate_pagetables+0x2b/0x40 [amdgpu]
      mn_itree_invalidate+0x72/0xc0
      __mmu_notifier_invalidate_range_start+0x48/0x60
      try_to_unmap_one+0x10fa/0x1400
      rmap_walk_anon+0x196/0x460
      try_to_unmap+0xbb/0x210
      migrate_page_unmap+0x54d/0x7e0
      migrate_pages_batch+0x1c3/0xae0
      migrate_pages_sync+0x98/0x240
      migrate_pages+0x25c/0x520
      compact_zone+0x29d/0x590
      compact_zone_order+0xb6/0xf0
      try_to_compact_pages+0xbe/0x220
      __alloc_pages_direct_compact+0x96/0x1a0
      __alloc_pages_slowpath+0x410/0x930
      __alloc_pages_nodemask+0x3a9/0x3e0
      do_huge_pmd_anonymous_page+0xd7/0x3e0
      __handle_mm_fault+0x5e3/0x5f0
      handle_mm_fault+0xf7/0x2e0
      hmm_vma_fault.isra.0+0x4d/0xa0
      walk_pmd_range.isra.0+0xa8/0x310
      walk_pud_range+0x167/0x240
      walk_pgd_range+0x55/0x100
      __walk_page_range+0x87/0x90
      walk_page_range+0xf6/0x160
      hmm_range_fault+0x4f/0x90
      amdgpu_hmm_range_get_pages+0x123/0x230 [amdgpu]
      amdgpu_ttm_tt_get_user_pages+0xb1/0x150 [amdgpu]
      init_user_pages+0xb1/0x2a0 [amdgpu]
      amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu+0x543/0x7d0 [amdgpu]
      kfd_ioctl_alloc_memory_of_gpu+0x24c/0x4e0 [amdgpu]
      kfd_ioctl+0x29d/0x500 [amdgpu]
    
    Fixes: fa582c6f3684 ("drm/amdkfd: Use mmget_not_zero in MMU notifier")
    Signed-off-by: Philip Yang <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit a29e067bd38946f752b0ef855f3dfff87e77bec7)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling [+ + +]
Author: Kaustabh Chakraborty <[email protected]>
Date:   Fri Jun 27 00:50:30 2025 +0530

    drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling
    
    commit b846350aa272de99bf6fecfa6b08e64ebfb13173 upstream.
    
    If there's support for another console device (such as a TTY serial),
    the kernel occasionally panics during boot. The panic message and a
    relevant snippet of the call stack is as follows:
    
      Unable to handle kernel NULL pointer dereference at virtual address 000000000000000
      Call trace:
        drm_crtc_handle_vblank+0x10/0x30 (P)
        decon_irq_handler+0x88/0xb4
        [...]
    
    Otherwise, the panics don't happen. This indicates that it's some sort
    of race condition.
    
    Add a check to validate if the drm device can handle vblanks before
    calling drm_crtc_handle_vblank() to avoid this.
    
    Cc: [email protected]
    Fixes: 96976c3d9aff ("drm/exynos: Add DECON driver")
    Signed-off-by: Kaustabh Chakraborty <[email protected]>
    Signed-off-by: Inki Dae <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/framebuffer: Acquire internal references on GEM handles [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Jul 7 15:11:55 2025 +0200

    drm/framebuffer: Acquire internal references on GEM handles
    
    commit f6bfc9afc7510cb5e6fbe0a17c507917b0120280 upstream.
    
    Acquire GEM handles in drm_framebuffer_init() and release them in
    the corresponding drm_framebuffer_cleanup(). Ties the handle's
    lifetime to the framebuffer. Not all GEM buffer objects have GEM
    handles. If not set, no refcounting takes place. This is the case
    for some fbdev emulation. This is not a problem as these GEM objects
    do not use dma-bufs and drivers will not release them while fbdev
    emulation is running. Framebuffer flags keep a bit per color plane
    of which the framebuffer holds a GEM handle reference.
    
    As all drivers use drm_framebuffer_init(), they will now all hold
    dma-buf references as fixed in commit 5307dce878d4 ("drm/gem: Acquire
    references on GEM handles for framebuffers").
    
    In the GEM framebuffer helpers, restore the original ref counting
    on buffer objects. As the helpers for handle refcounting are now
    no longer called from outside the DRM core, unexport the symbols.
    
    v3:
    - don't mix internal flags with mode flags (Christian)
    v2:
    - track framebuffer handle refs by flag
    - drop gma500 cleanup (Christian)
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Fixes: 5307dce878d4 ("drm/gem: Acquire references on GEM handles for framebuffers")
    Reported-by: Bert Karwatzki <[email protected]>
    Closes: https://lore.kernel.org/dri-devel/[email protected]/
    Tested-by: Bert Karwatzki <[email protected]>
    Tested-by: Mario Limonciello <[email protected]>
    Tested-by: Borislav Petkov (AMD) <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: Anusha Srivatsa <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Sumit Semwal <[email protected]>
    Cc: "Christian König" <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/gem: Acquire references on GEM handles for framebuffers [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Jun 30 10:36:47 2025 +0200

    drm/gem: Acquire references on GEM handles for framebuffers
    
    commit 5307dce878d4126e1b375587318955bd019c3741 upstream.
    
    A GEM handle can be released while the GEM buffer object is attached
    to a DRM framebuffer. This leads to the release of the dma-buf backing
    the buffer object, if any. [1] Trying to use the framebuffer in further
    mode-setting operations leads to a segmentation fault. Most easily
    happens with driver that use shadow planes for vmap-ing the dma-buf
    during a page flip. An example is shown below.
    
    [  156.791968] ------------[ cut here ]------------
    [  156.796830] WARNING: CPU: 2 PID: 2255 at drivers/dma-buf/dma-buf.c:1527 dma_buf_vmap+0x224/0x430
    [...]
    [  156.942028] RIP: 0010:dma_buf_vmap+0x224/0x430
    [  157.043420] Call Trace:
    [  157.045898]  <TASK>
    [  157.048030]  ? show_trace_log_lvl+0x1af/0x2c0
    [  157.052436]  ? show_trace_log_lvl+0x1af/0x2c0
    [  157.056836]  ? show_trace_log_lvl+0x1af/0x2c0
    [  157.061253]  ? drm_gem_shmem_vmap+0x74/0x710
    [  157.065567]  ? dma_buf_vmap+0x224/0x430
    [  157.069446]  ? __warn.cold+0x58/0xe4
    [  157.073061]  ? dma_buf_vmap+0x224/0x430
    [  157.077111]  ? report_bug+0x1dd/0x390
    [  157.080842]  ? handle_bug+0x5e/0xa0
    [  157.084389]  ? exc_invalid_op+0x14/0x50
    [  157.088291]  ? asm_exc_invalid_op+0x16/0x20
    [  157.092548]  ? dma_buf_vmap+0x224/0x430
    [  157.096663]  ? dma_resv_get_singleton+0x6d/0x230
    [  157.101341]  ? __pfx_dma_buf_vmap+0x10/0x10
    [  157.105588]  ? __pfx_dma_resv_get_singleton+0x10/0x10
    [  157.110697]  drm_gem_shmem_vmap+0x74/0x710
    [  157.114866]  drm_gem_vmap+0xa9/0x1b0
    [  157.118763]  drm_gem_vmap_unlocked+0x46/0xa0
    [  157.123086]  drm_gem_fb_vmap+0xab/0x300
    [  157.126979]  drm_atomic_helper_prepare_planes.part.0+0x487/0xb10
    [  157.133032]  ? lockdep_init_map_type+0x19d/0x880
    [  157.137701]  drm_atomic_helper_commit+0x13d/0x2e0
    [  157.142671]  ? drm_atomic_nonblocking_commit+0xa0/0x180
    [  157.147988]  drm_mode_atomic_ioctl+0x766/0xe40
    [...]
    [  157.346424] ---[ end trace 0000000000000000 ]---
    
    Acquiring GEM handles for the framebuffer's GEM buffer objects prevents
    this from happening. The framebuffer's cleanup later puts the handle
    references.
    
    Commit 1a148af06000 ("drm/gem-shmem: Use dma_buf from GEM object
    instance") triggers the segmentation fault easily by using the dma-buf
    field more widely. The underlying issue with reference counting has
    been present before.
    
    v2:
    - acquire the handle instead of the BO (Christian)
    - fix comment style (Christian)
    - drop the Fixes tag (Christian)
    - rename err_ gotos
    - add missing Link tag
    
    Suggested-by: Christian König <[email protected]>
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Link: https://elixir.bootlin.com/linux/v6.15/source/drivers/gpu/drm/drm_gem.c#L241 # [1]
    Cc: Thomas Zimmermann <[email protected]>
    Cc: Anusha Srivatsa <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Sumit Semwal <[email protected]>
    Cc: "Christian König" <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/gem: Fix race in drm_gem_handle_create_tail() [+ + +]
Author: Simona Vetter <[email protected]>
Date:   Mon Jul 7 17:18:13 2025 +0200

    drm/gem: Fix race in drm_gem_handle_create_tail()
    
    commit bd46cece51a36ef088f22ef0416ac13b0a46d5b0 upstream.
    
    Object creation is a careful dance where we must guarantee that the
    object is fully constructed before it is visible to other threads, and
    GEM buffer objects are no difference.
    
    Final publishing happens by calling drm_gem_handle_create(). After
    that the only allowed thing to do is call drm_gem_object_put() because
    a concurrent call to the GEM_CLOSE ioctl with a correctly guessed id
    (which is trivial since we have a linear allocator) can already tear
    down the object again.
    
    Luckily most drivers get this right, the very few exceptions I've
    pinged the relevant maintainers for. Unfortunately we also need
    drm_gem_handle_create() when creating additional handles for an
    already existing object (e.g. GETFB ioctl or the various bo import
    ioctl), and hence we cannot have a drm_gem_handle_create_and_put() as
    the only exported function to stop these issues from happening.
    
    Now unfortunately the implementation of drm_gem_handle_create() isn't
    living up to standards: It does correctly finishe object
    initialization at the global level, and hence is safe against a
    concurrent tear down. But it also sets up the file-private aspects of
    the handle, and that part goes wrong: We fully register the object in
    the drm_file.object_idr before calling drm_vma_node_allow() or
    obj->funcs->open, which opens up races against concurrent removal of
    that handle in drm_gem_handle_delete().
    
    Fix this with the usual two-stage approach of first reserving the
    handle id, and then only registering the object after we've completed
    the file-private setup.
    
    Jacek reported this with a testcase of concurrently calling GEM_CLOSE
    on a freshly-created object (which also destroys the object), but it
    should be possible to hit this with just additional handles created
    through import or GETFB without completed destroying the underlying
    object with the concurrent GEM_CLOSE ioctl calls.
    
    Note that the close-side of this race was fixed in f6cd7daecff5 ("drm:
    Release driver references to handle before making it available
    again"), which means a cool 9 years have passed until someone noticed
    that we need to make this symmetry or there's still gaps left :-/
    Without the 2-stage close approach we'd still have a race, therefore
    that's an integral part of this bugfix.
    
    More importantly, this means we can have NULL pointers behind
    allocated id in our drm_file.object_idr. We need to check for that
    now:
    
    - drm_gem_handle_delete() checks for ERR_OR_NULL already
    
    - drm_gem.c:object_lookup() also chekcs for NULL
    
    - drm_gem_release() should never be called if there's another thread
      still existing that could call into an IOCTL that creates a new
      handle, so cannot race. For paranoia I added a NULL check to
      drm_gem_object_release_handle() though.
    
    - most drivers (etnaviv, i915, msm) are find because they use
      idr_find(), which maps both ENOENT and NULL to NULL.
    
    - drivers using idr_for_each_entry() should also be fine, because
      idr_get_next does filter out NULL entries and continues the
      iteration.
    
    - The same holds for drm_show_memory_stats().
    
    v2: Use drm_WARN_ON (Thomas)
    
    Reported-by: Jacek Lawrynowicz <[email protected]>
    Tested-by: Jacek Lawrynowicz <[email protected]>
    Reviewed-by: Thomas Zimmermann <[email protected]>
    Cc: [email protected]
    Cc: Jacek Lawrynowicz <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: David Airlie <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Signed-off-by: Simona Vetter <[email protected]>
    Signed-off-by: Simona Vetter <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/imagination: Fix kernel crash when hard resetting the GPU [+ + +]
Author: Alessio Belle <[email protected]>
Date:   Tue Jun 24 15:22:08 2025 +0100

    drm/imagination: Fix kernel crash when hard resetting the GPU
    
    commit d38376b3ee48d073c64e75e150510d7e6b4b04f7 upstream.
    
    The GPU hard reset sequence calls pm_runtime_force_suspend() and
    pm_runtime_force_resume(), which according to their documentation should
    only be used during system-wide PM transitions to sleep states.
    
    The main issue though is that depending on some internal runtime PM
    state as seen by pm_runtime_force_suspend() (whether the usage count is
    <= 1), pm_runtime_force_resume() might not resume the device unless
    needed. If that happens, the runtime PM resume callback
    pvr_power_device_resume() is not called, the GPU clocks are not
    re-enabled, and the kernel crashes on the next attempt to access GPU
    registers as part of the power-on sequence.
    
    Replace calls to pm_runtime_force_suspend() and
    pm_runtime_force_resume() with direct calls to the driver's runtime PM
    callbacks, pvr_power_device_suspend() and pvr_power_device_resume(),
    to ensure clocks are re-enabled and avoid the kernel crash.
    
    Fixes: cc1aeedb98ad ("drm/imagination: Implement firmware infrastructure and META FW support")
    Signed-off-by: Alessio Belle <[email protected]>
    Reviewed-by: Matt Coster <[email protected]>
    Link: https://lore.kernel.org/r/20250624-fix-kernel-crash-gpu-hard-reset-v1-1-6d24810d72a6@imgtec.com
    Cc: [email protected]
    Signed-off-by: Matt Coster <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/nouveau/gsp: fix potential leak of memory used during acpi init [+ + +]
Author: Ben Skeggs <[email protected]>
Date:   Tue Jun 17 14:00:36 2025 +1000

    drm/nouveau/gsp: fix potential leak of memory used during acpi init
    
    [ Upstream commit d133036a0b23d3ef781d067ccdea6bbfb381e0cf ]
    
    If any of the ACPI calls fail, memory allocated for the input buffer
    would be leaked.  Fix failure paths to free allocated memory.
    
    Also add checks to ensure the allocations succeeded in the first place.
    
    Reported-by: Danilo Krummrich <[email protected]>
    Fixes: 176fdcbddfd2 ("drm/nouveau/gsp/r535: add support for booting GSP-RM")
    Signed-off-by: Ben Skeggs <[email protected]>
    Signed-off-by: Danilo Krummrich <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/nouveau: Do not fail module init on debugfs errors [+ + +]
Author: Aaron Thompson <[email protected]>
Date:   Thu Jul 3 21:19:49 2025 +0000

    drm/nouveau: Do not fail module init on debugfs errors
    
    commit 78f88067d5c56d9aed69f27e238742841461cf67 upstream.
    
    If CONFIG_DEBUG_FS is enabled, nouveau_drm_init() returns an error if it
    fails to create the "nouveau" directory in debugfs. One case where that
    will happen is when debugfs access is restricted by
    CONFIG_DEBUG_FS_ALLOW_NONE or by the boot parameter debugfs=off, which
    cause the debugfs APIs to return -EPERM.
    
    So just ignore errors from debugfs. Note that nouveau_debugfs_root may
    be an error now, but that is a standard pattern for debugfs. From
    include/linux/debugfs.h:
    
    "NOTE: it's expected that most callers should _ignore_ the errors
    returned by this function. Other debugfs functions handle the fact that
    the "dentry" passed to them could be an error and they don't crash in
    that case. Drivers should generally work fine even if debugfs fails to
    init anyway."
    
    Fixes: 97118a1816d2 ("drm/nouveau: create module debugfs root")
    Cc: [email protected]
    Signed-off-by: Aaron Thompson <[email protected]>
    Acked-by: Timur Tabi <[email protected]>
    Signed-off-by: Danilo Krummrich <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/sched: Increment job count before swapping tail spsc queue [+ + +]
Author: Matthew Brost <[email protected]>
Date:   Fri Jun 13 14:20:13 2025 -0700

    drm/sched: Increment job count before swapping tail spsc queue
    
    commit 8af39ec5cf2be522c8eb43a3d8005ed59e4daaee upstream.
    
    A small race exists between spsc_queue_push and the run-job worker, in
    which spsc_queue_push may return not-first while the run-job worker has
    already idled due to the job count being zero. If this race occurs, job
    scheduling stops, leading to hangs while waiting on the job’s DMA
    fences.
    
    Seal this race by incrementing the job count before appending to the
    SPSC queue.
    
    This race was observed on a drm-tip 6.16-rc1 build with the Xe driver in
    an SVM test case.
    
    Fixes: 1b1f42d8fde4 ("drm: move amd_gpu_scheduler into common location")
    Fixes: 27105db6c63a ("drm/amdgpu: Add SPSC queue to scheduler.")
    Cc: [email protected]
    Signed-off-by: Matthew Brost <[email protected]>
    Reviewed-by: Jonathan Cavitt <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/tegra: nvdec: Fix dma_alloc_coherent error check [+ + +]
Author: Mikko Perttunen <[email protected]>
Date:   Wed Jul 2 11:08:07 2025 +0900

    drm/tegra: nvdec: Fix dma_alloc_coherent error check
    
    [ Upstream commit 44306a684cd1699b8562a54945ddc43e2abc9eab ]
    
    Check for NULL return value with dma_alloc_coherent, in line with
    Robin's fix for vic.c in 'drm/tegra: vic: Fix DMA API misuse'.
    
    Fixes: 46f226c93d35 ("drm/tegra: Add NVDEC driver")
    Signed-off-by: Mikko Perttunen <[email protected]>
    Signed-off-by: Thierry Reding <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/ttm: fix error handling in ttm_buffer_object_transfer [+ + +]
Author: Christian König <[email protected]>
Date:   Fri Jun 13 13:16:38 2025 +0200

    drm/ttm: fix error handling in ttm_buffer_object_transfer
    
    commit 97e000acf2e20a86a50a0ec8c2739f0846f37509 upstream.
    
    Unlocking the resv object was missing in the error path, additionally to
    that we should move over the resource only after the fence slot was
    reserved.
    
    Signed-off-by: Christian König <[email protected]>
    Reviewed-by: Matthew Brost <[email protected]>
    Fixes: c8d4c18bfbc4a ("dma-buf/drivers: make reserving a shared slot mandatory v4")
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/xe/bmg: fix compressed VRAM handling [+ + +]
Author: Matthew Auld <[email protected]>
Date:   Tue Jul 1 11:39:50 2025 +0100

    drm/xe/bmg: fix compressed VRAM handling
    
    commit fee58ca135a7b979c8b75e6d2eac60d695f9209b upstream.
    
    There looks to be an issue in our compression handling when the BO pages
    are very fragmented, where we choose to skip the identity map and
    instead fall back to emitting the PTEs by hand when migrating memory,
    such that we can hopefully do more work per blit operation. However in
    such a case we need to ensure the src PTEs are correctly tagged with a
    compression enabled PAT index on dgpu xe2+, otherwise the copy will
    simply treat the src memory as uncompressed, leading to corruption if
    the memory was compressed by the user.
    
    To fix this pass along use_comp_pat into emit_pte() on the src side, to
    indicate that compression should be considered.
    
    v2 (Jonathan): tweak the commit message
    
    Fixes: 523f191cc0c7 ("drm/xe/xe_migrate: Handle migration logic for xe2+ dgfx")
    Signed-off-by: Matthew Auld <[email protected]>
    Cc: Himal Prasad Ghimiray <[email protected]>
    Cc: Thomas Hellström <[email protected]>
    Cc: Akshata Jahagirdar <[email protected]>
    Cc: <[email protected]> # v6.12+
    Reviewed-by: Jonathan Cavitt <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit f7a2fd776e57bd6468644bdecd91ab3aba57ba58)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/xe/pf: Clear all LMTT pages on alloc [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Wed Jul 2 00:00:52 2025 +0200

    drm/xe/pf: Clear all LMTT pages on alloc
    
    [ Upstream commit 705a412a367f383430fa34bada387af2e52eb043 ]
    
    Our LMEM buffer objects are not cleared by default on alloc
    and during VF provisioning we only setup LMTT PTEs for the
    actually provisioned LMEM range. But beyond that valid range
    we might leave some stale data that could either point to some
    other VFs allocations or even to the PF pages.
    
    Explicitly clear all new LMTT page to avoid the risk that a
    malicious VF would try to exploit that gap.
    
    While around add asserts to catch any undesired PTE overwrites
    and low-level debug traces to track LMTT PT life-cycle.
    
    Fixes: b1d204058218 ("drm/xe/pf: Introduce Local Memory Translation Table")
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Cc: Michał Winiarski <[email protected]>
    Cc: Lukasz Laguna <[email protected]>
    Reviewed-by: Michał Winiarski <[email protected]>
    Reviewed-by: Piotr Piórkowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit 3fae6918a3e27cce20ded2551f863fb05d4bef8d)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/pm: Correct comment of xe_pm_set_vram_threshold() [+ + +]
Author: Shuicheng Lin <[email protected]>
Date:   Tue Jul 8 02:14:51 2025 +0000

    drm/xe/pm: Correct comment of xe_pm_set_vram_threshold()
    
    [ Upstream commit 0539c5eaf81f3f844213bf6b3137a53e5b04b083 ]
    
    The parameter threshold is with size in MiB, not in bits.
    Correct it to avoid any confusion.
    
    v2: s/mb/MiB, s/vram/VRAM, fix return section. (Michal)
    
    Fixes: 30c399529f4c ("drm/xe: Document Xe PM component")
    Cc: Michal Wajdeczko <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Signed-off-by: Shuicheng Lin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Stuart Summers <[email protected]>
    Signed-off-by: Rodrigo Vivi <[email protected]>
    (cherry picked from commit 0efec0500117947f924e5ac83be40f96378af85a)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe/pm: Restore display pm if there is error after display suspend [+ + +]
Author: Shuicheng Lin <[email protected]>
Date:   Tue Jul 8 03:54:25 2025 +0000

    drm/xe/pm: Restore display pm if there is error after display suspend
    
    [ Upstream commit 6d33df611a39a1b4ad9f2b609ded5d6efa04d97e ]
    
    xe_bo_evict_all() is called after xe_display_pm_suspend(). So if there
    is error with xe_bo_evict_all(), display pm should be restored.
    
    Fixes: 51462211f4a9 ("drm/xe/pxp: add PXP PM support")
    Fixes: cb8f81c17531 ("drm/xe/display: Make display suspend/resume work on discrete")
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Daniele Ceraolo Spurio <[email protected]>
    Cc: John Harrison <[email protected]>
    Signed-off-by: Shuicheng Lin <[email protected]>
    Reviewed-by: Daniele Ceraolo Spurio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    (cherry picked from commit 83dcee17855c4e5af037ae3262809036de127903)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe: Allocate PF queue size on pow2 boundary [+ + +]
Author: Matthew Brost <[email protected]>
Date:   Wed Jul 2 14:35:11 2025 -0700

    drm/xe: Allocate PF queue size on pow2 boundary
    
    commit c9a95dbe06102cf01afee4cd83ecb29f8d587a72 upstream.
    
    CIRC_SPACE does not work unless the size argument is a power of 2,
    allocate PF queue size on power of 2 boundary.
    
    Cc: [email protected]
    Fixes: 3338e4f90c14 ("drm/xe: Use topology to determine page fault queue size")
    Fixes: 29582e0ea75c ("drm/xe: Add page queue multiplier")
    Signed-off-by: Matthew Brost <[email protected]>
    Reviewed-by: Francois Dugast <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit 491b9783126303755717c0cbde0b08ee59b6abab)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dt-bindings: clock: mediatek: Add #reset-cells property for MT8188 [+ + +]
Author: Julien Massot <[email protected]>
Date:   Fri May 16 16:12:13 2025 +0200

    dt-bindings: clock: mediatek: Add #reset-cells property for MT8188
    
    commit a42b4dcc4f9f309a23e6de5ae57a680b9fd2ea10 upstream.
    
    The '#reset-cells' property is permitted for some of the MT8188
    clock controllers, but not listed as a valid property.
    
    Fixes: 9a5cd59640ac ("dt-bindings: clock: mediatek: Add SMI LARBs reset for MT8188")
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Julien Massot <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Acked-by: Conor Dooley <[email protected]>
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
EDAC: Initialize EDAC features sysfs attributes [+ + +]
Author: Shiju Jose <[email protected]>
Date:   Thu Jun 26 11:13:44 2025 +0100

    EDAC: Initialize EDAC features sysfs attributes
    
    [ Upstream commit 1e14ea901dc8d976d355ddc3e0de84ee86ef0596 ]
    
    Fix the lockdep splat caused by missing sysfs_attr_init() calls for the
    recently added EDAC feature's sysfs attributes.
    
    In lockdep_init_map_type(), the check for the lock-class key if
    (!static_obj(key) && !is_dynamic_key(key)) causes the splat.
    
      Backtrace:
      RIP: 0010:lockdep_init_map_type
      Call Trace:
       __kernfs_create_file
      sysfs_add_file_mode_ns
      internal_create_group
      internal_create_groups
      device_add
      ? __init_waitqueue_head
      edac_dev_register
      devm_cxl_memdev_edac_register
      ? lock_acquire
      ? find_held_lock
      ? cxl_mem_probe
      ? cxl_mem_probe
      ? lockdep_hardirqs_on
      ? cxl_mem_probe
      cxl_mem_probe
    
      [ bp: Massage. ]
    
    Fixes: f90b738166fe ("EDAC: Add scrub control feature")
    Fixes: bcbd069b11b0 ("EDAC: Add a Error Check Scrub control feature")
    Fixes: 699ea5219c4b ("EDAC: Add a memory repair control feature")
    Reported-by: Dave Jiang <[email protected]>
    Suggested-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Shiju Jose <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
erofs: address D-cache aliasing [+ + +]
Author: Gao Xiang <[email protected]>
Date:   Wed Jul 9 11:46:14 2025 +0800

    erofs: address D-cache aliasing
    
    commit 27917e8194f91dffd8b4825350c63cb68e98ce58 upstream.
    
    Flush the D-cache before unlocking folios for compressed inodes, as
    they are dirtied during decompression.
    
    Avoid calling flush_dcache_folio() on every CPU write, since it's more
    like playing whack-a-mole without real benefit.
    
    It has no impact on x86 and arm64/risc-v: on x86, flush_dcache_folio()
    is a no-op, and on arm64/risc-v, PG_dcache_clean (PG_arch_1) is clear
    for new page cache folios.  However, certain ARM boards are affected,
    as reported.
    
    Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression support")
    Closes: https://lore.kernel.org/r/[email protected]
    Closes: https://lore.kernel.org/r/[email protected]
    Tested-by: Jan Kiszka <[email protected]>
    Tested-by: Stefan Kerkmann <[email protected]>
    Signed-off-by: Gao Xiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

erofs: fix large fragment handling [+ + +]
Author: Gao Xiang <[email protected]>
Date:   Sat Jul 12 03:58:26 2025 +0800

    erofs: fix large fragment handling
    
    commit b44686c8391b427fb1c85a31c35077e6947c6d90 upstream.
    
    Fragments aren't limited by Z_EROFS_PCLUSTER_MAX_DSIZE. However, if
    a fragment's logical length is larger than Z_EROFS_PCLUSTER_MAX_DSIZE
    but the fragment is not the whole inode, it currently returns
    -EOPNOTSUPP because m_flags has the wrong EROFS_MAP_ENCODED flag set.
    It is not intended by design but should be rare, as it can only be
    reproduced by mkfs with `-Eall-fragments` in a specific case.
    
    Let's normalize fragment m_flags using the new EROFS_MAP_FRAGMENT.
    
    Reported-by: Axel Fontaine <[email protected]>
    Closes: https://github.com/erofs/erofs-utils/issues/23
    Fixes: 7c3ca1838a78 ("erofs: restrict pcluster size limitations")
    Signed-off-by: Gao Xiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

erofs: fix to add missing tracepoint in erofs_read_folio() [+ + +]
Author: Chao Yu <[email protected]>
Date:   Tue Jul 8 19:19:42 2025 +0800

    erofs: fix to add missing tracepoint in erofs_read_folio()
    
    commit 99f7619a77a0a2e3e2bcae676d0f301769167754 upstream.
    
    Commit 771c994ea51f ("erofs: convert all uncompressed cases to iomap")
    converts to use iomap interface, it removed trace_erofs_readpage()
    tracepoint in the meantime, let's add it back.
    
    Fixes: 771c994ea51f ("erofs: convert all uncompressed cases to iomap")
    Signed-off-by: Chao Yu <[email protected]>
    Reviewed-by: Gao Xiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

erofs: fix to add missing tracepoint in erofs_readahead() [+ + +]
Author: Chao Yu <[email protected]>
Date:   Mon Jul 7 16:48:32 2025 +0800

    erofs: fix to add missing tracepoint in erofs_readahead()
    
    [ Upstream commit d53238b614e01266a3d36b417b60a502e0698504 ]
    
    Commit 771c994ea51f ("erofs: convert all uncompressed cases to iomap")
    converts to use iomap interface, it removed trace_erofs_readahead()
    tracepoint in the meantime, let's add it back.
    
    Fixes: 771c994ea51f ("erofs: convert all uncompressed cases to iomap")
    Signed-off-by: Chao Yu <[email protected]>
    Reviewed-by: Gao Xiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

erofs: refine readahead tracepoint [+ + +]
Author: Gao Xiang <[email protected]>
Date:   Wed May 14 20:08:20 2025 +0800

    erofs: refine readahead tracepoint
    
    [ Upstream commit 4eb56b0761e75034dd35067a81da4c280c178262 ]
    
     - trace_erofs_readpages => trace_erofs_readahead;
    
     - Rename a redundant statement `nrpages = readahead_count(rac);`;
    
     - Move the tracepoint to the beginning of z_erofs_readahead().
    
    Signed-off-by: Gao Xiang <[email protected]>
    Reviewed-by: Hongbo Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gao Xiang <[email protected]>
    Stable-dep-of: d53238b614e0 ("erofs: fix to add missing tracepoint in erofs_readahead()")
    Signed-off-by: Sasha Levin <[email protected]>

 
eventpoll: don't decrement ep refcount while still holding the ep mutex [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Wed Jul 9 10:38:29 2025 -0700

    eventpoll: don't decrement ep refcount while still holding the ep mutex
    
    commit 8c2e52ebbe885c7eeaabd3b7ddcdc1246fc400d2 upstream.
    
    Jann Horn points out that epoll is decrementing the ep refcount and then
    doing a
    
        mutex_unlock(&ep->mtx);
    
    afterwards. That's very wrong, because it can lead to a use-after-free.
    
    That pattern is actually fine for the very last reference, because the
    code in question will delay the actual call to "ep_free(ep)" until after
    it has unlocked the mutex.
    
    But it's wrong for the much subtler "next to last" case when somebody
    *else* may also be dropping their reference and free the ep while we're
    still using the mutex.
    
    Note that this is true even if that other user is also using the same ep
    mutex: mutexes, unlike spinlocks, can not be used for object ownership,
    even if they guarantee mutual exclusion.
    
    A mutex "unlock" operation is not atomic, and as one user is still
    accessing the mutex as part of unlocking it, another user can come in
    and get the now released mutex and free the data structure while the
    first user is still cleaning up.
    
    See our mutex documentation in Documentation/locking/mutex-design.rst,
    in particular the section [1] about semantics:
    
            "mutex_unlock() may access the mutex structure even after it has
             internally released the lock already - so it's not safe for
             another context to acquire the mutex and assume that the
             mutex_unlock() context is not using the structure anymore"
    
    So if we drop our ep ref before the mutex unlock, but we weren't the
    last one, we may then unlock the mutex, another user comes in, drops
    _their_ reference and releases the 'ep' as it now has no users - all
    while the mutex_unlock() is still accessing it.
    
    Fix this by simply moving the ep refcount dropping to outside the mutex:
    the refcount itself is atomic, and doesn't need mutex protection (that's
    the whole _point_ of refcounts: unlike mutexes, they are inherently
    about object lifetimes).
    
    Reported-by: Jann Horn <[email protected]>
    Link: https://docs.kernel.org/locking/mutex-design.html#semantics [1]
    Cc: Alexander Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Jan Kara <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
Linux: fix proc_sys_compare() handling of in-lookup dentries [+ + +]
Author: Al Viro <[email protected]>
Date:   Mon Jun 30 02:52:13 2025 -0400

    fix proc_sys_compare() handling of in-lookup dentries
    
    [ Upstream commit b969f9614885c20f903e1d1f9445611daf161d6d ]
    
    There's one case where ->d_compare() can be called for an in-lookup
    dentry; usually that's nothing special from ->d_compare() point of
    view, but... proc_sys_compare() is weird.
    
    The thing is, /proc/sys subdirectories can look differently for
    different processes.  Up to and including having the same name
    resolve to different dentries - all of them hashed.
    
    The way it's done is ->d_compare() refusing to admit a match unless
    this dentry is supposed to be visible to this caller.  The information
    needed to discriminate between them is stored in inode; it is set
    during proc_sys_lookup() and until it's done d_splice_alias() we really
    can't tell who should that dentry be visible for.
    
    Normally there's no negative dentries in /proc/sys; we can run into
    a dying dentry in RCU dcache lookup, but those can be safely rejected.
    
    However, ->d_compare() is also called for in-lookup dentries, before
    they get positive - or hashed, for that matter.  In case of match
    we will wait until dentry leaves in-lookup state and repeat ->d_compare()
    afterwards.  In other words, the right behaviour is to treat the
    name match as sufficient for in-lookup dentries; if dentry is not
    for us, we'll see that when we recheck once proc_sys_lookup() is
    done with it.
    
    While we are at it, fix the misspelled READ_ONCE and WRITE_ONCE there.
    
    Fixes: d9171b934526 ("parallel lookups machinery, part 4 (and last)")
    Reported-by: NeilBrown <[email protected]>
    Reviewed-by: Christian Brauner <[email protected]>
    Reviewed-by: NeilBrown <[email protected]>
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gpiolib: fix performance regression when using gpio_chip_get_multiple() [+ + +]
Author: Hugo Villeneuve <[email protected]>
Date:   Thu Jul 3 15:18:29 2025 -0400

    gpiolib: fix performance regression when using gpio_chip_get_multiple()
    
    commit 30e0fd3c0273dc106320081793793a424f1f1950 upstream.
    
    commit 74abd086d2ee ("gpiolib: sanitize the return value of
    gpio_chip::get_multiple()") altered the value returned by
    gc->get_multiple() in case it is positive (> 0), but failed to return
    for other cases (<= 0).
    
    This may result in the "if (gc->get)" block being executed and thus
    negates the performance gain that is normally obtained by using
    gc->get_multiple().
    
    Fix by returning the result of gc->get_multiple() if it is <= 0.
    
    Also move the "ret" variable to the scope where it is used, which as an
    added bonus fixes an indentation error introduced by the aforementioned
    commit.
    
    Fixes: 74abd086d2ee ("gpiolib: sanitize the return value of gpio_chip::get_multiple()")
    Cc: [email protected]
    Signed-off-by: Hugo Villeneuve <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gre: Fix IPv6 multicast route creation. [+ + +]
Author: Guillaume Nault <[email protected]>
Date:   Wed Jul 9 16:30:10 2025 +0200

    gre: Fix IPv6 multicast route creation.
    
    commit 4e914ef063de40397e25a025c70d9737a9e45a8c upstream.
    
    Use addrconf_add_dev() instead of ipv6_find_idev() in
    addrconf_gre_config() so that we don't just get the inet6_dev, but also
    install the default ff00::/8 multicast route.
    
    Before commit 3e6a0243ff00 ("gre: Fix again IPv6 link-local address
    generation."), the multicast route was created at the end of the
    function by addrconf_add_mroute(). But this code path is now only taken
    in one particular case (gre devices not bound to a local IP address and
    in EUI64 mode). For all other cases, the function exits early and
    addrconf_add_mroute() is not called anymore.
    
    Using addrconf_add_dev() instead of ipv6_find_idev() in
    addrconf_gre_config(), fixes the problem as it will create the default
    multicast route for all gre devices. This also brings
    addrconf_gre_config() a bit closer to the normal netdevice IPv6
    configuration code (addrconf_dev_config()).
    
    Cc: [email protected]
    Fixes: 3e6a0243ff00 ("gre: Fix again IPv6 link-local address generation.")
    Reported-by: Aiden Yang <[email protected]>
    Closes: https://lore.kernel.org/netdev/CANR=AhRM7YHHXVxJ4DmrTNMeuEOY87K2mLmo9KMed1JMr20p6g@mail.gmail.com/
    Reviewed-by: Gary Guo <[email protected]>
    Tested-by: Gary Guo <[email protected]>
    Signed-off-by: Guillaume Nault <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/027a923dcb550ad115e6d93ee8bb7d310378bd01.1752070620.git.gnault@redhat.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY [+ + +]
Author: Zhang Heng <[email protected]>
Date:   Thu Jun 5 15:29:59 2025 +0800

    HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY
    
    [ Upstream commit 1a8953f4f7746c6a515989774fe03047c522c613 ]
    
    MARTLINKTECHNOLOGY is a microphone device, when the HID interface in an
    audio device is requested to get specific report id, the following error
    may occur.
    
    [  562.939373] usb 1-1.4.1.2: new full-speed USB device number 21 using xhci_hcd
    [  563.104908] usb 1-1.4.1.2: New USB device found, idVendor=4c4a, idProduct=4155, bcdDevice= 1.00
    [  563.104910] usb 1-1.4.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [  563.104911] usb 1-1.4.1.2: Product: USB Composite Device
    [  563.104912] usb 1-1.4.1.2: Manufacturer: SmartlinkTechnology
    [  563.104913] usb 1-1.4.1.2: SerialNumber: 20201111000001
    [  563.229499] input: SmartlinkTechnology USB Composite Device as /devices/pci0000:00/0000:00:07.1/0000:04:00.3/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1.2/1-1.4.1.2:1.2/0003:4C4A:4155.000F/input/input35
    [  563.291505] hid-generic 0003:4C4A:4155.000F: input,hidraw2: USB HID v2.01 Keyboard [SmartlinkTechnology USB Composite Device] on usb-0000:04:00.3-1.4.1.2/input2
    [  563.291557] usbhid 1-1.4.1.2:1.3: couldn't find an input interrupt endpoint
    [  568.506654] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  573.626656] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  578.746657] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  583.866655] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  588.986657] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    
    Ignore HID interface. The device is working properly.
    
    Signed-off-by: Zhang Heng <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2 [+ + +]
Author: Akira Inoue <[email protected]>
Date:   Thu Jun 12 13:34:38 2025 +0900

    HID: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2
    
    [ Upstream commit a8905238c3bbe13db90065ed74682418f23830c3 ]
    
    Add "Thinkpad X1 Tablet Gen 2 Keyboard" PID to hid-lenovo driver to fix trackpoint not working issue.
    
    Signed-off-by: Akira Inoue <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: nintendo: avoid bluetooth suspend/resume stalls [+ + +]
Author: Daniel J. Ogorchock <[email protected]>
Date:   Tue May 13 03:47:00 2025 -0400

    HID: nintendo: avoid bluetooth suspend/resume stalls
    
    [ Upstream commit 4a0381080397e77792a5168069f174d3e56175ff ]
    
    Ensure we don't stall or panic the kernel when using bluetooth-connected
    controllers. This was reported as an issue on android devices using
    kernel 6.6 due to the resume hook which had been added for usb joycons.
    
    First, set a new state value to JOYCON_CTLR_STATE_SUSPENDED in a
    newly-added nintendo_hid_suspend. This makes sure we will not stall out
    the kernel waiting for input reports during led classdev suspend. The
    stalls could happen if connectivity is unreliable or lost to the
    controller prior to suspend.
    
    Second, since we lose connectivity during suspend, do not try
    joycon_init() for bluetooth controllers in the nintendo_hid_resume path.
    
    Tested via multiple suspend/resume flows when using the controller both
    in USB and bluetooth modes.
    
    Signed-off-by: Daniel J. Ogorchock <[email protected]>
    Reviewed-by: Silvan Jegen <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras [+ + +]
Author: Chia-Lin Kao (AceLan) <[email protected]>
Date:   Tue May 6 13:50:15 2025 +0800

    HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras
    
    [ Upstream commit 54bae4c17c11688339eb73a04fd24203bb6e7494 ]
    
    The Chicony Electronics HP 5MP Cameras (USB ID 04F2:B824 & 04F2:B82C)
    report a HID sensor interface that is not actually implemented.
    Attempting to access this non-functional sensor via iio_info causes
    system hangs as runtime PM tries to wake up an unresponsive sensor.
    
    Add these 2 devices to the HID ignore list since the sensor interface is
    non-functional by design and should not be exposed to userspace.
    
    Signed-off-by: Chia-Lin Kao (AceLan) <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ibmvnic: Fix hardcoded NUM_RX_STATS/NUM_TX_STATS with dynamic sizeof [+ + +]
Author: Mingming Cao <[email protected]>
Date:   Wed Jul 9 08:33:32 2025 -0700

    ibmvnic: Fix hardcoded NUM_RX_STATS/NUM_TX_STATS with dynamic sizeof
    
    [ Upstream commit 01b8114b432d7baaa5e51ab229c12c4f36b8e2c6 ]
    
    The previous hardcoded definitions of NUM_RX_STATS and
    NUM_TX_STATS were not updated when new fields were added
    to the ibmvnic_{rx,tx}_queue_stats structures. Specifically,
    commit 2ee73c54a615 ("ibmvnic: Add stat for tx direct vs tx
    batched") added a fourth TX stat, but NUM_TX_STATS remained 3,
    leading to a mismatch.
    
    This patch replaces the static defines with dynamic sizeof-based
    calculations to ensure the stat arrays are correctly sized.
    This fixes incorrect indexing and prevents incomplete stat
    reporting in tools like ethtool.
    
    Fixes: 2ee73c54a615 ("ibmvnic: Add stat for tx direct vs tx batched")
    Signed-off-by: Mingming Cao <[email protected]>
    Reviewed-by: Dave Marquardt <[email protected]>
    Reviewed-by: Haren Myneni <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/msg_ring: ensure io_kiocb freeing is deferred for RCU [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Tue Jul 8 11:00:32 2025 -0600

    io_uring/msg_ring: ensure io_kiocb freeing is deferred for RCU
    
    commit fc582cd26e888b0652bc1494f252329453fd3b23 upstream.
    
    syzbot reports that defer/local task_work adding via msg_ring can hit
    a request that has been freed:
    
    CPU: 1 UID: 0 PID: 19356 Comm: iou-wrk-19354 Not tainted 6.16.0-rc4-syzkaller-00108-g17bbde2e1716 #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
    Call Trace:
     <TASK>
     dump_stack_lvl+0x189/0x250 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:408 [inline]
     print_report+0xd2/0x2b0 mm/kasan/report.c:521
     kasan_report+0x118/0x150 mm/kasan/report.c:634
     io_req_local_work_add io_uring/io_uring.c:1184 [inline]
     __io_req_task_work_add+0x589/0x950 io_uring/io_uring.c:1252
     io_msg_remote_post io_uring/msg_ring.c:103 [inline]
     io_msg_data_remote io_uring/msg_ring.c:133 [inline]
     __io_msg_ring_data+0x820/0xaa0 io_uring/msg_ring.c:151
     io_msg_ring_data io_uring/msg_ring.c:173 [inline]
     io_msg_ring+0x134/0xa00 io_uring/msg_ring.c:314
     __io_issue_sqe+0x17e/0x4b0 io_uring/io_uring.c:1739
     io_issue_sqe+0x165/0xfd0 io_uring/io_uring.c:1762
     io_wq_submit_work+0x6e9/0xb90 io_uring/io_uring.c:1874
     io_worker_handle_work+0x7cd/0x1180 io_uring/io-wq.c:642
     io_wq_worker+0x42f/0xeb0 io_uring/io-wq.c:696
     ret_from_fork+0x3fc/0x770 arch/x86/kernel/process.c:148
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
     </TASK>
    
    which is supposed to be safe with how requests are allocated. But msg
    ring requests alloc and free on their own, and hence must defer freeing
    to a sane time.
    
    Add an rcu_head and use kfree_rcu() in both spots where requests are
    freed. Only the one in io_msg_tw_complete() is strictly required as it
    has been visible on the other ring, but use it consistently in the other
    spot as well.
    
    This should not cause any other issues outside of KASAN rightfully
    complaining about it.
    
    Link: https://lore.kernel.org/io-uring/[email protected]/
    Reported-by: [email protected]
    Cc: [email protected]
    Fixes: 0617bb500bfa ("io_uring/msg_ring: improve handling of target CQE posting")
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
io_uring/zcrx: fix pp destruction warnings [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Mon Jul 7 09:52:33 2025 +0100

    io_uring/zcrx: fix pp destruction warnings
    
    [ Upstream commit 203817de269539c062724d97dfa5af3cdf77a3ec ]
    
    With multiple page pools and in some other cases we can have allocated
    niovs on page pool destruction. Remove a misplaced warning checking that
    all niovs are returned to zcrx on io_pp_zc_destroy(). It was reported
    before but apparently got lost.
    
    Reported-by: Pedro Tammela <[email protected]>
    Fixes: 34a3e60821ab9 ("io_uring/zcrx: implement zerocopy receive pp memory provider")
    Signed-off-by: Pavel Begunkov <[email protected]>
    Link: https://lore.kernel.org/r/b9e6d919d2964bc48ddbf8eb52fc9f5d118e9bc1.1751878185.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring: make fallocate be hashed work [+ + +]
Author: Fengnan Chang <[email protected]>
Date:   Mon Jun 23 19:02:18 2025 +0800

    io_uring: make fallocate be hashed work
    
    [ Upstream commit 88a80066af1617fab444776135d840467414beb6 ]
    
    Like ftruncate and write, fallocate operations on the same file cannot
    be executed in parallel, so it is better to make fallocate be hashed
    work.
    
    Signed-off-by: Fengnan Chang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: ipmi:msghandler: Fix potential memory corruption in ipmi_create_user() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Mon May 5 17:34:15 2025 +0300

    ipmi:msghandler: Fix potential memory corruption in ipmi_create_user()
    
    commit fa332f5dc6fc662ad7d3200048772c96b861cf6b upstream.
    
    The "intf" list iterator is an invalid pointer if the correct
    "intf->intf_num" is not found.  Calling atomic_dec(&intf->nr_users) on
    and invalid pointer will lead to memory corruption.
    
    We don't really need to call atomic_dec() if we haven't called
    atomic_add_return() so update the if (intf->in_shutdown) path as well.
    
    Fixes: 8e76741c3d8b ("ipmi: Add a limit on the number of users that may use IPMI")
    Signed-off-by: Dan Carpenter <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Corey Minyard <[email protected]>
    [ - Dropped change to the `if (intf->in_shutdown)` block since that logic
        doesn't exist yet.
      - Modified out_unlock to release the srcu lock instead of the mutex
        since we don't have the mutex here yet. ]
    Signed-off-by: Brendan Jackman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
irqchip/irq-msi-lib: Select CONFIG_GENERIC_MSI_IRQ [+ + +]
Author: Nam Cao <[email protected]>
Date:   Mon Jun 30 12:26:14 2025 +0200

    irqchip/irq-msi-lib: Select CONFIG_GENERIC_MSI_IRQ
    
    [ Upstream commit eb2c93e7028b4c9fe4761734d65ee40712d1c242 ]
    
    irq-msi-lib directly uses struct msi_domain_info and more things which are
    only available when CONFIG_GENERIC_MSI_IRQ=y.
    
    However, there is no dependency specified and CONFIG_IRQ_MSI_LIB can be
    enabled without CONFIG_GENERIC_MSI_IRQ, which causes the kernel build fail.
    
    Make IRQ_MSI_LIB select GENEREIC_MSI_IRQ to prevent that.
    
    Fixes: 72e257c6f058 ("irqchip: Provide irq-msi-lib")
    Reported-by: kernel test robot <[email protected]>
    Signed-off-by: Nam Cao <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/b0c44007f3b7e062228349a2395f8d850050db33.1751277765.git.namcao@linutronix.de
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Sasha Levin <[email protected]>

 
kallsyms: fix build without execinfo [+ + +]
Author: Achill Gilgenast <[email protected]>
Date:   Sun Jun 22 03:45:49 2025 +0200

    kallsyms: fix build without execinfo
    
    commit a95743b53031b015e8949e845a9f6fdfb2656347 upstream.
    
    Some libc's like musl libc don't provide execinfo.h since it's not part of
    POSIX.  In order to fix compilation on musl, only include execinfo.h if
    available (HAVE_BACKTRACE_SUPPORT)
    
    This was discovered with c104c16073b7 ("Kunit to check the longest symbol
    length") which starts to include linux/kallsyms.h with Alpine Linux'
    configs.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c104c16073b7 ("Kunit to check the longest symbol length")
    Signed-off-by: Achill Gilgenast <[email protected]>
    Cc: Luis Henriques <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kasan: remove kasan_find_vm_area() to prevent possible deadlock [+ + +]
Author: Yeoreum Yun <[email protected]>
Date:   Thu Jul 3 19:10:18 2025 +0100

    kasan: remove kasan_find_vm_area() to prevent possible deadlock
    
    commit 6ee9b3d84775944fb8c8a447961cd01274ac671c upstream.
    
    find_vm_area() couldn't be called in atomic_context.  If find_vm_area() is
    called to reports vm area information, kasan can trigger deadlock like:
    
    CPU0                                CPU1
    vmalloc();
     alloc_vmap_area();
      spin_lock(&vn->busy.lock)
                                        spin_lock_bh(&some_lock);
       <interrupt occurs>
       <in softirq>
       spin_lock(&some_lock);
                                        <access invalid address>
                                        kasan_report();
                                         print_report();
                                          print_address_description();
                                           kasan_find_vm_area();
                                            find_vm_area();
                                             spin_lock(&vn->busy.lock) // deadlock!
    
    To prevent possible deadlock while kasan reports, remove kasan_find_vm_area().
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c056a364e954 ("kasan: print virtual mapping info in reports")
    Signed-off-by: Yeoreum Yun <[email protected]>
    Reported-by: Yunseong Kim <[email protected]>
    Reviewed-by: Andrey Ryabinin <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Andrey Konovalov <[email protected]>
    Cc: Byungchul Park <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Sebastian Andrzej Siewior <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    Cc: Vincenzo Frascino <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked() [+ + +]
Author: Al Viro <[email protected]>
Date:   Sun Jul 6 02:26:45 2025 +0100

    ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked()
    
    commit 277627b431a0a6401635c416a21b2a0f77a77347 upstream.
    
    If the call of ksmbd_vfs_lock_parent() fails, we drop the parent_path
    references and return an error.  We need to drop the write access we
    just got on parent_path->mnt before we drop the mount reference - callers
    assume that ksmbd_vfs_kern_path_locked() returns with mount write
    access grabbed if and only if it has returned 0.
    
    Fixes: 864fb5d37163 ("ksmbd: fix possible deadlock in smb2_open")
    Signed-off-by: Al Viro <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ksmbd: fix potential use-after-free in oplock/lease break ack [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Tue Jul 8 07:47:40 2025 +0900

    ksmbd: fix potential use-after-free in oplock/lease break ack
    
    commit 50f930db22365738d9387c974416f38a06e8057e upstream.
    
    If ksmbd_iov_pin_rsp return error, use-after-free can happen by
    accessing opinfo->state and opinfo_put and ksmbd_fd_put could
    called twice.
    
    Reported-by: Ziyan Xu <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
KVM: Allow CPU to reschedule while setting per-page memory attributes [+ + +]
Author: Liam Merwick <[email protected]>
Date:   Mon Jun 9 09:11:19 2025 +0000

    KVM: Allow CPU to reschedule while setting per-page memory attributes
    
    commit 47bb584237cc285e3a860b70c01f7bda9dcfb05b upstream.
    
    When running an SEV-SNP guest with a sufficiently large amount of memory (1TB+),
    the host can experience CPU soft lockups when running an operation in
    kvm_vm_set_mem_attributes() to set memory attributes on the whole
    range of guest memory.
    
    watchdog: BUG: soft lockup - CPU#8 stuck for 26s! [qemu-kvm:6372]
    CPU: 8 UID: 0 PID: 6372 Comm: qemu-kvm Kdump: loaded Not tainted 6.15.0-rc7.20250520.el9uek.rc1.x86_64 #1 PREEMPT(voluntary)
    Hardware name: Oracle Corporation ORACLE SERVER E4-2c/Asm,MB Tray,2U,E4-2c, BIOS 78016600 11/13/2024
    RIP: 0010:xas_create+0x78/0x1f0
    Code: 00 00 00 41 80 fc 01 0f 84 82 00 00 00 ba 06 00 00 00 bd 06 00 00 00 49 8b 45 08 4d 8d 65 08 41 39 d6 73 20 83 ed 06 48 85 c0 <74> 67 48 89 c2 83 e2 03 48 83 fa 02 75 0c 48 3d 00 10 00 00 0f 87
    RSP: 0018:ffffad890a34b940 EFLAGS: 00000286
    RAX: ffff96f30b261daa RBX: ffffad890a34b9c8 RCX: 0000000000000000
    RDX: 000000000000001e RSI: 0000000000000000 RDI: 0000000000000000
    RBP: 0000000000000018 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffffad890a356868
    R13: ffffad890a356860 R14: 0000000000000000 R15: ffffad890a356868
    FS:  00007f5578a2a400(0000) GS:ffff97ed317e1000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f015c70fb18 CR3: 00000001109fd006 CR4: 0000000000f70ef0
    PKRU: 55555554
    Call Trace:
     <TASK>
     xas_store+0x58/0x630
     __xa_store+0xa5/0x130
     xa_store+0x2c/0x50
     kvm_vm_set_mem_attributes+0x343/0x710 [kvm]
     kvm_vm_ioctl+0x796/0xab0 [kvm]
     __x64_sys_ioctl+0xa3/0xd0
     do_syscall_64+0x8c/0x7a0
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    RIP: 0033:0x7f5578d031bb
    Code: ff ff ff 85 c0 79 9b 49 c7 c4 ff ff ff ff 5b 5d 4c 89 e0 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 2d 4c 0f 00 f7 d8 64 89 01 48
    RSP: 002b:00007ffe0a742b88 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 000000004020aed2 RCX: 00007f5578d031bb
    RDX: 00007ffe0a742c80 RSI: 000000004020aed2 RDI: 000000000000000b
    RBP: 0000010000000000 R08: 0000010000000000 R09: 0000017680000000
    R10: 0000000000000080 R11: 0000000000000246 R12: 00005575e5f95120
    R13: 00007ffe0a742c80 R14: 0000000000000008 R15: 00005575e5f961e0
    
    While looping through the range of memory setting the attributes,
    call cond_resched() to give the scheduler a chance to run a higher
    priority task on the runqueue if necessary and avoid staying in
    kernel mode long enough to trigger the lockup.
    
    Fixes: 5a475554db1e ("KVM: Introduce per-page memory attributes")
    Cc: [email protected] # 6.12.x
    Suggested-by: Sean Christopherson <[email protected]>
    Signed-off-by: Liam Merwick <[email protected]>
    Reviewed-by: Pankaj Gupta <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: SVM: Add missing member in SNP_LAUNCH_START command structure [+ + +]
Author: Nikunj A Dadhania <[email protected]>
Date:   Tue Apr 8 15:02:11 2025 +0530

    KVM: SVM: Add missing member in SNP_LAUNCH_START command structure
    
    commit 51a4273dcab39dd1e850870945ccec664352d383 upstream.
    
    The sev_data_snp_launch_start structure should include a 4-byte
    desired_tsc_khz field before the gosvw field, which was missed in the
    initial implementation. As a result, the structure is 4 bytes shorter than
    expected by the firmware, causing the gosvw field to start 4 bytes early.
    Fix this by adding the missing 4-byte member for the desired TSC frequency.
    
    Fixes: 3a45dc2b419e ("crypto: ccp: Define the SEV-SNP commands")
    Cc: [email protected]
    Suggested-by: Tom Lendacky <[email protected]>
    Reviewed-by: Tom Lendacky <[email protected]>
    Tested-by: Vaishali Thakkar <[email protected]>
    Signed-off-by: Nikunj A Dadhania <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: SVM: Reject SEV{-ES} intra host migration if vCPU creation is in-flight [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Mon Jun 2 15:44:58 2025 -0700

    KVM: SVM: Reject SEV{-ES} intra host migration if vCPU creation is in-flight
    
    commit ecf371f8b02d5e31b9aa1da7f159f1b2107bdb01 upstream.
    
    Reject migration of SEV{-ES} state if either the source or destination VM
    is actively creating a vCPU, i.e. if kvm_vm_ioctl_create_vcpu() is in the
    section between incrementing created_vcpus and online_vcpus.  The bulk of
    vCPU creation runs _outside_ of kvm->lock to allow creating multiple vCPUs
    in parallel, and so sev_info.es_active can get toggled from false=>true in
    the destination VM after (or during) svm_vcpu_create(), resulting in an
    SEV{-ES} VM effectively having a non-SEV{-ES} vCPU.
    
    The issue manifests most visibly as a crash when trying to free a vCPU's
    NULL VMSA page in an SEV-ES VM, but any number of things can go wrong.
    
      BUG: unable to handle page fault for address: ffffebde00000000
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: Oops: 0000 [#1] SMP KASAN NOPTI
      CPU: 227 UID: 0 PID: 64063 Comm: syz.5.60023 Tainted: G     U     O        6.15.0-smp-DEV #2 NONE
      Tainted: [U]=USER, [O]=OOT_MODULE
      Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 12.52.0-0 10/28/2024
      RIP: 0010:constant_test_bit arch/x86/include/asm/bitops.h:206 [inline]
      RIP: 0010:arch_test_bit arch/x86/include/asm/bitops.h:238 [inline]
      RIP: 0010:_test_bit include/asm-generic/bitops/instrumented-non-atomic.h:142 [inline]
      RIP: 0010:PageHead include/linux/page-flags.h:866 [inline]
      RIP: 0010:___free_pages+0x3e/0x120 mm/page_alloc.c:5067
      Code: <49> f7 06 40 00 00 00 75 05 45 31 ff eb 0c 66 90 4c 89 f0 4c 39 f0
      RSP: 0018:ffff8984551978d0 EFLAGS: 00010246
      RAX: 0000777f80000001 RBX: 0000000000000000 RCX: ffffffff918aeb98
      RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffffebde00000000
      RBP: 0000000000000000 R08: ffffebde00000007 R09: 1ffffd7bc0000000
      R10: dffffc0000000000 R11: fffff97bc0000001 R12: dffffc0000000000
      R13: ffff8983e19751a8 R14: ffffebde00000000 R15: 1ffffd7bc0000000
      FS:  0000000000000000(0000) GS:ffff89ee661d3000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: ffffebde00000000 CR3: 000000793ceaa000 CR4: 0000000000350ef0
      DR0: 0000000000000000 DR1: 0000000000000b5f DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       sev_free_vcpu+0x413/0x630 arch/x86/kvm/svm/sev.c:3169
       svm_vcpu_free+0x13a/0x2a0 arch/x86/kvm/svm/svm.c:1515
       kvm_arch_vcpu_destroy+0x6a/0x1d0 arch/x86/kvm/x86.c:12396
       kvm_vcpu_destroy virt/kvm/kvm_main.c:470 [inline]
       kvm_destroy_vcpus+0xd1/0x300 virt/kvm/kvm_main.c:490
       kvm_arch_destroy_vm+0x636/0x820 arch/x86/kvm/x86.c:12895
       kvm_put_kvm+0xb8e/0xfb0 virt/kvm/kvm_main.c:1310
       kvm_vm_release+0x48/0x60 virt/kvm/kvm_main.c:1369
       __fput+0x3e4/0x9e0 fs/file_table.c:465
       task_work_run+0x1a9/0x220 kernel/task_work.c:227
       exit_task_work include/linux/task_work.h:40 [inline]
       do_exit+0x7f0/0x25b0 kernel/exit.c:953
       do_group_exit+0x203/0x2d0 kernel/exit.c:1102
       get_signal+0x1357/0x1480 kernel/signal.c:3034
       arch_do_signal_or_restart+0x40/0x690 arch/x86/kernel/signal.c:337
       exit_to_user_mode_loop kernel/entry/common.c:111 [inline]
       exit_to_user_mode_prepare include/linux/entry-common.h:329 [inline]
       __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
       syscall_exit_to_user_mode+0x67/0xb0 kernel/entry/common.c:218
       do_syscall_64+0x7c/0x150 arch/x86/entry/syscall_64.c:100
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
      RIP: 0033:0x7f87a898e969
       </TASK>
      Modules linked in: gq(O)
      gsmi: Log Shutdown Reason 0x03
      CR2: ffffebde00000000
      ---[ end trace 0000000000000000 ]---
    
    Deliberately don't check for a NULL VMSA when freeing the vCPU, as crashing
    the host is likely desirable due to the VMSA being consumed by hardware.
    E.g. if KVM manages to allow VMRUN on the vCPU, hardware may read/write a
    bogus VMSA page.  Accessing PFN 0 is "fine"-ish now that it's sequestered
    away thanks to L1TF, but panicking in this scenario is preferable to
    potentially running with corrupted state.
    
    Reported-by: Alexander Potapenko <[email protected]>
    Tested-by: Alexander Potapenko <[email protected]>
    Fixes: 0b020f5af092 ("KVM: SEV: Add support for SEV-ES intra host migration")
    Fixes: b56639318bb2 ("KVM: SEV: Add support for SEV intra host migration")
    Cc: [email protected]
    Cc: James Houghton <[email protected]>
    Cc: Peter Gonda <[email protected]>
    Reviewed-by: Liam Merwick <[email protected]>
    Tested-by: Liam Merwick <[email protected]>
    Reviewed-by: James Houghton <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: x86/hyper-v: Skip non-canonical addresses during PV TLB flush [+ + +]
Author: Manuel Andreas <[email protected]>
Date:   Wed Jun 25 15:53:19 2025 +0200

    KVM: x86/hyper-v: Skip non-canonical addresses during PV TLB flush
    
    commit fa787ac07b3ceb56dd88a62d1866038498e96230 upstream.
    
    In KVM guests with Hyper-V hypercalls enabled, the hypercalls
    HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST and HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX
    allow a guest to request invalidation of portions of a virtual TLB.
    For this, the hypercall parameter includes a list of GVAs that are supposed
    to be invalidated.
    
    However, when non-canonical GVAs are passed, there is currently no
    filtering in place and they are eventually passed to checked invocations of
    INVVPID on Intel / INVLPGA on AMD.  While AMD's INVLPGA silently ignores
    non-canonical addresses (effectively a no-op), Intel's INVVPID explicitly
    signals VM-Fail and ultimately triggers the WARN_ONCE in invvpid_error():
    
      invvpid failed: ext=0x0 vpid=1 gva=0xaaaaaaaaaaaaa000
      WARNING: CPU: 6 PID: 326 at arch/x86/kvm/vmx/vmx.c:482
      invvpid_error+0x91/0xa0 [kvm_intel]
      Modules linked in: kvm_intel kvm 9pnet_virtio irqbypass fuse
      CPU: 6 UID: 0 PID: 326 Comm: kvm-vm Not tainted 6.15.0 #14 PREEMPT(voluntary)
      RIP: 0010:invvpid_error+0x91/0xa0 [kvm_intel]
      Call Trace:
        vmx_flush_tlb_gva+0x320/0x490 [kvm_intel]
        kvm_hv_vcpu_flush_tlb+0x24f/0x4f0 [kvm]
        kvm_arch_vcpu_ioctl_run+0x3013/0x5810 [kvm]
    
    Hyper-V documents that invalid GVAs (those that are beyond a partition's
    GVA space) are to be ignored.  While not completely clear whether this
    ruling also applies to non-canonical GVAs, it is likely fine to make that
    assumption, and manual testing on Azure confirms "real" Hyper-V interprets
    the specification in the same way.
    
    Skip non-canonical GVAs when processing the list of address to avoid
    tripping the INVVPID failure.  Alternatively, KVM could filter out "bad"
    GVAs before inserting into the FIFO, but practically speaking the only
    downside of pushing validation to the final processing is that doing so
    is suboptimal for the guest, and no well-behaved guest will request TLB
    flushes for non-canonical addresses.
    
    Fixes: 260970862c88 ("KVM: x86: hyper-v: Handle HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST{,EX} calls gently")
    Cc: [email protected]
    Signed-off-by: Manuel Andreas <[email protected]>
    Suggested-by: Vitaly Kuznetsov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: x86/xen: Allow 'out of range' event channel ports in IRQ routing table. [+ + +]
Author: David Woodhouse <[email protected]>
Date:   Thu May 8 13:30:12 2025 -0700

    KVM: x86/xen: Allow 'out of range' event channel ports in IRQ routing table.
    
    commit a7f4dff21fd744d08fa956c243d2b1795f23cbf7 upstream.
    
    To avoid imposing an ordering constraint on userspace, allow 'invalid'
    event channel targets to be configured in the IRQ routing table.
    
    This is the same as accepting interrupts targeted at vCPUs which don't
    exist yet, which is already the case for both Xen event channels *and*
    for MSIs (which don't do any filtering of permitted APIC ID targets at
    all).
    
    If userspace actually *triggers* an IRQ with an invalid target, that
    will fail cleanly, as kvm_xen_set_evtchn_fast() also does the same range
    check.
    
    If KVM enforced that the IRQ target must be valid at the time it is
    *configured*, that would force userspace to create all vCPUs and do
    various other parts of setup (in this case, setting the Xen long_mode)
    before restoring the IRQ table.
    
    Cc: [email protected]
    Signed-off-by: David Woodhouse <[email protected]>
    Reviewed-by: Paul Durrant <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [sean: massage comment]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
lib/alloc_tag: do not acquire non-existent lock in alloc_tag_top_users() [+ + +]
Author: Harry Yoo <[email protected]>
Date:   Sat Jun 21 04:53:05 2025 +0900

    lib/alloc_tag: do not acquire non-existent lock in alloc_tag_top_users()
    
    commit 99af22cd34688cc0d535a1919e0bea4cbc6c1ea1 upstream.
    
    alloc_tag_top_users() attempts to lock alloc_tag_cttype->mod_lock even
    when the alloc_tag_cttype is not allocated because:
    
      1) alloc tagging is disabled because mem profiling is disabled
         (!alloc_tag_cttype)
      2) alloc tagging is enabled, but not yet initialized (!alloc_tag_cttype)
      3) alloc tagging is enabled, but failed initialization
         (!alloc_tag_cttype or IS_ERR(alloc_tag_cttype))
    
    In all cases, alloc_tag_cttype is not allocated, and therefore
    alloc_tag_top_users() should not attempt to acquire the semaphore.
    
    This leads to a crash on memory allocation failure by attempting to
    acquire a non-existent semaphore:
    
      Oops: general protection fault, probably for non-canonical address 0xdffffc000000001b: 0000 [#3] SMP KASAN NOPTI
      KASAN: null-ptr-deref in range [0x00000000000000d8-0x00000000000000df]
      CPU: 2 UID: 0 PID: 1 Comm: systemd Tainted: G      D             6.16.0-rc2 #1 VOLUNTARY
      Tainted: [D]=DIE
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
      RIP: 0010:down_read_trylock+0xaa/0x3b0
      Code: d0 7c 08 84 d2 0f 85 a0 02 00 00 8b 0d df 31 dd 04 85 c9 75 29 48 b8 00 00 00 00 00 fc ff df 48 8d 6b 68 48 89 ea 48 c1 ea 03 <80> 3c 02 00 0f 85 88 02 00 00 48 3b 5b 68 0f 85 53 01 00 00 65 ff
      RSP: 0000:ffff8881002ce9b8 EFLAGS: 00010016
      RAX: dffffc0000000000 RBX: 0000000000000070 RCX: 0000000000000000
      RDX: 000000000000001b RSI: 000000000000000a RDI: 0000000000000070
      RBP: 00000000000000d8 R08: 0000000000000001 R09: ffffed107dde49d1
      R10: ffff8883eef24e8b R11: ffff8881002cec20 R12: 1ffff11020059d37
      R13: 00000000003fff7b R14: ffff8881002cec20 R15: dffffc0000000000
      FS:  00007f963f21d940(0000) GS:ffff888458ca6000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f963f5edf71 CR3: 000000010672c000 CR4: 0000000000350ef0
      Call Trace:
       <TASK>
       codetag_trylock_module_list+0xd/0x20
       alloc_tag_top_users+0x369/0x4b0
       __show_mem+0x1cd/0x6e0
       warn_alloc+0x2b1/0x390
       __alloc_frozen_pages_noprof+0x12b9/0x21a0
       alloc_pages_mpol+0x135/0x3e0
       alloc_slab_page+0x82/0xe0
       new_slab+0x212/0x240
       ___slab_alloc+0x82a/0xe00
       </TASK>
    
    As David Wang points out, this issue became easier to trigger after commit
    780138b12381 ("alloc_tag: check mem_profiling_support in alloc_tag_init").
    
    Before the commit, the issue occurred only when it failed to allocate and
    initialize alloc_tag_cttype or if a memory allocation fails before
    alloc_tag_init() is called.  After the commit, it can be easily triggered
    when memory profiling is compiled but disabled at boot.
    
    To properly determine whether alloc_tag_init() has been called and its
    data structures initialized, verify that alloc_tag_cttype is a valid
    pointer before acquiring the semaphore.  If the variable is NULL or an
    error value, it has not been properly initialized.  In such a case, just
    skip and do not attempt to acquire the semaphore.
    
    [[email protected]: v3]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 780138b12381 ("alloc_tag: check mem_profiling_support in alloc_tag_init")
    Fixes: 1438d349d16b ("lib: add memory allocations report in show_mem()")
    Signed-off-by: Harry Yoo <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Acked-by: Suren Baghdasaryan <[email protected]>
    Tested-by: Raghavendra K T <[email protected]>
    Cc: Casey Chen <[email protected]>
    Cc: David Wang <[email protected]>
    Cc: Kent Overstreet <[email protected]>
    Cc: Yuanyuan Zhong <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Linux 6.15.7 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Jul 17 18:44:05 2025 +0200

    Linux 6.15.7
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Ronald Warsow <[email protected]>
    Tested-by: Justin M. Forbes <[email protected]>
    Tested-by: Miguel Ojeda <[email protected]>
    Tested-by: Takeshi Ogasawara <[email protected]>
    Tested-By: Achill Gilgenast <[email protected]>
    Tested-by: Luna Jernberg <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Dileep Malepu <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Markus Reichelt <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Christian Heusel <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
maple_tree: fix mt_destroy_walk() on root leaf node [+ + +]
Author: Wei Yang <[email protected]>
Date:   Tue Jun 24 15:18:40 2025 -0400

    maple_tree: fix mt_destroy_walk() on root leaf node
    
    commit ea9b77f98d94c4d5c1bd1ac1db078f78b40e8bf5 upstream.
    
    On destroy, we should set each node dead.  But current code miss this when
    the maple tree has only the root node.
    
    The reason is mt_destroy_walk() leverage mte_destroy_descend() to set node
    dead, but this is skipped since the only root node is a leaf.
    
    Fixes this by setting the node dead if it is a leaf.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 54a611b60590 ("Maple Tree: add new data structure")
    Signed-off-by: Wei Yang <[email protected]>
    Signed-off-by: Liam R. Howlett <[email protected]>
    Reviewed-by: Dev Jain <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
md/md-bitmap: fix GPF in bitmap_get_stats() [+ + +]
Author: Håkon Bugge <[email protected]>
Date:   Wed Jul 2 11:10:34 2025 +0200

    md/md-bitmap: fix GPF in bitmap_get_stats()
    
    commit c17fb542dbd1db745c9feac15617056506dd7195 upstream.
    
    The commit message of commit 6ec1f0239485 ("md/md-bitmap: fix stats
    collection for external bitmaps") states:
    
        Remove the external bitmap check as the statistics should be
        available regardless of bitmap storage location.
    
        Return -EINVAL only for invalid bitmap with no storage (neither in
        superblock nor in external file).
    
    But, the code does not adhere to the above, as it does only check for
    a valid super-block for "internal" bitmaps. Hence, we observe:
    
    Oops: GPF, probably for non-canonical address 0x1cd66f1f40000028
    RIP: 0010:bitmap_get_stats+0x45/0xd0
    Call Trace:
    
     seq_read_iter+0x2b9/0x46a
     seq_read+0x12f/0x180
     proc_reg_read+0x57/0xb0
     vfs_read+0xf6/0x380
     ksys_read+0x6d/0xf0
     do_syscall_64+0x8c/0x1b0
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    We fix this by checking the existence of a super-block for both the
    internal and external case.
    
    Fixes: 6ec1f0239485 ("md/md-bitmap: fix stats collection for external bitmaps")
    Cc: [email protected]
    Reported-by: Gerald Gibson <[email protected]>
    Signed-off-by: Håkon Bugge <[email protected]>
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Signed-off-by: Yu Kuai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
md/raid1,raid10: strip REQ_NOWAIT from member bios [+ + +]
Author: Zheng Qixing <[email protected]>
Date:   Wed Jul 2 18:23:41 2025 +0800

    md/raid1,raid10: strip REQ_NOWAIT from member bios
    
    [ Upstream commit 5fa31c49928139fa948f078b094d80f12ed83f5f ]
    
    RAID layers don't implement proper non-blocking semantics for
    REQ_NOWAIT, making the flag potentially misleading when propagated
    to member disks.
    
    This patch clear REQ_NOWAIT from cloned bios in raid1/raid10. Retain
    original bio's REQ_NOWAIT flag for upper layer error handling.
    
    Maybe we can implement non-blocking I/O handling mechanisms within
    RAID in future work.
    
    Fixes: 9f346f7d4ea7 ("md/raid1,raid10: don't handle IO error for
    REQ_RAHEAD and REQ_NOWAIT")
    Signed-off-by: Zheng Qixing <[email protected]>
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Signed-off-by: Yu Kuai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
md/raid1: Fix stack memory use after return in raid1_reshape [+ + +]
Author: Wang Jinchao <[email protected]>
Date:   Thu Jun 12 19:28:40 2025 +0800

    md/raid1: Fix stack memory use after return in raid1_reshape
    
    [ Upstream commit d67ed2ccd2d1dcfda9292c0ea8697a9d0f2f0d98 ]
    
    In the raid1_reshape function, newpool is
    allocated on the stack and assigned to conf->r1bio_pool.
    This results in conf->r1bio_pool.wait.head pointing
    to a stack address.
    Accessing this address later can lead to a kernel panic.
    
    Example access path:
    
    raid1_reshape()
    {
            // newpool is on the stack
            mempool_t newpool, oldpool;
            // initialize newpool.wait.head to stack address
            mempool_init(&newpool, ...);
            conf->r1bio_pool = newpool;
    }
    
    raid1_read_request() or raid1_write_request()
    {
            alloc_r1bio()
            {
                    mempool_alloc()
                    {
                            // if pool->alloc fails
                            remove_element()
                            {
                                    --pool->curr_nr;
                            }
                    }
            }
    }
    
    mempool_free()
    {
            if (pool->curr_nr < pool->min_nr) {
                    // pool->wait.head is a stack address
                    // wake_up() will try to access this invalid address
                    // which leads to a kernel panic
                    return;
                    wake_up(&pool->wait);
            }
    }
    
    Fix:
    reinit conf->r1bio_pool.wait after assigning newpool.
    
    Fixes: afeee514ce7f ("md: convert to bioset_init()/mempool_init()")
    Signed-off-by: Wang Jinchao <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Signed-off-by: Yu Kuai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm/damon/core: handle damon_call_control as normal under kdmond deactivation [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Sun Jun 29 13:49:14 2025 -0700

    mm/damon/core: handle damon_call_control as normal under kdmond deactivation
    
    commit bb1b5929b4279b136816f95ce1e8f1fa689bf4a1 upstream.
    
    DAMON sysfs interface internally uses damon_call() to update DAMON
    parameters as users requested, online.  However, DAMON core cancels any
    damon_call() requests when it is deactivated by DAMOS watermarks.
    
    As a result, users cannot change DAMON parameters online while DAMON is
    deactivated.  Note that users can turn DAMON off and on with different
    watermarks to work around.  Since deactivated DAMON is nearly same to
    stopped DAMON, the work around should have no big problem.  Anyway, a bug
    is a bug.
    
    There is no real good reason to cancel the damon_call() request under
    DAMOS deactivation.  Fix it by simply handling the request as normal,
    rather than cancelling under the situation.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 42b7491af14c ("mm/damon/core: introduce damon_call()")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>    [6.14+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/damon: fix divide by zero in damon_get_intervals_score() [+ + +]
Author: Honggyu Kim <[email protected]>
Date:   Wed Jul 2 09:02:04 2025 +0900

    mm/damon: fix divide by zero in damon_get_intervals_score()
    
    commit bd225b9591442065beb876da72656f4a2d627d03 upstream.
    
    The current implementation allows having zero size regions with no special
    reasons, but damon_get_intervals_score() gets crashed by divide by zero
    when the region size is zero.
    
      [   29.403950] Oops: divide error: 0000 [#1] SMP NOPTI
    
    This patch fixes the bug, but does not disallow zero size regions to keep
    the backward compatibility since disallowing zero size regions might be a
    breaking change for some users.
    
    In addition, the same crash can happen when intervals_goal.access_bp is
    zero so this should be fixed in stable trees as well.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: f04b0fedbe71 ("mm/damon/core: implement intervals auto-tuning")
    Signed-off-by: Honggyu Kim <[email protected]>
    Reviewed-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/rmap: fix potential out-of-bounds page table access during batched unmap [+ + +]
Author: Lance Yang <[email protected]>
Date:   Fri Jun 27 14:23:19 2025 +0800

    mm/rmap: fix potential out-of-bounds page table access during batched unmap
    
    commit ddd05742b45b083975a0855ef6ebbf88cf1f532a upstream.
    
    As pointed out by David[1], the batched unmap logic in
    try_to_unmap_one() may read past the end of a PTE table when a large
    folio's PTE mappings are not fully contained within a single page
    table.
    
    While this scenario might be rare, an issue triggerable from userspace
    must be fixed regardless of its likelihood.  This patch fixes the
    out-of-bounds access by refactoring the logic into a new helper,
    folio_unmap_pte_batch().
    
    The new helper correctly calculates the safe batch size by capping the
    scan at both the VMA and PMD boundaries.  To simplify the code, it also
    supports partial batching (i.e., any number of pages from 1 up to the
    calculated safe maximum), as there is no strong reason to special-case
    for fully mapped folios.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/linux-mm/[email protected] [1]
    Fixes: 354dffd29575 ("mm: support batched unmap for lazyfree large folios during reclamation")
    Signed-off-by: Lance Yang <[email protected]>
    Suggested-by: David Hildenbrand <[email protected]>
    Reported-by: David Hildenbrand <[email protected]>
    Closes: https://lore.kernel.org/linux-mm/[email protected]
    Suggested-by: Barry Song <[email protected]>
    Acked-by: Barry Song <[email protected]>
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Reviewed-by: Harry Yoo <[email protected]>
    Cc: Baolin Wang <[email protected]>
    Cc: Chris Li <[email protected]>
    Cc: "Huang, Ying" <[email protected]>
    Cc: Kairui Song <[email protected]>
    Cc: Lance Yang <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Mingzhe Yang <[email protected]>
    Cc: Rik van Riel <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Tangquan Zheng <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/vmalloc: leave lazy MMU mode on PTE mapping error [+ + +]
Author: Alexander Gordeev <[email protected]>
Date:   Mon Jun 23 09:57:21 2025 +0200

    mm/vmalloc: leave lazy MMU mode on PTE mapping error
    
    commit fea18c686320a53fce7ad62a87a3e1d10ad02f31 upstream.
    
    vmap_pages_pte_range() enters the lazy MMU mode, but fails to leave it in
    case an error is encountered.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2ba3e6947aed ("mm/vmalloc: track which page-table levels were modified")
    Signed-off-by: Alexander Gordeev <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Reviewed-by: Ryan Roberts <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: fix the inaccurate memory statistics issue for users [+ + +]
Author: Baolin Wang <[email protected]>
Date:   Thu Jun 5 20:58:29 2025 +0800

    mm: fix the inaccurate memory statistics issue for users
    
    commit 82241a83cd15aaaf28200a40ad1a8b480012edaf upstream.
    
    On some large machines with a high number of CPUs running a 64K pagesize
    kernel, we found that the 'RES' field is always 0 displayed by the top
    command for some processes, which will cause a lot of confusion for users.
    
        PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     875525 root      20   0   12480      0      0 R   0.3   0.0   0:00.08 top
          1 root      20   0  172800      0      0 S   0.0   0.0   0:04.52 systemd
    
    The main reason is that the batch size of the percpu counter is quite
    large on these machines, caching a significant percpu value, since
    converting mm's rss stats into percpu_counter by commit f1a7941243c1 ("mm:
    convert mm's rss stats into percpu_counter").  Intuitively, the batch
    number should be optimized, but on some paths, performance may take
    precedence over statistical accuracy.  Therefore, introducing a new
    interface to add the percpu statistical count and display it to users,
    which can remove the confusion.  In addition, this change is not expected
    to be on a performance-critical path, so the modification should be
    acceptable.
    
    In addition, the 'mm->rss_stat' is updated by using add_mm_counter() and
    dec/inc_mm_counter(), which are all wrappers around
    percpu_counter_add_batch().  In percpu_counter_add_batch(), there is
    percpu batch caching to avoid 'fbc->lock' contention.  This patch changes
    task_mem() and task_statm() to get the accurate mm counters under the
    'fbc->lock', but this should not exacerbate kernel 'mm->rss_stat' lock
    contention due to the percpu batch caching of the mm counters.  The
    following test also confirm the theoretical analysis.
    
    I run the stress-ng that stresses anon page faults in 32 threads on my 32
    cores machine, while simultaneously running a script that starts 32
    threads to busy-loop pread each stress-ng thread's /proc/pid/status
    interface.  From the following data, I did not observe any obvious impact
    of this patch on the stress-ng tests.
    
    w/o patch:
    stress-ng: info:  [6848]          4,399,219,085,152 CPU Cycles          67.327 B/sec
    stress-ng: info:  [6848]          1,616,524,844,832 Instructions          24.740 B/sec (0.367 instr. per cycle)
    stress-ng: info:  [6848]          39,529,792 Page Faults Total           0.605 M/sec
    stress-ng: info:  [6848]          39,529,792 Page Faults Minor           0.605 M/sec
    
    w/patch:
    stress-ng: info:  [2485]          4,462,440,381,856 CPU Cycles          68.382 B/sec
    stress-ng: info:  [2485]          1,615,101,503,296 Instructions          24.750 B/sec (0.362 instr. per cycle)
    stress-ng: info:  [2485]          39,439,232 Page Faults Total           0.604 M/sec
    stress-ng: info:  [2485]          39,439,232 Page Faults Minor           0.604 M/sec
    
    On comparing a very simple app which just allocates & touches some
    memory against v6.1 (which doesn't have f1a7941243c1) and latest Linus
    tree (4c06e63b9203) I can see that on latest Linus tree the values for
    VmRSS, RssAnon and RssFile from /proc/self/status are all zeroes while
    they do report values on v6.1 and a Linus tree with this patch.
    
    Link: https://lkml.kernel.org/r/f4586b17f66f97c174f7fd1f8647374fdb53de1c.1749119050.git.baolin.wang@linux.alibaba.com
    Fixes: f1a7941243c1 ("mm: convert mm's rss stats into percpu_counter")
    Signed-off-by: Baolin Wang <[email protected]>
    Reviewed-by: Aboorva Devarajan <[email protected]>
    Tested-by: Aboorva Devarajan <[email protected]>
    Tested-by Donet Tom <[email protected]>
    Acked-by: Shakeel Butt <[email protected]>
    Acked-by: SeongJae Park <[email protected]>
    Acked-by: Michal Hocko <[email protected]>
    Reviewed-by: Vlastimil Babka <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mike Rapoport <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
module: Fix memory deallocation on error path in move_module() [+ + +]
Author: Petr Pavlu <[email protected]>
Date:   Wed Jun 18 14:26:26 2025 +0200

    module: Fix memory deallocation on error path in move_module()
    
    [ Upstream commit ca3881f6fd8e9b6eb2d51e8718d07d3b8029d886 ]
    
    The function move_module() uses the variable t to track how many memory
    types it has allocated and consequently how many should be freed if an
    error occurs.
    
    The variable is initially set to 0 and is updated when a call to
    module_memory_alloc() fails. However, move_module() can fail for other
    reasons as well, in which case t remains set to 0 and no memory is freed.
    
    Fix the problem by initializing t to MOD_MEM_NUM_TYPES. Additionally, make
    the deallocation loop more robust by not relying on the mod_mem_type_t enum
    having a signed integer as its underlying type.
    
    Fixes: c7ee8aebf6c0 ("module: add stop-grap sanity check on module memcpy()")
    Signed-off-by: Petr Pavlu <[email protected]>
    Reviewed-by: Sami Tolvanen <[email protected]>
    Reviewed-by: Daniel Gomez <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Daniel Gomez <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nbd: fix uaf in nbd_genl_connect() error path [+ + +]
Author: Zheng Qixing <[email protected]>
Date:   Thu Jun 12 21:24:05 2025 +0800

    nbd: fix uaf in nbd_genl_connect() error path
    
    [ Upstream commit aa9552438ebf015fc5f9f890dbfe39f0c53cf37e ]
    
    There is a use-after-free issue in nbd:
    
    block nbd6: Receive control failed (result -104)
    block nbd6: shutting down sockets
    ==================================================================
    BUG: KASAN: slab-use-after-free in recv_work+0x694/0xa80 drivers/block/nbd.c:1022
    Write of size 4 at addr ffff8880295de478 by task kworker/u33:0/67
    
    CPU: 2 UID: 0 PID: 67 Comm: kworker/u33:0 Not tainted 6.15.0-rc5-syzkaller-00123-g2c89c1b655c0 #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    Workqueue: nbd6-recv recv_work
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:408 [inline]
     print_report+0xc3/0x670 mm/kasan/report.c:521
     kasan_report+0xe0/0x110 mm/kasan/report.c:634
     check_region_inline mm/kasan/generic.c:183 [inline]
     kasan_check_range+0xef/0x1a0 mm/kasan/generic.c:189
     instrument_atomic_read_write include/linux/instrumented.h:96 [inline]
     atomic_dec include/linux/atomic/atomic-instrumented.h:592 [inline]
     recv_work+0x694/0xa80 drivers/block/nbd.c:1022
     process_one_work+0x9cc/0x1b70 kernel/workqueue.c:3238
     process_scheduled_works kernel/workqueue.c:3319 [inline]
     worker_thread+0x6c8/0xf10 kernel/workqueue.c:3400
     kthread+0x3c2/0x780 kernel/kthread.c:464
     ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:153
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
     </TASK>
    
    nbd_genl_connect() does not properly stop the device on certain
    error paths after nbd_start_device() has been called. This causes
    the error path to put nbd->config while recv_work continue to use
    the config after putting it, leading to use-after-free in recv_work.
    
    This patch moves nbd_start_device() after the backend file creation.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Fixes: 6497ef8df568 ("nbd: provide a way for userspace processes to identify device backends")
    Signed-off-by: Zheng Qixing <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Reset bw_share field when changing a node's parent [+ + +]
Author: Carolina Jubran <[email protected]>
Date:   Thu Jul 10 16:53:42 2025 +0300

    net/mlx5: Reset bw_share field when changing a node's parent
    
    [ Upstream commit f7b76466894083c8f518cf29fef75fcd3ec670e5 ]
    
    When changing a node's parent, its scheduling element is destroyed and
    re-created with bw_share 0. However, the node's bw_share field was not
    updated accordingly.
    
    Set the node's bw_share to 0 after re-creation to keep the software
    state in sync with the firmware configuration.
    
    Fixes: 9c7bbf4c3304 ("net/mlx5: Add support for setting parent of nodes")
    Signed-off-by: Carolina Jubran <[email protected]>
    Reviewed-by: Cosmin Ratiu <[email protected]>
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5e: Add new prio for promiscuous mode [+ + +]
Author: Jianbo Liu <[email protected]>
Date:   Thu Jul 10 16:53:44 2025 +0300

    net/mlx5e: Add new prio for promiscuous mode
    
    [ Upstream commit 4c9fce56fa702059bbc5ab737265b68f79cbaac4 ]
    
    An optimization for promiscuous mode adds a high-priority steering
    table with a single catch-all rule to steer all traffic directly to
    the TTC table.
    
    However, a gap exists between the creation of this table and the
    insertion of the catch-all rule. Packets arriving in this brief window
    would miss as no rule was inserted yet, unnecessarily incrementing the
    'rx_steer_missed_packets' counter and dropped.
    
    This patch resolves the issue by introducing a new prio for this
    table, placing it between MLX5E_TC_PRIO and MLX5E_NIC_PRIO. By doing
    so, packets arriving during the window now fall through to the next
    prio (at MLX5E_NIC_PRIO) instead of being dropped.
    
    Fixes: 1c46d7409f30 ("net/mlx5e: Optimize promiscuous mode")
    Signed-off-by: Jianbo Liu <[email protected]>
    Reviewed-by: Mark Bloch <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: Fix race between DIM disable and net_dim() [+ + +]
Author: Carolina Jubran <[email protected]>
Date:   Thu Jul 10 16:53:43 2025 +0300

    net/mlx5e: Fix race between DIM disable and net_dim()
    
    [ Upstream commit eb41a264a3a576dc040ee37c3d9d6b7e2d9be968 ]
    
    There's a race between disabling DIM and NAPI callbacks using the dim
    pointer on the RQ or SQ.
    
    If NAPI checks the DIM state bit and sees it still set, it assumes
    `rq->dim` or `sq->dim` is valid. But if DIM gets disabled right after
    that check, the pointer might already be set to NULL, leading to a NULL
    pointer dereference in net_dim().
    
    Fix this by calling `synchronize_net()` before freeing the DIM context.
    This ensures all in-progress NAPI callbacks are finished before the
    pointer is cleared.
    
    Kernel log:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    ...
    RIP: 0010:net_dim+0x23/0x190
    ...
    Call Trace:
     <TASK>
     ? __die+0x20/0x60
     ? page_fault_oops+0x150/0x3e0
     ? common_interrupt+0xf/0xa0
     ? sysvec_call_function_single+0xb/0x90
     ? exc_page_fault+0x74/0x130
     ? asm_exc_page_fault+0x22/0x30
     ? net_dim+0x23/0x190
     ? mlx5e_poll_ico_cq+0x41/0x6f0 [mlx5_core]
     ? sysvec_apic_timer_interrupt+0xb/0x90
     mlx5e_handle_rx_dim+0x92/0xd0 [mlx5_core]
     mlx5e_napi_poll+0x2cd/0xac0 [mlx5_core]
     ? mlx5e_poll_ico_cq+0xe5/0x6f0 [mlx5_core]
     busy_poll_stop+0xa2/0x200
     ? mlx5e_napi_poll+0x1d9/0xac0 [mlx5_core]
     ? mlx5e_trigger_irq+0x130/0x130 [mlx5_core]
     __napi_busy_loop+0x345/0x3b0
     ? sysvec_call_function_single+0xb/0x90
     ? asm_sysvec_call_function_single+0x16/0x20
     ? sysvec_apic_timer_interrupt+0xb/0x90
     ? pcpu_free_area+0x1e4/0x2e0
     napi_busy_loop+0x11/0x20
     xsk_recvmsg+0x10c/0x130
     sock_recvmsg+0x44/0x70
     __sys_recvfrom+0xbc/0x130
     ? __schedule+0x398/0x890
     __x64_sys_recvfrom+0x20/0x30
     do_syscall_64+0x4c/0x100
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    ...
    ---[ end trace 0000000000000000 ]---
    ...
    ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
    
    Fixes: 445a25f6e1a2 ("net/mlx5e: Support updating coalescing configuration without resetting channels")
    Signed-off-by: Carolina Jubran <[email protected]>
    Reviewed-by: Cosmin Ratiu <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/sched: Abort __tc_modify_qdisc if parent class does not exist [+ + +]
Author: Victor Nogueira <[email protected]>
Date:   Mon Jul 7 18:08:01 2025 -0300

    net/sched: Abort __tc_modify_qdisc if parent class does not exist
    
    [ Upstream commit ffdde7bf5a439aaa1955ebd581f5c64ab1533963 ]
    
    Lion's patch [1] revealed an ancient bug in the qdisc API.
    Whenever a user creates/modifies a qdisc specifying as a parent another
    qdisc, the qdisc API will, during grafting, detect that the user is
    not trying to attach to a class and reject. However grafting is
    performed after qdisc_create (and thus the qdiscs' init callback) is
    executed. In qdiscs that eventually call qdisc_tree_reduce_backlog
    during init or change (such as fq, hhf, choke, etc), an issue
    arises. For example, executing the following commands:
    
    sudo tc qdisc add dev lo root handle a: htb default 2
    sudo tc qdisc add dev lo parent a: handle beef fq
    
    Qdiscs such as fq, hhf, choke, etc unconditionally invoke
    qdisc_tree_reduce_backlog() in their control path init() or change() which
    then causes a failure to find the child class; however, that does not stop
    the unconditional invocation of the assumed child qdisc's qlen_notify with
    a null class. All these qdiscs make the assumption that class is non-null.
    
    The solution is ensure that qdisc_leaf() which looks up the parent
    class, and is invoked prior to qdisc_create(), should return failure on
    not finding the class.
    In this patch, we leverage qdisc_leaf to return ERR_PTRs whenever the
    parentid doesn't correspond to a class, so that we can detect it
    earlier on and abort before qdisc_create is called.
    
    [1] https://lore.kernel.org/netdev/[email protected]/
    
    Fixes: 5e50da01d0ce ("[NET_SCHED]: Fix endless loops (part 2): "simple" qdiscs")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Acked-by: Jamal Hadi Salim <[email protected]>
    Reviewed-by: Cong Wang <[email protected]>
    Signed-off-by: Victor Nogueira <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: airoha: Fix an error handling path in airoha_probe() [+ + +]
Author: Christophe JAILLET <[email protected]>
Date:   Sat Jul 5 10:34:32 2025 +0200

    net: airoha: Fix an error handling path in airoha_probe()
    
    [ Upstream commit 3ef07434c7dbfba302df477bb6c70e082965f232 ]
    
    If an error occurs after a successful airoha_hw_init() call,
    airoha_ppe_deinit() needs to be called as already done in the remove
    function.
    
    Fixes: 00a7678310fe ("net: airoha: Introduce flowtable offload support")
    Signed-off-by: Christophe JAILLET <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Acked-by: Lorenzo Bianconi <[email protected]>
    Link: https://patch.msgid.link/1c940851b4fa3c3ed2a142910c821493a136f121.1746715755.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: appletalk: Fix device refcount leak in atrtr_create() [+ + +]
Author: Kito Xu <[email protected]>
Date:   Wed Jul 9 03:52:51 2025 +0000

    net: appletalk: Fix device refcount leak in atrtr_create()
    
    [ Upstream commit 711c80f7d8b163d3ecd463cd96f07230f488e750 ]
    
    When updating an existing route entry in atrtr_create(), the old device
    reference was not being released before assigning the new device,
    leading to a device refcount leak. Fix this by calling dev_put() to
    release the old device reference before holding the new one.
    
    Fixes: c7f905f0f6d4 ("[ATALK]: Add missing dev_hold() to atrtr_create().")
    Signed-off-by: Kito Xu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: rtsn: Fix a null pointer dereference in rtsn_probe() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Thu Jul 3 18:01:09 2025 +0800

    net: ethernet: rtsn: Fix a null pointer dereference in rtsn_probe()
    
    commit 95a234f6affbf51f06338383537ab80d637bb785 upstream.
    
    Add check for the return value of rcar_gen4_ptp_alloc()
    to prevent potential null pointer dereference.
    
    Fixes: b0d3969d2b4d ("net: ethernet: rtsn: Add support for Renesas Ethernet-TSN")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Reviewed-by: Niklas Söderlund <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: ethernet: ti: am65-cpsw-nuss: Fix skb size by accounting for skb_shared_info [+ + +]
Author: Chintan Vankar <[email protected]>
Date:   Mon Jul 7 14:22:01 2025 +0530

    net: ethernet: ti: am65-cpsw-nuss: Fix skb size by accounting for skb_shared_info
    
    [ Upstream commit 02c4d6c26f1f662da8885b299c224ca6628ad232 ]
    
    While transitioning from netdev_alloc_ip_align() to build_skb(), memory
    for the "skb_shared_info" member of an "skb" was not allocated. Fix this
    by allocating "PAGE_SIZE" as the skb length, accounting for the packet
    length, headroom and tailroom, thereby including the required memory space
    for skb_shared_info.
    
    Fixes: 8acacc40f733 ("net: ethernet: ti: am65-cpsw: Add minimal XDP support")
    Reviewed-by: Siddharth Vadapalli <[email protected]>
    Signed-off-by: Chintan Vankar <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ll_temac: Fix missing tx_pending check in ethtools_set_ringparam() [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Thu Jul 10 11:06:17 2025 -0700

    net: ll_temac: Fix missing tx_pending check in ethtools_set_ringparam()
    
    [ Upstream commit e81750b4e3826fedce7362dad839cb40384d60ae ]
    
    The function ll_temac_ethtools_set_ringparam() incorrectly checked
    rx_pending twice, once correctly for RX and once mistakenly in place
    of tx_pending. This caused tx_pending to be left unchecked against
    TX_BD_NUM_MAX.
    As a result, invalid TX ring sizes may have been accepted or valid
    ones wrongly rejected based on the RX limit, leading to potential
    misconfiguration or unexpected results.
    
    This patch corrects the condition to properly validate tx_pending.
    
    Fixes: f7b261bfc35e ("net: ll_temac: Make RX/TX ring sizes configurable")
    Signed-off-by: Alok Tiwari <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: mana: Record doorbell physical address in PF mode [+ + +]
Author: Long Li <[email protected]>
Date:   Tue Jun 17 18:36:46 2025 -0700

    net: mana: Record doorbell physical address in PF mode
    
    [ Upstream commit e0fca6f2cebff539e9317a15a37dcf432e3b851a ]
    
    MANA supports RDMA in PF mode. The driver should record the doorbell
    physical address when in PF mode.
    
    The doorbell physical address is used by the RDMA driver to map
    doorbell pages of the device to user-mode applications through RDMA
    verbs interface. In the past, they have been mapped to user-mode while
    the device is in VF mode. With the support for PF mode implemented,
    also expose those pages in PF mode.
    
    Support for PF mode is implemented in
    290e5d3c49f6 ("net: mana: Add support for Multi Vports on Bare metal")
    
    Signed-off-by: Long Li <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: microchip: limit 100M workaround to link-down events on LAN88xx [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Wed Jul 9 15:07:53 2025 +0200

    net: phy: microchip: limit 100M workaround to link-down events on LAN88xx
    
    [ Upstream commit dd4360c0e8504f2f7639c7f5d07c93cfd6a98333 ]
    
    Restrict the 100Mbit forced-mode workaround to link-down transitions
    only, to prevent repeated link reset cycles in certain configurations.
    
    The workaround was originally introduced to improve signal reliability
    when switching cables between long and short distances. It temporarily
    forces the PHY into 10 Mbps before returning to 100 Mbps.
    
    However, when used with autonegotiating link partners (e.g., Intel i350),
    executing this workaround on every link change can confuse the partner
    and cause constant renegotiation loops. This results in repeated link
    down/up transitions and the PHY never reaching a stable state.
    
    Limit the workaround to only run during the PHY_NOLINK state. This ensures
    it is triggered only once per link drop, avoiding disruptive toggling
    while still preserving its intended effect.
    
    Note: I am not able to reproduce the original issue that this workaround
    addresses. I can only confirm that 100 Mbit mode works correctly in my
    test setup. Based on code inspection, I assume the workaround aims to
    reset some internal state machine or signal block by toggling speeds.
    However, a PHY reset is already performed earlier in the function via
    phy_init_hw(), which may achieve a similar effect. Without a reproducer,
    I conservatively keep the workaround but restrict its conditions.
    
    Fixes: e57cf3639c32 ("net: lan78xx: fix accessing the LAN7800's internal phy specific registers from the MAC driver")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: microchip: Use genphy_soft_reset() to purge stale LPA bits [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Wed Jul 9 15:07:52 2025 +0200

    net: phy: microchip: Use genphy_soft_reset() to purge stale LPA bits
    
    [ Upstream commit b4517c363e0e005c7f81ae3be199eec68e87f122 ]
    
    Enable .soft_reset for the LAN88xx PHY driver by assigning
    genphy_soft_reset() to ensure that the phylib core performs a proper
    soft reset during reconfiguration.
    
    Previously, the driver left .soft_reset unimplemented, so calls to
    phy_init_hw() (e.g., from lan88xx_link_change_notify()) did not fully
    reset the PHY. As a result, stale contents in the Link Partner Ability
    (LPA) register could persist, causing the PHY to incorrectly report
    that the link partner advertised autonegotiation even when it did not.
    
    Using genphy_soft_reset() guarantees a clean reset of the PHY and
    corrects the false autoneg reporting in these scenarios.
    
    Fixes: ccb989e4d1ef ("net: phy: microchip: Reset LAN88xx PHY to ensure clean link state on LAN7800/7850")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: qcom: move the WoL function to shared library [+ + +]
Author: Luo Jie <[email protected]>
Date:   Fri Jul 4 13:31:13 2025 +0800

    net: phy: qcom: move the WoL function to shared library
    
    [ Upstream commit e31cf3cce2102af984656fed6e2254cbdd46da02 ]
    
    Move the WoL (Wake-on-LAN) functionality to a shared library to enable
    its reuse by the QCA808X PHY driver, incorporating support for WoL
    functionality similar to the implementation in at8031_set_wol().
    
    Reviewed-by: Maxime Chevallier <[email protected]>
    Signed-off-by: Luo Jie <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 4ab9ada765b7 ("net: phy: qcom: qca808x: Fix WoL issue by utilizing at8031_set_wol()")
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: qcom: qca808x: Fix WoL issue by utilizing at8031_set_wol() [+ + +]
Author: Luo Jie <[email protected]>
Date:   Fri Jul 4 13:31:14 2025 +0800

    net: phy: qcom: qca808x: Fix WoL issue by utilizing at8031_set_wol()
    
    [ Upstream commit 4ab9ada765b7acb5cd02fe27632ec2586b7868ee ]
    
    The previous commit unintentionally removed the code responsible for
    enabling WoL via MMD3 register 0x8012 BIT5. As a result, Wake-on-LAN
    (WoL) support for the QCA808X PHY is no longer functional.
    
    The WoL (Wake-on-LAN) feature for the QCA808X PHY is enabled via MMD3
    register 0x8012, BIT5. This implementation is aligned with the approach
    used in at8031_set_wol().
    
    Fixes: e58f30246c35 ("net: phy: at803x: fix the wol setting functions")
    Signed-off-by: Luo Jie <[email protected]>
    Reviewed-by: Maxime Chevallier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: smsc: Fix Auto-MDIX configuration when disabled by strap [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Thu Jul 3 13:49:39 2025 +0200

    net: phy: smsc: Fix Auto-MDIX configuration when disabled by strap
    
    [ Upstream commit a141af8eb2272ab0f677a7f2653874840bc9b214 ]
    
    Correct the Auto-MDIX configuration to ensure userspace settings are
    respected when the feature is disabled by the AUTOMDIX_EN hardware strap.
    
    The LAN9500 PHY allows its default MDI-X mode to be configured via a
    hardware strap. If this strap sets the default to "MDI-X off", the
    driver was previously unable to enable Auto-MDIX from userspace.
    
    When handling the ETH_TP_MDI_AUTO case, the driver would set the
    SPECIAL_CTRL_STS_AMDIX_ENABLE_ bit but neglected to set the required
    SPECIAL_CTRL_STS_OVRRD_AMDIX_ bit. Without the override flag, the PHY
    falls back to its hardware strap default, ignoring the software request.
    
    This patch corrects the behavior by also setting the override bit when
    enabling Auto-MDIX. This ensures that the userspace configuration takes
    precedence over the hardware strap, allowing Auto-MDIX to be enabled
    correctly in all scenarios.
    
    Fixes: 05b35e7eb9a1 ("smsc95xx: add phylib support")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Cc: Andre Edich <[email protected]>
    Reviewed-by: Maxime Chevallier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: smsc: Fix link failure in forced mode with Auto-MDIX [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Thu Jul 3 13:49:41 2025 +0200

    net: phy: smsc: Fix link failure in forced mode with Auto-MDIX
    
    [ Upstream commit 9dfe110cc0f6ef42af8e81ce52aef34a647d0b8a ]
    
    Force a fixed MDI-X mode when auto-negotiation is disabled to prevent
    link instability.
    
    When forcing the link speed and duplex on a LAN9500 PHY (e.g., with
    `ethtool -s eth0 autoneg off ...`) while leaving MDI-X control in auto
    mode, the PHY fails to establish a stable link. This occurs because the
    PHY's Auto-MDIX algorithm is not designed to operate when
    auto-negotiation is disabled. In this state, the PHY continuously
    toggles the TX/RX signal pairs, which prevents the link partner from
    synchronizing.
    
    This patch resolves the issue by detecting when auto-negotiation is
    disabled. If the MDI-X control mode is set to 'auto', the driver now
    forces a specific, stable mode (ETH_TP_MDI) to prevent the pair
    toggling. This choice of a fixed MDI mode mirrors the behavior the
    hardware would exhibit if the AUTOMDIX_EN strap were configured for a
    fixed MDI connection.
    
    Fixes: 05b35e7eb9a1 ("smsc95xx: add phylib support")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Cc: Andre Edich <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: smsc: Force predictable MDI-X state on LAN87xx [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Thu Jul 3 13:49:40 2025 +0200

    net: phy: smsc: Force predictable MDI-X state on LAN87xx
    
    [ Upstream commit 0713e55533c88a20edb53eea6517dc56786a0078 ]
    
    Override the hardware strap configuration for MDI-X mode to ensure a
    predictable initial state for the driver. The initial mode of the LAN87xx
    PHY is determined by the AUTOMDIX_EN strap pin, but the driver has no
    documented way to read its latched status.
    
    This unpredictability means the driver cannot know if the PHY has
    initialized with Auto-MDIX enabled or disabled, preventing it from
    providing a reliable interface to the user.
    
    This patch introduces a `config_init` hook that forces the PHY into a
    known state by explicitly enabling Auto-MDIX.
    
    Fixes: 05b35e7eb9a1 ("smsc95xx: add phylib support")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Cc: Andre Edich <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: Fix interrupt handling for level-triggered mode in DWC_XGMAC2 [+ + +]
Author: EricChan <[email protected]>
Date:   Thu Jul 3 10:04:49 2025 +0800

    net: stmmac: Fix interrupt handling for level-triggered mode in DWC_XGMAC2
    
    [ Upstream commit 78b7920a03351a8402de2f81914c1d2e2bdf24b7 ]
    
    According to the Synopsys Controller IP XGMAC-10G Ethernet MAC Databook
    v3.30a (section 2.7.2), when the INTM bit in the DMA_Mode register is set
    to 2, the sbd_perch_tx_intr_o[] and sbd_perch_rx_intr_o[] signals operate
    in level-triggered mode. However, in this configuration, the DMA does not
    assert the XGMAC_NIS status bit for Rx or Tx interrupt events.
    
    This creates a functional regression where the condition
    if (likely(intr_status & XGMAC_NIS)) in dwxgmac2_dma_interrupt() will
    never evaluate to true, preventing proper interrupt handling for
    level-triggered mode. The hardware specification explicitly states that
    "The DMA does not assert the NIS status bit for the Rx or Tx interrupt
    events" (Synopsys DWC_XGMAC2 Databook v3.30a, sec. 2.7.2).
    
    The fix ensures correct handling of both edge and level-triggered
    interrupts while maintaining backward compatibility with existing
    configurations. It has been tested on the hardware device (not publicly
    available), and it can properly trigger the RX and TX interrupt handling
    in both the INTM=0 and INTM=2 configurations.
    
    Fixes: d6ddfacd95c7 ("net: stmmac: Add DMA related callbacks for XGMAC2")
    Tested-by: EricChan <[email protected]>
    Signed-off-by: EricChan <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: qmi_wwan: add SIMCom 8230C composition [+ + +]
Author: Xiaowei Li <[email protected]>
Date:   Fri Jun 20 10:27:02 2025 +0800

    net: usb: qmi_wwan: add SIMCom 8230C composition
    
    [ Upstream commit 0b39b055b5b48cbbdf5746a1ca6e3f6b0221e537 ]
    
    Add support for SIMCom 8230C which is based on Qualcomm SDX35 chip.
    0x9071: tty (DM) + tty (NMEA) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9071 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=none
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Xiaowei Li <[email protected]>
    Acked-by: Bjørn Mork <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wangxun: revert the adjustment of the IRQ vector sequence [+ + +]
Author: Jiawen Wu <[email protected]>
Date:   Tue Jul 1 14:30:29 2025 +0800

    net: wangxun: revert the adjustment of the IRQ vector sequence
    
    commit e37546ad1f9b2c777d3a21d7e50ce265ee3dece8 upstream.
    
    Due to hardware limitations of NGBE, queue IRQs can only be requested
    on vector 0 to 7. When the number of queues is set to the maximum 8,
    the PCI IRQ vectors are allocated from 0 to 8. The vector 0 is used by
    MISC interrupt, and althrough the vector 8 is used by queue interrupt,
    it is unable to receive packets. This will cause some packets to be
    dropped when RSS is enabled and they are assigned to queue 8.
    
    So revert the adjustment of the MISC IRQ location, to make it be the
    last one in IRQ vectors.
    
    Fixes: 937d46ecc5f9 ("net: wangxun: add ethtool_ops for channel number")
    Cc: [email protected]
    Signed-off-by: Jiawen Wu <[email protected]>
    Reviewed-by: Larysa Zaremba <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
netfilter: flowtable: account for Ethernet header in nf_flow_pppoe_proto() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Jul 7 12:45:17 2025 +0000

    netfilter: flowtable: account for Ethernet header in nf_flow_pppoe_proto()
    
    [ Upstream commit 18cdb3d982da8976b28d57691eb256ec5688fad2 ]
    
    syzbot found a potential access to uninit-value in nf_flow_pppoe_proto()
    
    Blamed commit forgot the Ethernet header.
    
    BUG: KMSAN: uninit-value in nf_flow_offload_inet_hook+0x7e4/0x940 net/netfilter/nf_flow_table_inet.c:27
      nf_flow_offload_inet_hook+0x7e4/0x940 net/netfilter/nf_flow_table_inet.c:27
      nf_hook_entry_hookfn include/linux/netfilter.h:157 [inline]
      nf_hook_slow+0xe1/0x3d0 net/netfilter/core.c:623
      nf_hook_ingress include/linux/netfilter_netdev.h:34 [inline]
      nf_ingress net/core/dev.c:5742 [inline]
      __netif_receive_skb_core+0x4aff/0x70c0 net/core/dev.c:5837
      __netif_receive_skb_one_core net/core/dev.c:5975 [inline]
      __netif_receive_skb+0xcc/0xac0 net/core/dev.c:6090
      netif_receive_skb_internal net/core/dev.c:6176 [inline]
      netif_receive_skb+0x57/0x630 net/core/dev.c:6235
      tun_rx_batched+0x1df/0x980 drivers/net/tun.c:1485
      tun_get_user+0x4ee0/0x6b40 drivers/net/tun.c:1938
      tun_chr_write_iter+0x3e9/0x5c0 drivers/net/tun.c:1984
      new_sync_write fs/read_write.c:593 [inline]
      vfs_write+0xb4b/0x1580 fs/read_write.c:686
      ksys_write fs/read_write.c:738 [inline]
      __do_sys_write fs/read_write.c:749 [inline]
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Fixes: 87b3593bed18 ("netfilter: flowtable: validate pppoe header")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Pablo Neira Ayuso <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netlink: Fix rmem check in netlink_broadcast_deliver(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 11 05:32:07 2025 +0000

    netlink: Fix rmem check in netlink_broadcast_deliver().
    
    commit a3c4a125ec725cefb40047eb05ff9eafd57830b4 upstream.
    
    We need to allow queuing at least one skb even when skb is
    larger than sk->sk_rcvbuf.
    
    The cited commit made a mistake while converting a condition
    in netlink_broadcast_deliver().
    
    Let's correct the rmem check for the allow-one-skb rule.
    
    Fixes: ae8f160e7eb24 ("netlink: Fix wraparounds of sk->sk_rmem_alloc.")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

netlink: Fix wraparounds of sk->sk_rmem_alloc. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 05:48:18 2025 +0000

    netlink: Fix wraparounds of sk->sk_rmem_alloc.
    
    [ Upstream commit ae8f160e7eb24240a2a79fc4c815c6a0d4ee16cc ]
    
    Netlink has this pattern in some places
    
      if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf)
            atomic_add(skb->truesize, &sk->sk_rmem_alloc);
    
    , which has the same problem fixed by commit 5a465a0da13e ("udp:
    Fix multiple wraparounds of sk->sk_rmem_alloc.").
    
    For example, if we set INT_MAX to SO_RCVBUFFORCE, the condition
    is always false as the two operands are of int.
    
    Then, a single socket can eat as many skb as possible until OOM
    happens, and we can see multiple wraparounds of sk->sk_rmem_alloc.
    
    Let's fix it by using atomic_add_return() and comparing the two
    variables as unsigned int.
    
    Before:
      [root@fedora ~]# ss -f netlink
      Recv-Q      Send-Q Local Address:Port                Peer Address:Port
      -1668710080 0               rtnl:nl_wraparound/293               *
    
    After:
      [root@fedora ~]# ss -f netlink
      Recv-Q     Send-Q Local Address:Port                Peer Address:Port
      2147483072 0               rtnl:nl_wraparound/290               *
      ^
      `--- INT_MAX - 576
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Jason Baron <[email protected]>
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netlink: make sure we allow at least one dump skb [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Thu Jul 10 17:11:21 2025 -0700

    netlink: make sure we allow at least one dump skb
    
    commit a215b5723922f8099078478122f02100e489cb80 upstream.
    
    Commit under Fixes tightened up the memory accounting for Netlink
    sockets. Looks like the accounting is too strict for some existing
    use cases, Marek reported issues with nl80211 / WiFi iw CLI.
    
    To reduce number of iterations Netlink dumps try to allocate
    messages based on the size of the buffer passed to previous
    recvmsg() calls. If user space uses a larger buffer in recvmsg()
    than sk_rcvbuf we will allocate an skb we won't be able to queue.
    
    Make sure we always allow at least one skb to be queued.
    Same workaround is already present in netlink_attachskb().
    Alternative would be to cap the allocation size to
      rcvbuf - rmem_alloc
    but as I said, the workaround is already present in other places.
    
    Reported-by: Marek Szyprowski <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: ae8f160e7eb2 ("netlink: Fix wraparounds of sk->sk_rmem_alloc.")
    Tested-by: Marek Szyprowski <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
objtool: Add missing endian conversion to read_annotate() [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Mon Jun 30 15:12:30 2025 +0200

    objtool: Add missing endian conversion to read_annotate()
    
    [ Upstream commit ccdd09e0fc0d5ce6dfc8360f0c88da9a5045b6ea ]
    
    Trying to compile an x86 kernel on big endian results in this error:
    
    net/ipv4/netfilter/iptable_nat.o: warning: objtool: iptable_nat_table_init+0x150: Unknown annotation type: 50331648
    make[5]: *** [scripts/Makefile.build:287: net/ipv4/netfilter/iptable_nat.o] Error 255
    
    Reason is a missing endian conversion in read_annotate().
    Add the missing conversion to fix this.
    
    Fixes: 2116b349e29a ("objtool: Generic annotation infrastructure")
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/core: Fix the WARN_ON_ONCE is out of lock protected region [+ + +]
Author: Luo Gengkun <[email protected]>
Date:   Thu Jun 26 13:54:03 2025 +0000

    perf/core: Fix the WARN_ON_ONCE is out of lock protected region
    
    [ Upstream commit 7b4c5a37544ba22c6ebe72c0d4ea56c953459fa5 ]
    
    commit 3172fb986666 ("perf/core: Fix WARN in perf_cgroup_switch()") try to
    fix a concurrency problem between perf_cgroup_switch and
    perf_cgroup_event_disable. But it does not to move the WARN_ON_ONCE into
    lock-protected region, so the warning is still be triggered.
    
    Fixes: 3172fb986666 ("perf/core: Fix WARN in perf_cgroup_switch()")
    Signed-off-by: Luo Gengkun <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf: Revert to requiring CAP_SYS_ADMIN for uprobes [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Wed Jul 2 18:21:44 2025 +0200

    perf: Revert to requiring CAP_SYS_ADMIN for uprobes
    
    [ Upstream commit ba677dbe77af5ffe6204e0f3f547f3ba059c6302 ]
    
    Jann reports that uprobes can be used destructively when used in the
    middle of an instruction. The kernel only verifies there is a valid
    instruction at the requested offset, but due to variable instruction
    length cannot determine if this is an instruction as seen by the
    intended execution stream.
    
    Additionally, Mark Rutland notes that on architectures that mix data
    in the text segment (like arm64), a similar things can be done if the
    data word is 'mistaken' for an instruction.
    
    As such, require CAP_SYS_ADMIN for uprobes.
    
    Fixes: c9e0924e5c2b ("perf/core: open access to probes for CAP_PERFMON privileged process")
    Reported-by: Jann Horn <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/CAG48ez1n4520sq0XrWYDHKiKxE_+WCfAK+qt9qkY4ZiBGmL-5g@mail.gmail.com
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: amd: Clear GPIO debounce for suspend [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Fri Jun 27 10:01:46 2025 -0500

    pinctrl: amd: Clear GPIO debounce for suspend
    
    [ Upstream commit 8ff4fb276e2384a87ae7f65f3c28e1e139dbb3fe ]
    
    soc-button-array hardcodes a debounce value by means of gpio_keys
    which uses pinctrl-amd as a backend to program debounce for a GPIO.
    
    This hardcoded value doesn't match what the firmware intended to be
    programmed in _AEI. The hardcoded debounce leads to problems waking
    from suspend. There isn't appetite to conditionalize the behavior in
    soc-button-array or gpio-keys so clear it when the system suspends to
    avoid problems with being able to resume.
    
    Cc: Dmitry Torokhov <[email protected]>
    Cc: Hans de Goede <[email protected]>
    Fixes: 5c4fa2a6da7fb ("Input: soc_button_array - debounce the buttons")
    Link: https://lore.kernel.org/linux-input/mkgtrb5gt7miyg6kvqdlbu4nj3elym6ijudobpdi26gp4xxay5@rsa6ytrjvj2q/
    Link: https://lore.kernel.org/linux-input/[email protected]/
    Signed-off-by: Mario Limonciello <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: nuvoton: Fix boot on ma35dx platforms [+ + +]
Author: Miquel Raynal <[email protected]>
Date:   Fri Jun 13 20:13:12 2025 +0200

    pinctrl: nuvoton: Fix boot on ma35dx platforms
    
    commit 46147490b4098e200b7d7d3ac4637a3e4f7b806a upstream.
    
    As part of a wider cleanup trying to get rid of OF specific APIs, an
    incorrect (and partially unrelated) cleanup was introduced.
    
    The goal was to replace a device_for_each_chil_node() loop including an
    additional condition inside by a macro doing both the loop and the
    check on a single line.
    
    The snippet:
    
            device_for_each_child_node(dev, child)
                    if (fwnode_property_present(child, "gpio-controller"))
                            continue;
    
    was replaced by:
    
            for_each_gpiochip_node(dev, child)
    
    which expands into:
    
            device_for_each_child_node(dev, child)
                    for_each_if(fwnode_property_present(child, "gpio-controller"))
    
    This change is actually doing the opposite of what was initially
    expected, breaking the probe of this driver, breaking at the same time
    the whole boot of Nuvoton platforms (no more console, the kernel WARN()).
    
    Revert these two changes to roll back to the correct behavior.
    
    Fixes: 693c9ecd8326 ("pinctrl: nuvoton: Reduce use of OF-specific APIs")
    Cc: [email protected]
    Signed-off-by: Miquel Raynal <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pinctrl: qcom: msm: mark certain pins as invalid for interrupts [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Thu Jun 12 11:14:48 2025 +0200

    pinctrl: qcom: msm: mark certain pins as invalid for interrupts
    
    commit 93712205ce2f1fb047739494c0399a26ea4f0890 upstream.
    
    On some platforms, the UFS-reset pin has no interrupt logic in TLMM but
    is nevertheless registered as a GPIO in the kernel. This enables the
    user-space to trigger a BUG() in the pinctrl-msm driver by running, for
    example: `gpiomon -c 0 113` on RB2.
    
    The exact culprit is requesting pins whose intr_detection_width setting
    is not 1 or 2 for interrupts. This hits a BUG() in
    msm_gpio_irq_set_type(). Potentially crashing the kernel due to an
    invalid request from user-space is not optimal, so let's go through the
    pins and mark those that would fail the check as invalid for the irq chip
    as we should not even register them as available irqs.
    
    This function can be extended if we determine that there are more
    corner-cases like this.
    
    Fixes: f365be092572 ("pinctrl: Add Qualcomm TLMM driver")
    Cc: [email protected]
    Reviewed-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pwm: Fix invalid state detection [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Fri Jul 4 19:24:17 2025 +0200

    pwm: Fix invalid state detection
    
    commit 9ee124caae1b0defd0e02c65686f539845a3ac9b upstream.
    
    Commit 9dd42d019e63 ("pwm: Allow pwm state transitions from an invalid
    state") intended to allow some state transitions that were not allowed
    before. The idea is sane and back then I also got the code comment
    right, but the check for enabled is bogus. This resulted in state
    transitions for enabled states to be allowed to have invalid duty/period
    settings and thus it can happen that low-level drivers get requests for
    invalid states🙄.
    
    Invert the check to allow state transitions for disabled states only.
    
    Fixes: 9dd42d019e63 ("pwm: Allow pwm state transitions from an invalid state")
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pwm: mediatek: Ensure to disable clocks in error path [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Fri Jul 4 19:27:27 2025 +0200

    pwm: mediatek: Ensure to disable clocks in error path
    
    commit 505b730ede7f5c4083ff212aa955155b5b92e574 upstream.
    
    After enabling the clocks each error path must disable the clocks again.
    One of them failed to do so. Unify the error paths to use goto to make it
    harder for future changes to add a similar bug.
    
    Fixes: 7ca59947b5fc ("pwm: mediatek: Prevent divide-by-zero in pwm_mediatek_config()")
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
raid10: cleanup memleak at raid10_make_request [+ + +]
Author: Nigel Croxon <[email protected]>
Date:   Thu Jul 3 11:23:04 2025 -0400

    raid10: cleanup memleak at raid10_make_request
    
    [ Upstream commit 43806c3d5b9bb7d74ba4e33a6a8a41ac988bde24 ]
    
    If raid10_read_request or raid10_write_request registers a new
    request and the REQ_NOWAIT flag is set, the code does not
    free the malloc from the mempool.
    
    unreferenced object 0xffff8884802c3200 (size 192):
       comm "fio", pid 9197, jiffies 4298078271
       hex dump (first 32 bytes):
         00 00 00 00 00 00 00 00 88 41 02 00 00 00 00 00  .........A......
         08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
       backtrace (crc c1a049a2):
         __kmalloc+0x2bb/0x450
         mempool_alloc+0x11b/0x320
         raid10_make_request+0x19e/0x650 [raid10]
         md_handle_request+0x3b3/0x9e0
         __submit_bio+0x394/0x560
         __submit_bio_noacct+0x145/0x530
         submit_bio_noacct_nocheck+0x682/0x830
         __blkdev_direct_IO_async+0x4dc/0x6b0
         blkdev_read_iter+0x1e5/0x3b0
         __io_read+0x230/0x1110
         io_read+0x13/0x30
         io_issue_sqe+0x134/0x1180
         io_submit_sqes+0x48c/0xe90
         __do_sys_io_uring_enter+0x574/0x8b0
         do_syscall_64+0x5c/0xe0
         entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    V4: changing backing tree to see if CKI tests will pass.
    The patch code has not changed between any versions.
    
    Fixes: c9aa889b035f ("md: raid10 add nowait support")
    Signed-off-by: Nigel Croxon <[email protected]>
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Signed-off-by: Yu Kuai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "ACPI: battery: negate current when discharging" [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Thu Jul 3 12:54:55 2025 +0200

    Revert "ACPI: battery: negate current when discharging"
    
    commit de1675de39aa945bad5937d1fde4df3682670639 upstream.
    
    Revert commit 234f71555019 ("ACPI: battery: negate current when
    discharging") breaks not one but several userspace implementations
    of battery monitoring: Steam and MangoHud. Perhaps it breaks more,
    but those are the two that have been tested.
    
    Reported-by: Matthew Schwartz <[email protected]>
    Closes: https://lore.kernel.org/linux-acpi/[email protected]/
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "drm/xe/xe2: Enable Indirect Ring State support for Xe2" [+ + +]
Author: Matthew Brost <[email protected]>
Date:   Tue Jul 1 20:58:46 2025 -0700

    Revert "drm/xe/xe2: Enable Indirect Ring State support for Xe2"
    
    commit daa099fed50a39256feb37d3fac146bf0d74152f upstream.
    
    This reverts commit fe0154cf8222d9e38c60ccc124adb2f9b5272371.
    
    Seeing some unexplained random failures during LRC context switches with
    indirect ring state enabled. The failures were always there, but the
    repro rate increased with the addition of WA BB as a separate BO.
    Commit 3a1edef8f4b5 ("drm/xe: Make WA BB part of LRC BO") helped to
    reduce the issues in the context switches, but didn't eliminate them
    completely.
    
    Indirect ring state is not required for any current features, so disable
    for now until failures can be root caused.
    
    Cc: [email protected]
    Fixes: fe0154cf8222 ("drm/xe/xe2: Enable Indirect Ring State support for Xe2")
    Signed-off-by: Matthew Brost <[email protected]>
    Reviewed-by: Lucas De Marchi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lucas De Marchi <[email protected]>
    (cherry picked from commit 03d85ab36bcbcbe9dc962fccd3f8e54d7bb93b35)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "PCI/ACPI: Fix allocated memory release on error in pci_acpi_scan_root()" [+ + +]
Author: Zhe Qiao <[email protected]>
Date:   Thu Jun 19 15:26:08 2025 +0800

    Revert "PCI/ACPI: Fix allocated memory release on error in pci_acpi_scan_root()"
    
    commit 2b8be57fa0c88ac824a906f29c04d728f9f6047a upstream.
    
    This reverts commit 631b2af2f357 ("PCI/ACPI: Fix allocated memory release
    on error in pci_acpi_scan_root()").
    
    The reverted patch causes the 'ri->cfg' and 'root_ops' resources to be
    released multiple times.
    
    When acpi_pci_root_create() fails, these resources have already been
    released internally by the __acpi_pci_root_release_info() function.
    
    Releasing them again in pci_acpi_scan_root() leads to incorrect behavior
    and potential memory issues.
    
    We plan to resolve the issue using a more appropriate fix.
    
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Zhe Qiao <[email protected]>
    Acked-by: Dan Carpenter <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "usb: gadget: u_serial: Add null pointer check in gs_start_io" [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Tue Jun 17 13:07:11 2025 +0800

    Revert "usb: gadget: u_serial: Add null pointer check in gs_start_io"
    
    commit f6c7bc4a6823a0a959f40866a1efe99bd03c2c5b upstream.
    
    This reverts commit ffd603f214237e250271162a5b325c6199a65382.
    
    Commit ffd603f21423 ("usb: gadget: u_serial: Add null pointer check in
    gs_start_io") adds null pointer checks at the beginning of the
    gs_start_io() function to prevent a null pointer dereference. However,
    these checks are redundant because the function's comment already
    requires callers to hold the port_lock and ensure port.tty and port_usb
    are not null. All existing callers already follow these rules.
    
    The true cause of the null pointer dereference is a race condition. When
    gs_start_io() calls either gs_start_rx() or gs_start_tx(), the port_lock
    is temporarily released for usb_ep_queue(). This allows port.tty and
    port_usb to be cleared.
    
    Fixes: ffd603f21423 ("usb: gadget: u_serial: Add null pointer check in gs_start_io")
    Cc: stable <[email protected]>
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Reviewed-by: Prashanth K <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
riscv: vdso: Exclude .rodata from the PT_DYNAMIC segment [+ + +]
Author: Fangrui Song <[email protected]>
Date:   Mon Jun 2 20:48:44 2025 -0700

    riscv: vdso: Exclude .rodata from the PT_DYNAMIC segment
    
    [ Upstream commit e0eb1b6b0cd29ca7793c501d5960fd36ba11f110 ]
    
    .rodata is implicitly included in the PT_DYNAMIC segment due to
    inheriting the segment of the preceding .dynamic section (in both GNU ld
    and LLD).  When the .rodata section's size is not a multiple of 16
    bytes on riscv64, llvm-readelf will report a "PT_DYNAMIC dynamic table
    is invalid" warning.  Note: in the presence of the .dynamic section, GNU
    readelf and llvm-readelf's -d option decodes the dynamic section using
    the section.
    
    This issue arose after commit 8f8c1ff879fab60f80f3a7aec3000f47e5b03ba9
    ("riscv: vdso.lds.S: remove hardcoded 0x800 .text start addr"), which
    placed .rodata directly after .dynamic by removing .eh_frame.
    
    This patch resolves the implicit inclusion into PT_DYNAMIC by explicitly
    specifying the :text output section phdr.
    
    Reported-by: Nathan Chancellor <[email protected]>
    Closes: https://github.com/ClangBuiltLinux/linux/issues/2093
    Signed-off-by: Fangrui Song <[email protected]>
    Tested-by: Nathan Chancellor <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rxrpc: Fix bug due to prealloc collision [+ + +]
Author: David Howells <[email protected]>
Date:   Tue Jul 8 22:15:03 2025 +0100

    rxrpc: Fix bug due to prealloc collision
    
    [ Upstream commit 69e4186773c6445b258fb45b6e1df18df831ec45 ]
    
    When userspace is using AF_RXRPC to provide a server, it has to preallocate
    incoming calls and assign to them call IDs that will be used to thread
    related recvmsg() and sendmsg() together.  The preallocated call IDs will
    automatically be attached to calls as they come in until the pool is empty.
    
    To the kernel, the call IDs are just arbitrary numbers, but userspace can
    use the call ID to hold a pointer to prepared structs.  In any case, the
    user isn't permitted to create two calls with the same call ID (call IDs
    become available again when the call ends) and EBADSLT should result from
    sendmsg() if an attempt is made to preallocate a call with an in-use call
    ID.
    
    However, the cleanup in the error handling will trigger both assertions in
    rxrpc_cleanup_call() because the call isn't marked complete and isn't
    marked as having been released.
    
    Fix this by setting the call state in rxrpc_service_prealloc_one() and then
    marking it as being released before calling the cleanup function.
    
    Fixes: 00e907127e6f ("rxrpc: Preallocate peers, conns and calls for incoming service requests")
    Reported-by: Junvyyang, Tencent Zhuque Lab <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    cc: LePremierHomme <[email protected]>
    cc: Marc Dionne <[email protected]>
    cc: Simon Horman <[email protected]>
    cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rxrpc: Fix oops due to non-existence of prealloc backlog struct [+ + +]
Author: David Howells <[email protected]>
Date:   Tue Jul 8 22:15:04 2025 +0100

    rxrpc: Fix oops due to non-existence of prealloc backlog struct
    
    commit 880a88f318cf1d2a0f4c0a7ff7b07e2062b434a4 upstream.
    
    If an AF_RXRPC service socket is opened and bound, but calls are
    preallocated, then rxrpc_alloc_incoming_call() will oops because the
    rxrpc_backlog struct doesn't get allocated until the first preallocation is
    made.
    
    Fix this by returning NULL from rxrpc_alloc_incoming_call() if there is no
    backlog struct.  This will cause the incoming call to be aborted.
    
    Reported-by: Junvyyang, Tencent Zhuque Lab <[email protected]>
    Suggested-by: Junvyyang, Tencent Zhuque Lab <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    cc: LePremierHomme <[email protected]>
    cc: Marc Dionne <[email protected]>
    cc: Willy Tarreau <[email protected]>
    cc: Simon Horman <[email protected]>
    cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
samples/damon: fix damon sample prcl for start failure [+ + +]
Author: Honggyu Kim <[email protected]>
Date:   Wed Jul 2 09:02:01 2025 +0900

    samples/damon: fix damon sample prcl for start failure
    
    commit d9e01c62b7a0c258a7481c083f84c766a8f5597c upstream.
    
    Patch series "mm/damon: fix divide by zero and its samples", v3.
    
    This series includes fixes against damon and its samples to make it safer
    when damon sample starting fails.
    
    It includes the following changes.
    - fix unexpected divide by zero crash for zero size regions
    - fix bugs for damon samples in case of start failures
    
    
    This patch (of 4):
    
    The damon_sample_prcl_start() can fail so we must reset the "enable"
    parameter to "false" again for proper rollback.
    
    In such cases, setting Y to "enable" then N triggers the following crash
    because damon sample start failed but the "enable" stays as Y.
    
      [ 2441.419649] damon_sample_prcl: start
      [ 2454.146817] damon_sample_prcl: stop
      [ 2454.146862] ------------[ cut here ]------------
      [ 2454.146865] kernel BUG at mm/slub.c:546!
      [ 2454.148183] Oops: invalid opcode: 0000 [#1] SMP NOPTI
            ...
      [ 2454.167555] Call Trace:
      [ 2454.167822]  <TASK>
      [ 2454.168061]  damon_destroy_ctx+0x78/0x140
      [ 2454.168454]  damon_sample_prcl_enable_store+0x8d/0xd0
      [ 2454.168932]  param_attr_store+0xa1/0x120
      [ 2454.169315]  module_attr_store+0x20/0x50
      [ 2454.169695]  sysfs_kf_write+0x72/0x90
      [ 2454.170065]  kernfs_fop_write_iter+0x150/0x1e0
      [ 2454.170491]  vfs_write+0x315/0x440
      [ 2454.170833]  ksys_write+0x69/0xf0
      [ 2454.171162]  __x64_sys_write+0x19/0x30
      [ 2454.171525]  x64_sys_call+0x18b2/0x2700
      [ 2454.171900]  do_syscall_64+0x7f/0x680
      [ 2454.172258]  ? exit_to_user_mode_loop+0xf6/0x180
      [ 2454.172694]  ? clear_bhb_loop+0x30/0x80
      [ 2454.173067]  ? clear_bhb_loop+0x30/0x80
      [ 2454.173439]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2aca254620a8 ("samples/damon: introduce a skeleton of a smaple DAMON module for proactive reclamation")
    Signed-off-by: Honggyu Kim <[email protected]>
    Reviewed-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

samples/damon: fix damon sample wsse for start failure [+ + +]
Author: Honggyu Kim <[email protected]>
Date:   Wed Jul 2 09:02:02 2025 +0900

    samples/damon: fix damon sample wsse for start failure
    
    commit f1221c8442616a6927aff836327777144545cb29 upstream.
    
    The damon_sample_wsse_start() can fail so we must reset the "enable"
    parameter to "false" again for proper rollback.
    
    In such cases, setting Y to "enable" then N triggers the similar crash
    with wsse because damon sample start failed but the "enable" stays as Y.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: b757c6cfc696 ("samples/damon/wsse: start and stop DAMON as the user requests")
    Signed-off-by: Honggyu Kim <[email protected]>
    Reviewed-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sched/core: Fix migrate_swap() vs. hotplug [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Thu Jun 5 12:00:09 2025 +0200

    sched/core: Fix migrate_swap() vs. hotplug
    
    [ Upstream commit 009836b4fa52f92cba33618e773b1094affa8cd2 ]
    
    On Mon, Jun 02, 2025 at 03:22:13PM +0800, Kuyo Chang wrote:
    
    > So, the potential race scenario is:
    >
    >       CPU0                                                    CPU1
    >       // doing migrate_swap(cpu0/cpu1)
    >       stop_two_cpus()
    >                                                         ...
    >                                                        // doing _cpu_down()
    >                                                             sched_cpu_deactivate()
    >                                                               set_cpu_active(cpu, false);
    >                                                               balance_push_set(cpu, true);
    >       cpu_stop_queue_two_works
    >           __cpu_stop_queue_work(stopper1,...);
    >           __cpu_stop_queue_work(stopper2,..);
    >       stop_cpus_in_progress -> true
    >               preempt_enable();
    >                                                               ...
    >                                                       1st balance_push
    >                                                       stop_one_cpu_nowait
    >                                                       cpu_stop_queue_work
    >                                                       __cpu_stop_queue_work
    >                                                       list_add_tail  -> 1st add push_work
    >                                                       wake_up_q(&wakeq);  -> "wakeq is empty.
    >                                                                               This implies that the stopper is at wakeq@migrate_swap."
    >       preempt_disable
    >       wake_up_q(&wakeq);
    >               wake_up_process // wakeup migrate/0
    >                   try_to_wake_up
    >                       ttwu_queue
    >                           ttwu_queue_cond ->meet below case
    >                               if (cpu == smp_processor_id())
    >                                return false;
    >                       ttwu_do_activate
    >                       //migrate/0 wakeup done
    >               wake_up_process // wakeup migrate/1
    >                  try_to_wake_up
    >                   ttwu_queue
    >                       ttwu_queue_cond
    >                       ttwu_queue_wakelist
    >                       __ttwu_queue_wakelist
    >                       __smp_call_single_queue
    >       preempt_enable();
    >
    >                                                       2nd balance_push
    >                                                       stop_one_cpu_nowait
    >                                                       cpu_stop_queue_work
    >                                                       __cpu_stop_queue_work
    >                                                       list_add_tail  -> 2nd add push_work, so the double list add is detected
    >                                                       ...
    >                                                       ...
    >                                                       cpu1 get ipi, do sched_ttwu_pending, wakeup migrate/1
    >
    
    So this balance_push() is part of schedule(), and schedule() is supposed
    to switch to stopper task, but because of this race condition, stopper
    task is stuck in WAKING state and not actually visible to be picked.
    
    Therefore CPU1 can do another schedule() and end up doing another
    balance_push() even though the last one hasn't been done yet.
    
    This is a confluence of fail, where both wake_q and ttwu_wakelist can
    cause crucial wakeups to be delayed, resulting in the malfunction of
    balance_push.
    
    Since there is only a single stopper thread to be woken, the wake_q
    doesn't really add anything here, and can be removed in favour of
    direct wakeups of the stopper thread.
    
    Then add a clause to ttwu_queue_cond() to ensure the stopper threads
    are never queued / delayed.
    
    Of all 3 moving parts, the last addition was the balance_push()
    machinery, so pick that as the point the bug was introduced.
    
    Fixes: 2558aacff858 ("sched/hotplug: Ensure only per-cpu kthreads run during hotplug")
    Reported-by: Kuyo Chang <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Tested-by: Kuyo Chang <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
sched/deadline: Fix dl_server runtime calculation formula [+ + +]
Author: kuyo chang <[email protected]>
Date:   Wed Jul 2 10:12:25 2025 +0800

    sched/deadline: Fix dl_server runtime calculation formula
    
    [ Upstream commit fc975cfb36393db1db517fbbe366e550bcdcff14 ]
    
    In our testing with 6.12 based kernel on a big.LITTLE system, we were
    seeing instances of RT tasks being blocked from running on the LITTLE
    cpus for multiple seconds of time, apparently by the dl_server. This
    far exceeds the default configured 50ms per second runtime.
    
    This is due to the fair dl_server runtime calculation being scaled
    for frequency & capacity of the cpu.
    
    Consider the following case under a Big.LITTLE architecture:
    Assume the runtime is: 50,000,000 ns, and Frequency/capacity
    scale-invariance defined as below:
    Frequency scale-invariance: 100
    Capacity scale-invariance: 50
    First by Frequency scale-invariance,
    the runtime is scaled to 50,000,000 * 100 >> 10 = 4,882,812
    Then by capacity scale-invariance,
    it is further scaled to 4,882,812 * 50 >> 10 = 238,418.
    So it will scaled to 238,418 ns.
    
    This smaller "accounted runtime" value is what ends up being
    subtracted against the fair-server's runtime for the current period.
    Thus after 50ms of real time, we've only accounted ~238us against the
    fair servers runtime. This 209:1 ratio in this example means that on
    the smaller cpu the fair server is allowed to continue running,
    blocking RT tasks, for over 10 seconds before it exhausts its supposed
    50ms of runtime.  And on other hardware configurations it can be even
    worse.
    
    For the fair deadline_server, to prevent realtime tasks from being
    unexpectedly delayed, we really do want to use fixed time, and not
    scaled time for smaller capacity/frequency cpus. So remove the scaling
    from the fair server's accounting to fix this.
    
    Fixes: a110a81c52a9 ("sched/deadline: Deferrable dl server")
    Suggested-by: Peter Zijlstra <[email protected]>
    Suggested-by: John Stultz <[email protected]>
    Signed-off-by: kuyo chang <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Acked-by: Juri Lelli <[email protected]>
    Acked-by: John Stultz <[email protected]>
    Tested-by: John Stultz <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
sched: Fix preemption string of preempt_dynamic_none [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Thu Jun 26 11:23:44 2025 +0200

    sched: Fix preemption string of preempt_dynamic_none
    
    commit 3ebb1b6522392f64902b4e96954e35927354aa27 upstream.
    
    Zero is a valid value for "preempt_dynamic_mode", namely
    "preempt_dynamic_none".
    
    Fix the off-by-one in preempt_model_str(), so that "preempty_dynamic_none"
    is correctly formatted as PREEMPT(none) instead of PREEMPT(undef).
    
    Fixes: 8bdc5daaa01e ("sched: Add a generic function to return the preemption string")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Sebastian Andrzej Siewior <[email protected]>
    Tested-by: Shrikanth Hegde <[email protected]>
    Cc: [email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
scripts/gdb: de-reference per-CPU MCE interrupts [+ + +]
Author: Florian Fainelli <[email protected]>
Date:   Mon Jun 23 20:00:19 2025 -0700

    scripts/gdb: de-reference per-CPU MCE interrupts
    
    commit 50f4d2ba26d5c3a4687ae0569be3bbf1c8f0cbed upstream.
    
    The per-CPU MCE interrupts are looked up by reference and need to be
    de-referenced before printing, otherwise we print the addresses of the
    variables instead of their contents:
    
    MCE: 18379471554386948492   Machine check exceptions
    MCP: 18379471554386948488   Machine check polls
    
    The corrected output looks like this instead now:
    
    MCE:          0   Machine check exceptions
    MCP:          1   Machine check polls
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: b0969d7687a7 ("scripts/gdb: print interrupts")
    Signed-off-by: Florian Fainelli <[email protected]>
    Cc: Jan Kiszka <[email protected]>
    Cc: Kieran Bingham <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scripts/gdb: fix interrupts display after MCP on x86 [+ + +]
Author: Florian Fainelli <[email protected]>
Date:   Mon Jun 23 09:41:52 2025 -0700

    scripts/gdb: fix interrupts display after MCP on x86
    
    commit 7627b459aa0737bdd62a8591a1481cda467f20e3 upstream.
    
    The text line would not be appended to as it should have, it should have
    been a '+=' but ended up being a '==', fix that.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: b0969d7687a7 ("scripts/gdb: print interrupts")
    Signed-off-by: Florian Fainelli <[email protected]>
    Cc: Jan Kiszka <[email protected]>
    Cc: Kieran Bingham <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scripts/gdb: fix interrupts.py after maple tree conversion [+ + +]
Author: Florian Fainelli <[email protected]>
Date:   Tue Jun 24 19:10:20 2025 -0700

    scripts/gdb: fix interrupts.py after maple tree conversion
    
    commit a02b0cde8ee515ee0c8efd33e7fbe6830c282e69 upstream.
    
    In commit 721255b9826b ("genirq: Use a maple tree for interrupt descriptor
    management"), the irq_desc_tree was replaced with a sparse_irqs tree using
    a maple tree structure.  Since the script looked for the irq_desc_tree
    symbol which is no longer available, no interrupts would be printed and
    the script output would not be useful anymore.
    
    In addition to looking up the correct symbol (sparse_irqs), a new module
    (mapletree.py) is added whose mtree_load() implementation is largely
    copied after the C version and uses the same variable and intermediate
    function names wherever possible to ensure that both the C and Python
    version be updated in the future.
    
    This restores the scripts' output to match that of /proc/interrupts.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 721255b9826b ("genirq: Use a maple tree for interrupt descriptor management")
    Signed-off-by: Florian Fainelli <[email protected]>
    Cc: Jan Kiszka <[email protected]>
    Cc: Kieran Bingham <[email protected]>
    Cc: Shanker Donthineni <[email protected]>
    Cc: Thomas Gleinxer <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
scripts: gdb: vfs: support external dentry names [+ + +]
Author: Illia Ostapyshyn <[email protected]>
Date:   Sun Jun 29 02:38:11 2025 +0200

    scripts: gdb: vfs: support external dentry names
    
    commit e6d3e653b084f003977bf2e33820cb84d2e4541f upstream.
    
    d_shortname of struct dentry only reserves D_NAME_INLINE_LEN characters
    and contains garbage for longer names.  Use d_name instead, which always
    references the valid name.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 79300ac805b6 ("scripts/gdb: fix dentry_name() lookup")
    Signed-off-by: Illia Ostapyshyn <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Jan Kara <[email protected]>
    Cc: Jan Kiszka <[email protected]>
    Cc: Kieran Bingham <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
selftests/bpf: adapt one more case in test_lru_map to the new target_free [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Wed Jun 25 17:03:55 2025 -0400

    selftests/bpf: adapt one more case in test_lru_map to the new target_free
    
    commit 5e9388f7984a9cc7e659a105113f6ccf0aebedd0 upstream.
    
    The below commit that updated BPF_MAP_TYPE_LRU_HASH free target,
    also updated tools/testing/selftests/bpf/test_lru_map to match.
    
    But that missed one case that passes with 4 cores, but fails at
    higher cpu counts.
    
    Update test_lru_sanity3 to also adjust its expectation of target_free.
    
    This time tested with 1, 4, 16, 64 and 384 cpu count.
    
    Fixes: d4adf1c9ee77 ("bpf: Adjust free target to avoid global starvation of LRU map")
    Signed-off-by: Willem de Bruijn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
selftests: net: lib: fix shift count out of range [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Wed Jul 9 09:12:44 2025 +0000

    selftests: net: lib: fix shift count out of range
    
    [ Upstream commit 47c84997c686b4d43b225521b732492552b84758 ]
    
    I got the following warning when writing other tests:
    
      + handle_test_result_pass 'bond 802.3ad' '(lacp_active off)'
      + local 'test_name=bond 802.3ad'
      + shift
      + local 'opt_str=(lacp_active off)'
      + shift
      + log_test_result 'bond 802.3ad' '(lacp_active off)' ' OK '
      + local 'test_name=bond 802.3ad'
      + shift
      + local 'opt_str=(lacp_active off)'
      + shift
      + local 'result= OK '
      + shift
      + local retmsg=
      + shift
      /net/tools/testing/selftests/net/forwarding/../lib.sh: line 315: shift: shift count out of range
    
    This happens because an extra shift is executed even after all arguments
    have been consumed. Remove the last shift in log_test_result() to avoid
    this warning.
    
    Fixes: a923af1ceee7 ("selftests: forwarding: Convert log_test() to recognize RET values")
    Signed-off-by: Hangbin Liu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smb: server: make use of rdma_destroy_qp() [+ + +]
Author: Stefan Metzmacher <[email protected]>
Date:   Wed Jul 2 09:18:05 2025 +0200

    smb: server: make use of rdma_destroy_qp()
    
    commit 0c2b53997e8f5e2ec9e0fbd17ac0436466b65488 upstream.
    
    The qp is created by rdma_create_qp() as t->cm_id->qp
    and t->qp is just a shortcut.
    
    rdma_destroy_qp() also calls ib_destroy_qp(cm_id->qp) internally,
    but it is protected by a mutex, clears the cm_id and also calls
    trace_cm_qp_destroy().
    
    This should make the tracing more useful as both
    rdma_create_qp() and rdma_destroy_qp() are traces and it makes
    the code look more sane as functions from the same layer are used
    for the specific qp object.
    
    trace-cmd stream -e rdma_cma:cm_qp_create -e rdma_cma:cm_qp_destroy
    shows this now while doing a mount and unmount from a client:
    
      <...>-80   [002] 378.514182: cm_qp_create:  cm.id=1 src=172.31.9.167:5445 dst=172.31.9.166:37113 tos=0 pd.id=0 qp_type=RC send_wr=867 recv_wr=255 qp_num=1 rc=0
      <...>-6283 [001] 381.686172: cm_qp_destroy: cm.id=1 src=172.31.9.167:5445 dst=172.31.9.166:37113 tos=0 qp_num=1
    
    Before we only saw the first line.
    
    Cc: Namjae Jeon <[email protected]>
    Cc: Steve French <[email protected]>
    Cc: Sergey Senozhatsky <[email protected]>
    Cc: Hyunchul Lee <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Cc: [email protected]
    Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Reviewed-by: Tom Talpey <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tcp: Correct signedness in skb remaining space calculation [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Mon Jul 7 13:41:11 2025 +0800

    tcp: Correct signedness in skb remaining space calculation
    
    [ Upstream commit d3a5f2871adc0c61c61869f37f3e697d97f03d8c ]
    
    Syzkaller reported a bug [1] where sk->sk_forward_alloc can overflow.
    
    When we send data, if an skb exists at the tail of the write queue, the
    kernel will attempt to append the new data to that skb. However, the code
    that checks for available space in the skb is flawed:
    '''
    copy = size_goal - skb->len
    '''
    
    The types of the variables involved are:
    '''
    copy: ssize_t (s64 on 64-bit systems)
    size_goal: int
    skb->len: unsigned int
    '''
    
    Due to C's type promotion rules, the signed size_goal is converted to an
    unsigned int to match skb->len before the subtraction. The result is an
    unsigned int.
    
    When this unsigned int result is then assigned to the s64 copy variable,
    it is zero-extended, preserving its non-negative value. Consequently, copy
    is always >= 0.
    
    Assume we are sending 2GB of data and size_goal has been adjusted to a
    value smaller than skb->len. The subtraction will result in copy holding a
    very large positive integer. In the subsequent logic, this large value is
    used to update sk->sk_forward_alloc, which can easily cause it to overflow.
    
    The syzkaller reproducer uses TCP_REPAIR to reliably create this
    condition. However, this can also occur in real-world scenarios. The
    tcp_bound_to_half_wnd() function can also reduce size_goal to a small
    value. This would cause the subsequent tcp_wmem_schedule() to set
    sk->sk_forward_alloc to a value close to INT_MAX. Further memory
    allocation requests would then cause sk_forward_alloc to wrap around and
    become negative.
    
    [1]: https://syzkaller.appspot.com/bug?extid=de6565462ab540f50e47
    
    Reported-by: [email protected]
    Fixes: 270a1c3de47e ("tcp: Support MSG_SPLICE_PAGES")
    Signed-off-by: Jiayuan Chen <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Howells <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tipc: Fix use-after-free in tipc_conn_close(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Wed Jul 2 01:43:40 2025 +0000

    tipc: Fix use-after-free in tipc_conn_close().
    
    [ Upstream commit 667eeab4999e981c96b447a4df5f20bdf5c26f13 ]
    
    syzbot reported a null-ptr-deref in tipc_conn_close() during netns
    dismantle. [0]
    
    tipc_topsrv_stop() iterates tipc_net(net)->topsrv->conn_idr and calls
    tipc_conn_close() for each tipc_conn.
    
    The problem is that tipc_conn_close() is called after releasing the
    IDR lock.
    
    At the same time, there might be tipc_conn_recv_work() running and it
    could call tipc_conn_close() for the same tipc_conn and release its
    last ->kref.
    
    Once we release the IDR lock in tipc_topsrv_stop(), there is no
    guarantee that the tipc_conn is alive.
    
    Let's hold the ref before releasing the lock and put the ref after
    tipc_conn_close() in tipc_topsrv_stop().
    
    [0]:
    BUG: KASAN: use-after-free in tipc_conn_close+0x122/0x140 net/tipc/topsrv.c:165
    Read of size 8 at addr ffff888099305a08 by task kworker/u4:3/435
    
    CPU: 0 PID: 435 Comm: kworker/u4:3 Not tainted 4.19.204-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: netns cleanup_net
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1fc/0x2ef lib/dump_stack.c:118
     print_address_description.cold+0x54/0x219 mm/kasan/report.c:256
     kasan_report_error.cold+0x8a/0x1b9 mm/kasan/report.c:354
     kasan_report mm/kasan/report.c:412 [inline]
     __asan_report_load8_noabort+0x88/0x90 mm/kasan/report.c:433
     tipc_conn_close+0x122/0x140 net/tipc/topsrv.c:165
     tipc_topsrv_stop net/tipc/topsrv.c:701 [inline]
     tipc_topsrv_exit_net+0x27b/0x5c0 net/tipc/topsrv.c:722
     ops_exit_list+0xa5/0x150 net/core/net_namespace.c:153
     cleanup_net+0x3b4/0x8b0 net/core/net_namespace.c:553
     process_one_work+0x864/0x1570 kernel/workqueue.c:2153
     worker_thread+0x64c/0x1130 kernel/workqueue.c:2296
     kthread+0x33f/0x460 kernel/kthread.c:259
     ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415
    
    Allocated by task 23:
     kmem_cache_alloc_trace+0x12f/0x380 mm/slab.c:3625
     kmalloc include/linux/slab.h:515 [inline]
     kzalloc include/linux/slab.h:709 [inline]
     tipc_conn_alloc+0x43/0x4f0 net/tipc/topsrv.c:192
     tipc_topsrv_accept+0x1b5/0x280 net/tipc/topsrv.c:470
     process_one_work+0x864/0x1570 kernel/workqueue.c:2153
     worker_thread+0x64c/0x1130 kernel/workqueue.c:2296
     kthread+0x33f/0x460 kernel/kthread.c:259
     ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415
    
    Freed by task 23:
     __cache_free mm/slab.c:3503 [inline]
     kfree+0xcc/0x210 mm/slab.c:3822
     tipc_conn_kref_release net/tipc/topsrv.c:150 [inline]
     kref_put include/linux/kref.h:70 [inline]
     conn_put+0x2cd/0x3a0 net/tipc/topsrv.c:155
     process_one_work+0x864/0x1570 kernel/workqueue.c:2153
     worker_thread+0x64c/0x1130 kernel/workqueue.c:2296
     kthread+0x33f/0x460 kernel/kthread.c:259
     ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415
    
    The buggy address belongs to the object at ffff888099305a00
     which belongs to the cache kmalloc-512 of size 512
    The buggy address is located 8 bytes inside of
     512-byte region [ffff888099305a00, ffff888099305c00)
    The buggy address belongs to the page:
    page:ffffea000264c140 count:1 mapcount:0 mapping:ffff88813bff0940 index:0x0
    flags: 0xfff00000000100(slab)
    raw: 00fff00000000100 ffffea00028b6b88 ffffea0002cd2b08 ffff88813bff0940
    raw: 0000000000000000 ffff888099305000 0000000100000006 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888099305900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff888099305980: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff888099305a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                          ^
     ffff888099305a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff888099305b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    
    Fixes: c5fa7b3cf3cb ("tipc: introduce new TIPC server infrastructure")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=27169a847a70550d17be
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Tung Nguyen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ublk: sanity check add_dev input for underflow [+ + +]
Author: Ronnie Sahlberg <[email protected]>
Date:   Thu Jun 26 12:20:45 2025 +1000

    ublk: sanity check add_dev input for underflow
    
    [ Upstream commit 969127bf0783a4ac0c8a27e633a9e8ea1738583f ]
    
    Add additional checks that queue depth and number of queues are
    non-zero.
    
    Signed-off-by: Ronnie Sahlberg <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
um: vector: Reduce stack usage in vector_eth_configure() [+ + +]
Author: Tiwei Bie <[email protected]>
Date:   Mon Jun 23 19:08:29 2025 +0800

    um: vector: Reduce stack usage in vector_eth_configure()
    
    [ Upstream commit 2d65fc13be85c336c56af7077f08ccd3a3a15a4a ]
    
    When compiling with clang (19.1.7), initializing *vp using a compound
    literal may result in excessive stack usage. Fix it by initializing the
    required fields of *vp individually.
    
    Without this patch:
    
    $ objdump -d arch/um/drivers/vector_kern.o | ./scripts/checkstack.pl x86_64 0
    ...
    0x0000000000000540 vector_eth_configure [vector_kern.o]:1472
    ...
    
    With this patch:
    
    $ objdump -d arch/um/drivers/vector_kern.o | ./scripts/checkstack.pl x86_64 0
    ...
    0x0000000000000540 vector_eth_configure [vector_kern.o]:208
    ...
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Tiwei Bie <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: gadget: u_serial: Fix race condition in TTY wakeup [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Tue Jun 17 13:07:12 2025 +0800

    usb: gadget: u_serial: Fix race condition in TTY wakeup
    
    commit c529c3730bd09115684644e26bf01ecbd7e2c2c9 upstream.
    
    A race condition occurs when gs_start_io() calls either gs_start_rx() or
    gs_start_tx(), as those functions briefly drop the port_lock for
    usb_ep_queue(). This allows gs_close() and gserial_disconnect() to clear
    port.tty and port_usb, respectively.
    
    Use the null-safe TTY Port helper function to wake up TTY.
    
    Example
      CPU1:                       CPU2:
      gserial_connect() // lock
                                  gs_close() // await lock
      gs_start_rx()     // unlock
      usb_ep_queue()
                                  gs_close() // lock, reset port.tty and unlock
      gs_start_rx()     // lock
      tty_wakeup()      // NPE
    
    Fixes: 35f95fd7f234 ("TTY: usb/u_serial, use tty from tty_port")
    Cc: stable <[email protected]>
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Reviewed-by: Prashanth K <[email protected]>
    Link: https://lore.kernel.org/linux-usb/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vsock: fix `vsock_proto` declaration [+ + +]
Author: Stefano Garzarella <[email protected]>
Date:   Thu Jul 3 13:23:29 2025 +0200

    vsock: fix `vsock_proto` declaration
    
    [ Upstream commit 1e3b66e326015f77bc4b36976bebeedc2ac0f588 ]
    
    From commit 634f1a7110b4 ("vsock: support sockmap"), `struct proto
    vsock_proto`, defined in af_vsock.c, is not static anymore, since it's
    used by vsock_bpf.c.
    
    If CONFIG_BPF_SYSCALL is not defined, `make C=2` will print a warning:
        $ make O=build C=2 W=1 net/vmw_vsock/
          ...
          CC [M]  net/vmw_vsock/af_vsock.o
          CHECK   ../net/vmw_vsock/af_vsock.c
        ../net/vmw_vsock/af_vsock.c:123:14: warning: symbol 'vsock_proto' was not declared. Should it be static?
    
    Declare `vsock_proto` regardless of CONFIG_BPF_SYSCALL, since it's defined
    in af_vsock.c, which is built regardless of CONFIG_BPF_SYSCALL.
    
    Fixes: 634f1a7110b4 ("vsock: support sockmap")
    Signed-off-by: Stefano Garzarella <[email protected]>
    Acked-by: Michael S. Tsirkin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vsock: Fix IOCTL_VM_SOCKETS_GET_LOCAL_CID to check also `transport_local` [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Thu Jul 3 17:18:20 2025 +0200

    vsock: Fix IOCTL_VM_SOCKETS_GET_LOCAL_CID to check also `transport_local`
    
    [ Upstream commit 1e7d9df379a04ccd0c2f82f39fbb69d482e864cc ]
    
    Support returning VMADDR_CID_LOCAL in case no other vsock transport is
    available.
    
    Fixes: 0e12190578d0 ("vsock: add local transport support in the vsock core")
    Suggested-by: Stefano Garzarella <[email protected]>
    Reviewed-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vsock: Fix transport_* TOCTOU [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Thu Jul 3 17:18:19 2025 +0200

    vsock: Fix transport_* TOCTOU
    
    [ Upstream commit 687aa0c5581b8d4aa87fd92973e4ee576b550cdf ]
    
    Transport assignment may race with module unload. Protect new_transport
    from becoming a stale pointer.
    
    This also takes care of an insecure call in vsock_use_local_transport();
    add a lockdep assert.
    
    BUG: unable to handle page fault for address: fffffbfff8056000
    Oops: Oops: 0000 [#1] SMP KASAN
    RIP: 0010:vsock_assign_transport+0x366/0x600
    Call Trace:
     vsock_connect+0x59c/0xc40
     __sys_connect+0xe8/0x100
     __x64_sys_connect+0x6e/0xc0
     do_syscall_64+0x92/0x1c0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Reviewed-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vsock: Fix transport_{g2h,h2g} TOCTOU [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Thu Jul 3 17:18:18 2025 +0200

    vsock: Fix transport_{g2h,h2g} TOCTOU
    
    [ Upstream commit 209fd720838aaf1420416494c5505096478156b4 ]
    
    vsock_find_cid() and vsock_dev_do_ioctl() may race with module unload.
    transport_{g2h,h2g} may become NULL after the NULL check.
    
    Introduce vsock_transport_local_cid() to protect from a potential
    null-ptr-deref.
    
    KASAN: null-ptr-deref in range [0x0000000000000118-0x000000000000011f]
    RIP: 0010:vsock_find_cid+0x47/0x90
    Call Trace:
     __vsock_bind+0x4b2/0x720
     vsock_bind+0x90/0xe0
     __sys_bind+0x14d/0x1e0
     __x64_sys_bind+0x6e/0xc0
     do_syscall_64+0x92/0x1c0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    KASAN: null-ptr-deref in range [0x0000000000000118-0x000000000000011f]
    RIP: 0010:vsock_dev_do_ioctl.isra.0+0x58/0xf0
    Call Trace:
     __x64_sys_ioctl+0x12d/0x190
     do_syscall_64+0x92/0x1c0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Suggested-by: Stefano Garzarella <[email protected]>
    Reviewed-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vt: add missing notification when switching back to text mode [+ + +]
Author: Nicolas Pitre <[email protected]>
Date:   Tue Jun 10 21:41:44 2025 -0400

    vt: add missing notification when switching back to text mode
    
    [ Upstream commit ff78538e07fa284ce08cbbcb0730daa91ed16722 ]
    
    Programs using poll() on /dev/vcsa to be notified when VT changes occur
    were missing one case: the switch from gfx to text mode.
    
    Signed-off-by: Nicolas Pitre <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: cfg80211: fix S1G beacon head validation in nl80211 [+ + +]
Author: Lachlan Hodges <[email protected]>
Date:   Thu Jun 26 21:51:18 2025 +1000

    wifi: cfg80211: fix S1G beacon head validation in nl80211
    
    [ Upstream commit 1fe44a86ff0ff483aa1f1332f2b08f431fa51ce8 ]
    
    S1G beacons contain fixed length optional fields that precede the
    variable length elements, ensure we take this into account when
    validating the beacon. This particular case was missed in
    1e1f706fc2ce ("wifi: cfg80211/mac80211: correctly parse S1G
    beacon optional elements").
    
    Fixes: 1d47f1198d58 ("nl80211: correctly validate S1G beacon head")
    Signed-off-by: Lachlan Hodges <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [shorten/reword subject]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: add the virtual monitor after reconfig complete [+ + +]
Author: Miri Korenblit <[email protected]>
Date:   Wed Jul 9 23:34:56 2025 +0300

    wifi: mac80211: add the virtual monitor after reconfig complete
    
    [ Upstream commit c07981af55d3ba3ec3be880cfe4a0cc10f1f7138 ]
    
    In reconfig we add the virtual monitor in 2 cases:
    1. If we are resuming (it was deleted on suspend)
    2. If it was added after an error but before the reconfig
       (due to the last non-monitor interface removal).
    
    In the second case, the removal of the non-monitor interface will succeed
    but the addition of the virtual monitor will fail, so we add it in the
    reconfig.
    
    The problem is that we mislead the driver to think that this is an existing
    interface that is getting re-added - while it is actually a completely new
    interface from the drivers' point of view.
    
    Some drivers act differently when a interface is re-added. For example, it
    might not initialize things because they were already initialized.
    Such drivers will - in this case - be left with a partialy initialized vif.
    
    To fix it, add the virtual monitor after reconfig_complete, so the
    driver will know that this is a completely new interface.
    
    Fixes: 3c3e21e7443b ("mac80211: destroy virtual monitor interface across suspend")
    Reviewed-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250709233451.648d39b041e8.I2e37b68375278987e303d6c00cc5f3d8334d2f96@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: correctly identify S1G short beacon [+ + +]
Author: Lachlan Hodges <[email protected]>
Date:   Tue Jul 1 17:55:41 2025 +1000

    wifi: mac80211: correctly identify S1G short beacon
    
    [ Upstream commit c5fd399a24c8e2865524361f7dc4d4a6899be4f4 ]
    
    mac80211 identifies a short beacon by the presence of the next
    TBTT field, however the standard actually doesn't explicitly state that
    the next TBTT can't be in a long beacon or even that it is required in
    a short beacon - and as a result this validation does not work for all
    vendor implementations.
    
    The standard explicitly states that an S1G long beacon shall contain
    the S1G beacon compatibility element as the first element in a beacon
    transmitted at a TBTT that is not a TSBTT (Target Short Beacon
    Transmission Time) as per IEEE80211-2024 11.1.3.10.1. This is validated
    by 9.3.4.3 Table 9-76 which states that the S1G beacon compatibility
    element is only allowed in the full set and is not allowed in the
    minimum set of elements permitted for use within short beacons.
    
    Correctly identify short beacons by the lack of an S1G beacon
    compatibility element as the first element in an S1G beacon frame.
    
    Fixes: 9eaffe5078ca ("cfg80211: convert S1G beacon to scan results")
    Signed-off-by: Simon Wadsworth <[email protected]>
    Signed-off-by: Lachlan Hodges <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: fix non-transmitted BSSID profile search [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Mon Jun 30 15:45:01 2025 +0200

    wifi: mac80211: fix non-transmitted BSSID profile search
    
    [ Upstream commit e1e6ebf490e55fee1ae573aa443c1d4aea5e4a40 ]
    
    When the non-transmitted BSSID profile is found, immediately return
    from the search to not return the wrong profile_len when the profile
    is found in a multiple BSSID element that isn't the last one in the
    frame.
    
    Fixes: 5023b14cf4df ("mac80211: support profile split between elements")
    Reported-by: Michael-CY Lee <[email protected]>
    Link: https://patch.msgid.link/20250630154501.f26cd45a0ecd.I28e0525d06e8a99e555707301bca29265cf20dc8@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: reject VHT opmode for unsupported channel widths [+ + +]
Author: Moon Hee Lee <[email protected]>
Date:   Thu Jul 3 12:37:57 2025 -0700

    wifi: mac80211: reject VHT opmode for unsupported channel widths
    
    [ Upstream commit 58fcb1b4287ce38850402bb2bb16d09bf77b91d9 ]
    
    VHT operating mode notifications are not defined for channel widths
    below 20 MHz. In particular, 5 MHz and 10 MHz are not valid under the
    VHT specification and must be rejected.
    
    Without this check, malformed notifications using these widths may
    reach ieee80211_chan_width_to_rx_bw(), leading to a WARN_ON due to
    invalid input. This issue was reported by syzbot.
    
    Reject these unsupported widths early in sta_link_apply_parameters()
    when opmode_notif is used. The accepted set includes 20, 40, 80, 160,
    and 80+80 MHz, which are valid for VHT. While 320 MHz is not defined
    for VHT, it is allowed to avoid rejecting HE or EHT clients that may
    still send a VHT opmode notification.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=ededba317ddeca8b3f08
    Fixes: 751e7489c1d7 ("wifi: mac80211: expose ieee80211_chan_width_to_rx_bw() to drivers")
    Tested-by: [email protected]
    Signed-off-by: Moon Hee Lee <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: Assume __mt76_connac_mcu_alloc_sta_req runs in atomic context [+ + +]
Author: Lorenzo Bianconi <[email protected]>
Date:   Thu Jun 5 13:14:16 2025 +0200

    wifi: mt76: Assume __mt76_connac_mcu_alloc_sta_req runs in atomic context
    
    [ Upstream commit a0c5eac9181025b6d65ff25c203a7f10274f80c1 ]
    
    Rely on GFP_ATOMIC flag in __mt76_connac_mcu_alloc_sta_req since it can
    run in atomic context. This is a preliminary patch to fix a 'sleep while
    atomic' issue in mt7996_mac_sta_rc_work().
    
    Fixes: 0762bdd30279 ("wifi: mt76: mt7996: rework mt7996_mac_sta_rc_work to support MLO")
    Signed-off-by: Lorenzo Bianconi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: Move RCU section in mt7996_mcu_add_rate_ctrl() [+ + +]
Author: Lorenzo Bianconi <[email protected]>
Date:   Thu Jun 5 13:14:19 2025 +0200

    wifi: mt76: Move RCU section in mt7996_mcu_add_rate_ctrl()
    
    [ Upstream commit 3dd6f67c669c860b93ff533f790f23ee1cb36f25 ]
    
    Since mt76_mcu_skb_send_msg() routine can't be executed in atomic context,
    move RCU section in mt7996_mcu_add_rate_ctrl() and execute
    mt76_mcu_skb_send_msg() in non-atomic context. This is a preliminary
    patch to fix a 'sleep while atomic' issue in mt7996_mac_sta_rc_work().
    
    Fixes: 0762bdd30279 ("wifi: mt76: mt7996: rework mt7996_mac_sta_rc_work to support MLO")
    Signed-off-by: Lorenzo Bianconi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: Move RCU section in mt7996_mcu_add_rate_ctrl_fixed() [+ + +]
Author: Lorenzo Bianconi <[email protected]>
Date:   Thu Jun 5 13:14:18 2025 +0200

    wifi: mt76: Move RCU section in mt7996_mcu_add_rate_ctrl_fixed()
    
    [ Upstream commit 28d519d0d493a8cf3f8ca01f10d962c56cec1825 ]
    
    Since mt7996_mcu_set_fixed_field() can't be executed in a RCU critical
    section, move RCU section in mt7996_mcu_add_rate_ctrl_fixed() and run
    mt7996_mcu_set_fixed_field() in non-atomic context. This is a
    preliminary patch to fix a 'sleep while atomic' issue in
    mt7996_mac_sta_rc_work().
    
    Fixes: 0762bdd30279 ("wifi: mt76: mt7996: rework mt7996_mac_sta_rc_work to support MLO")
    Signed-off-by: Lorenzo Bianconi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: Move RCU section in mt7996_mcu_set_fixed_field() [+ + +]
Author: Lorenzo Bianconi <[email protected]>
Date:   Thu Jun 5 13:14:17 2025 +0200

    wifi: mt76: Move RCU section in mt7996_mcu_set_fixed_field()
    
    [ Upstream commit c772cd726eea6fe8fb81d2aeeacb18cecff73a7b ]
    
    Since mt76_mcu_skb_send_msg() routine can't be executed in atomic context,
    move RCU section in mt7996_mcu_set_fixed_field() and execute
    mt76_mcu_skb_send_msg() in non-atomic context. This is a preliminary
    patch to fix a 'sleep while atomic' issue in mt7996_mac_sta_rc_work().
    
    Fixes: 0762bdd30279 ("wifi: mt76: mt7996: rework mt7996_mac_sta_rc_work to support MLO")
    Signed-off-by: Lorenzo Bianconi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7921: prevent decap offload config before STA initialization [+ + +]
Author: Deren Wu <[email protected]>
Date:   Sun May 25 14:11:22 2025 +0800

    wifi: mt76: mt7921: prevent decap offload config before STA initialization
    
    commit 7035a082348acf1d43ffb9ff735899f8e3863f8f upstream.
    
    The decap offload configuration should only be applied after the STA has
    been successfully initialized. Attempting to configure it earlier can lead
    to corruption of the MAC configuration in the chip's hardware state.
    
    Add an early check for `msta->deflink.wcid.sta` to ensure the station peer
    is properly initialized before proceeding with decapsulation offload
    configuration.
    
    Cc: [email protected]
    Fixes: 24299fc869f7 ("mt76: mt7921: enable rx header traslation offload")
    Signed-off-by: Deren Wu <[email protected]>
    Link: https://patch.msgid.link/f23a72ba7a3c1ad38ba9e13bb54ef21d6ef44ffb.1748149855.git.deren.wu@mediatek.com
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mt76: mt7925: fix invalid array index in ssid assignment during hw scan [+ + +]
Author: Michael Lo <[email protected]>
Date:   Thu Jun 12 14:20:46 2025 +0800

    wifi: mt76: mt7925: fix invalid array index in ssid assignment during hw scan
    
    commit c701574c54121af2720648572efbfe77564652d1 upstream.
    
    Update the destination index to use 'n_ssids', which is incremented only
    when a valid SSID is present. Previously, both mt76_connac_mcu_hw_scan()
    and mt7925_mcu_hw_scan() used the loop index 'i' for the destination
    array, potentially leaving gaps if any source SSIDs had zero length.
    
    Cc: [email protected]
    Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
    Signed-off-by: Michael Lo <[email protected]>
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mt76: mt7925: Fix null-ptr-deref in mt7925_thermal_init() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Wed Jun 25 20:49:01 2025 +0800

    wifi: mt76: mt7925: Fix null-ptr-deref in mt7925_thermal_init()
    
    [ Upstream commit 03ee8f73801a8f46d83dfc2bf73fb9ffa5a21602 ]
    
    devm_kasprintf() returns NULL on error. Currently, mt7925_thermal_init()
    does not check for this case, which results in a NULL pointer
    dereference.
    
    Add NULL check after devm_kasprintf() to prevent this issue.
    
    Fixes: 396e41a74a88 ("wifi: mt76: mt7925: support temperature sensor")
    Signed-off-by: Henry Martin <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7925: fix the wrong config for tx interrupt [+ + +]
Author: Ming Yen Hsieh <[email protected]>
Date:   Thu Jun 12 14:09:31 2025 +0800

    wifi: mt76: mt7925: fix the wrong config for tx interrupt
    
    commit d20de55332e92f9e614c34783c00bb6ce2fec067 upstream.
    
    MT_INT_TX_DONE_MCU_WM may cause tx interrupt to be mishandled
    during a reset failure, leading to the reset process failing.
    By using MT_INT_TX_DONE_MCU instead of MT_INT_TX_DONE_MCU_WM,
    the handling of tx interrupt is improved.
    
    Cc: [email protected]
    Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mt76: mt7925: prevent NULL pointer dereference in mt7925_sta_set_decap_offload() [+ + +]
Author: Deren Wu <[email protected]>
Date:   Sun May 25 14:11:21 2025 +0800

    wifi: mt76: mt7925: prevent NULL pointer dereference in mt7925_sta_set_decap_offload()
    
    commit 35ad47c0b3da04b00b19a8b9ed5632e2f2520472 upstream.
    
    Add a NULL check for msta->vif before accessing its members to prevent
    a kernel panic in AP mode deployment. This also fix the issue reported
    in [1].
    
    The crash occurs when this function is triggered before the station is
    fully initialized. The call trace shows a page fault at
    mt7925_sta_set_decap_offload() due to accessing resources when msta->vif
    is NULL.
    
    Fix this by adding an early return if msta->vif is NULL and also check
    wcid.sta is ready. This ensures we only proceed with decap offload
    configuration when the station's state is properly initialized.
    
    [14739.655703] Unable to handle kernel paging request at virtual address ffffffffffffffa0
    [14739.811820] CPU: 0 UID: 0 PID: 895854 Comm: hostapd Tainted: G
    [14739.821394] Tainted: [C]=CRAP, [O]=OOT_MODULE
    [14739.825746] Hardware name: Raspberry Pi 4 Model B Rev 1.1 (DT)
    [14739.831577] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [14739.838538] pc : mt7925_sta_set_decap_offload+0xc0/0x1b8 [mt7925_common]
    [14739.845271] lr : mt7925_sta_set_decap_offload+0x58/0x1b8 [mt7925_common]
    [14739.851985] sp : ffffffc085efb500
    [14739.855295] x29: ffffffc085efb500 x28: 0000000000000000 x27: ffffff807803a158
    [14739.862436] x26: ffffff8041ececb8 x25: 0000000000000001 x24: 0000000000000001
    [14739.869577] x23: 0000000000000001 x22: 0000000000000008 x21: ffffff8041ecea88
    [14739.876715] x20: ffffff8041c19ca0 x19: ffffff8078031fe0 x18: 0000000000000000
    [14739.883853] x17: 0000000000000000 x16: ffffffe2aeac1110 x15: 000000559da48080
    [14739.890991] x14: 0000000000000001 x13: 0000000000000000 x12: 0000000000000000
    [14739.898130] x11: 0a10020001008e88 x10: 0000000000001a50 x9 : ffffffe26457bfa0
    [14739.905269] x8 : ffffff8042013bb0 x7 : ffffff807fb6cbf8 x6 : dead000000000100
    [14739.912407] x5 : dead000000000122 x4 : ffffff80780326c8 x3 : 0000000000000000
    [14739.919546] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffffff8041ececb8
    [14739.926686] Call trace:
    [14739.929130]  mt7925_sta_set_decap_offload+0xc0/0x1b8 [mt7925_common]
    [14739.935505]  ieee80211_check_fast_rx+0x19c/0x510 [mac80211]
    [14739.941344]  _sta_info_move_state+0xe4/0x510 [mac80211]
    [14739.946860]  sta_info_move_state+0x1c/0x30 [mac80211]
    [14739.952116]  sta_apply_auth_flags.constprop.0+0x90/0x1b0 [mac80211]
    [14739.958708]  sta_apply_parameters+0x234/0x5e0 [mac80211]
    [14739.964332]  ieee80211_add_station+0xdc/0x190 [mac80211]
    [14739.969950]  nl80211_new_station+0x46c/0x670 [cfg80211]
    [14739.975516]  genl_family_rcv_msg_doit+0xdc/0x150
    [14739.980158]  genl_rcv_msg+0x218/0x298
    [14739.983830]  netlink_rcv_skb+0x64/0x138
    [14739.987670]  genl_rcv+0x40/0x60
    [14739.990816]  netlink_unicast+0x314/0x380
    [14739.994742]  netlink_sendmsg+0x198/0x3f0
    [14739.998664]  __sock_sendmsg+0x64/0xc0
    [14740.002324]  ____sys_sendmsg+0x260/0x298
    [14740.006242]  ___sys_sendmsg+0xb4/0x110
    
    Cc: [email protected]
    Link: https://github.com/morrownr/USB-WiFi/issues/603 [1]
    Fixes: b859ad65309a ("wifi: mt76: mt7925: add link handling in mt7925_sta_set_decap_offload")
    Signed-off-by: Deren Wu <[email protected]>
    Link: https://patch.msgid.link/35aedbffa050e98939264300407a52ba4e236d52.1748149855.git.deren.wu@mediatek.com
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mt76: Remove RCU section in mt7996_mac_sta_rc_work() [+ + +]
Author: Lorenzo Bianconi <[email protected]>
Date:   Thu Jun 5 13:14:20 2025 +0200

    wifi: mt76: Remove RCU section in mt7996_mac_sta_rc_work()
    
    [ Upstream commit 71532576f41e5b0ec967a82ed49d5dfb1027ccdb ]
    
    Since mt7996_mcu_add_rate_ctrl() and mt7996_mcu_set_fixed_field() can't
    run in atomic context, move RCU critical section in
    mt7996_mcu_add_rate_ctrl() and mt7996_mcu_set_fixed_field(). This patch
    fixes a 'sleep while atomic' issue in mt7996_mac_sta_rc_work().
    
    Fixes: 0762bdd30279 ("wifi: mt76: mt7996: rework mt7996_mac_sta_rc_work to support MLO")
    Signed-off-by: Lorenzo Bianconi <[email protected]>
    Tested-by: Ben Greear <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mwifiex: discard erroneous disassoc frames on STA interface [+ + +]
Author: Vitor Soares <[email protected]>
Date:   Tue Jul 1 15:26:43 2025 +0100

    wifi: mwifiex: discard erroneous disassoc frames on STA interface
    
    commit 3b602ddc0df723992721b0d286c90c9bdd755b34 upstream.
    
    When operating in concurrent STA/AP mode with host MLME enabled,
    the firmware incorrectly sends disassociation frames to the STA
    interface when clients disconnect from the AP interface.
    This causes kernel warnings as the STA interface processes
    disconnect events that don't apply to it:
    
    [ 1303.240540] WARNING: CPU: 0 PID: 513 at net/wireless/mlme.c:141 cfg80211_process_disassoc+0x78/0xec [cfg80211]
    [ 1303.250861] Modules linked in: 8021q garp stp mrp llc rfcomm bnep btnxpuart nls_iso8859_1 nls_cp437 onboard_us
    [ 1303.327651] CPU: 0 UID: 0 PID: 513 Comm: kworker/u9:2 Not tainted 6.16.0-rc1+ #3 PREEMPT
    [ 1303.335937] Hardware name: Toradex Verdin AM62 WB on Verdin Development Board (DT)
    [ 1303.343588] Workqueue: MWIFIEX_RX_WORK_QUEUE mwifiex_rx_work_queue [mwifiex]
    [ 1303.350856] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 1303.357904] pc : cfg80211_process_disassoc+0x78/0xec [cfg80211]
    [ 1303.364065] lr : cfg80211_process_disassoc+0x70/0xec [cfg80211]
    [ 1303.370221] sp : ffff800083053be0
    [ 1303.373590] x29: ffff800083053be0 x28: 0000000000000000 x27: 0000000000000000
    [ 1303.380855] x26: 0000000000000000 x25: 00000000ffffffff x24: ffff000002c5b8ae
    [ 1303.388120] x23: ffff000002c5b884 x22: 0000000000000001 x21: 0000000000000008
    [ 1303.395382] x20: ffff000002c5b8ae x19: ffff0000064dd408 x18: 0000000000000006
    [ 1303.402646] x17: 3a36333a61623a30 x16: 32206d6f72662063 x15: ffff800080bfe048
    [ 1303.409910] x14: ffff000003625300 x13: 0000000000000001 x12: 0000000000000000
    [ 1303.417173] x11: 0000000000000002 x10: ffff000003958600 x9 : ffff000003625300
    [ 1303.424434] x8 : ffff00003fd9ef40 x7 : ffff0000039fc280 x6 : 0000000000000002
    [ 1303.431695] x5 : ffff0000038976d4 x4 : 0000000000000000 x3 : 0000000000003186
    [ 1303.438956] x2 : 000000004836ba20 x1 : 0000000000006986 x0 : 00000000d00479de
    [ 1303.446221] Call trace:
    [ 1303.448722]  cfg80211_process_disassoc+0x78/0xec [cfg80211] (P)
    [ 1303.454894]  cfg80211_rx_mlme_mgmt+0x64/0xf8 [cfg80211]
    [ 1303.460362]  mwifiex_process_mgmt_packet+0x1ec/0x460 [mwifiex]
    [ 1303.466380]  mwifiex_process_sta_rx_packet+0x1bc/0x2a0 [mwifiex]
    [ 1303.472573]  mwifiex_handle_rx_packet+0xb4/0x13c [mwifiex]
    [ 1303.478243]  mwifiex_rx_work_queue+0x158/0x198 [mwifiex]
    [ 1303.483734]  process_one_work+0x14c/0x28c
    [ 1303.487845]  worker_thread+0x2cc/0x3d4
    [ 1303.491680]  kthread+0x12c/0x208
    [ 1303.495014]  ret_from_fork+0x10/0x20
    
    Add validation in the STA receive path to verify that disassoc/deauth
    frames originate from the connected AP. Frames that fail this check
    are discarded early, preventing them from reaching the MLME layer and
    triggering WARN_ON().
    
    This filtering logic is similar with that used in the
    ieee80211_rx_mgmt_disassoc() function in mac80211, which drops
    disassoc frames that don't match the current BSSID
    (!ether_addr_equal(mgmt->bssid, sdata->vif.cfg.ap_addr)), ensuring
    only relevant frames are processed.
    
    Tested on:
    - 8997 with FW 16.68.1.p197
    
    Fixes: 36995892c271 ("wifi: mwifiex: add host mlme for client mode")
    Cc: [email protected]
    Signed-off-by: Vitor Soares <[email protected]>
    Reviewed-by: Jeff Chen <[email protected]>
    Reviewed-by: Francesco Dolcini <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: prevent A-MSDU attacks in mesh networks [+ + +]
Author: Mathy Vanhoef <[email protected]>
Date:   Mon Jun 16 02:46:35 2025 +0200

    wifi: prevent A-MSDU attacks in mesh networks
    
    commit 737bb912ebbe4571195c56eba557c4d7315b26fb upstream.
    
    This patch is a mitigation to prevent the A-MSDU spoofing vulnerability
    for mesh networks. The initial update to the IEEE 802.11 standard, in
    response to the FragAttacks, missed this case (CVE-2025-27558). It can
    be considered a variant of CVE-2020-24588 but for mesh networks.
    
    This patch tries to detect if a standard MSDU was turned into an A-MSDU
    by an adversary. This is done by parsing a received A-MSDU as a standard
    MSDU, calculating the length of the Mesh Control header, and seeing if
    the 6 bytes after this header equal the start of an rfc1042 header. If
    equal, this is a strong indication of an ongoing attack attempt.
    
    This defense was tested with mac80211_hwsim against a mesh network that
    uses an empty Mesh Address Extension field, i.e., when four addresses
    are used, and when using a 12-byte Mesh Address Extension field, i.e.,
    when six addresses are used. Functionality of normal MSDUs and A-MSDUs
    was also tested, and confirmed working, when using both an empty and
    12-byte Mesh Address Extension field.
    
    It was also tested with mac80211_hwsim that A-MSDU attacks in non-mesh
    networks keep being detected and prevented.
    
    Note that the vulnerability being patched, and the defense being
    implemented, was also discussed in the following paper and in the
    following IEEE 802.11 presentation:
    
    https://papers.mathyvanhoef.com/wisec2025.pdf
    https://mentor.ieee.org/802.11/dcn/25/11-25-0949-00-000m-a-msdu-mesh-spoof-protection.docx
    
    Cc: [email protected]
    Signed-off-by: Mathy Vanhoef <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: rt2x00: fix remove callback type mismatch [+ + +]
Author: Felix Fietkau <[email protected]>
Date:   Sun Jul 6 11:20:53 2025 +0200

    wifi: rt2x00: fix remove callback type mismatch
    
    [ Upstream commit 2ce6ad9262256dd345cb104ba0ac6cf4aeed25a3 ]
    
    The function is used as remove callback for a platform driver.
    It was missed during the conversion from int to void
    
    Fixes: 0edb555a65d1 ("platform: Make platform_driver::remove() return void")
    Signed-off-by: Felix Fietkau <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev() [+ + +]
Author: Daniil Dulov <[email protected]>
Date:   Thu Jun 26 14:46:19 2025 +0300

    wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev()
    
    [ Upstream commit 74b1ec9f5d627d2bdd5e5b6f3f81c23317657023 ]
    
    There is a potential NULL pointer dereference in zd_mac_tx_to_dev(). For
    example, the following is possible:
    
            T0                                      T1
    zd_mac_tx_to_dev()
      /* len == skb_queue_len(q) */
      while (len > ZD_MAC_MAX_ACK_WAITERS) {
    
                                              filter_ack()
                                                spin_lock_irqsave(&q->lock, flags);
                                                /* position == skb_queue_len(q) */
                                                for (i=1; i<position; i++)
                                                  skb = __skb_dequeue(q)
    
                                                if (mac->type == NL80211_IFTYPE_AP)
                                                  skb = __skb_dequeue(q);
                                                spin_unlock_irqrestore(&q->lock, flags);
    
        skb_dequeue() -> NULL
    
    Since there is a small gap between checking skb queue length and skb being
    unconditionally dequeued in zd_mac_tx_to_dev(), skb_dequeue() can return NULL.
    Then the pointer is passed to zd_mac_tx_status() where it is dereferenced.
    
    In order to avoid potential NULL pointer dereference due to situations like
    above, check if skb is not NULL before passing it to zd_mac_tx_status().
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 459c51ad6e1f ("zd1211rw: port to mac80211")
    Signed-off-by: Daniil Dulov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/CPU/AMD: Disable INVLPGB on Zen2 [+ + +]
Author: Mikhail Paulyshka <[email protected]>
Date:   Tue Jul 8 16:39:10 2025 +0200

    x86/CPU/AMD: Disable INVLPGB on Zen2
    
    commit a74bb5f202dabddfea96abc1328fcedae8aa140a upstream.
    
    AMD Cyan Skillfish (Family 17h, Model 47h, Stepping 0h) has an issue
    that causes system oopses and panics when performing TLB flush using
    INVLPGB.
    
    However, the problem is that that machine has misconfigured CPUID and
    should not report the INVLPGB bit in the first place. So zap the
    kernel's representation of the flag so that nothing gets confused.
    
      [ bp: Massage. ]
    
    Fixes: 767ae437a32d ("x86/mm: Add INVLPGB feature and Kconfig entry")
    Signed-off-by: Mikhail Paulyshka <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/mce/amd: Add default names for MCA banks and blocks [+ + +]
Author: Yazen Ghannam <[email protected]>
Date:   Tue Jun 24 14:15:58 2025 +0000

    x86/mce/amd: Add default names for MCA banks and blocks
    
    commit d66e1e90b16055d2f0ee76e5384e3f119c3c2773 upstream.
    
    Ensure that sysfs init doesn't fail for new/unrecognized bank types or if
    a bank has additional blocks available.
    
    Most MCA banks have a single thresholding block, so the block takes the same
    name as the bank.
    
    Unified Memory Controllers (UMCs) are a special case where there are two
    blocks and each has a unique name.
    
    However, the microarchitecture allows for five blocks. Any new MCA bank types
    with more than one block will be missing names for the extra blocks. The MCE
    sysfs will fail to initialize in this case.
    
    Fixes: 87a6d4091bd7 ("x86/mce/AMD: Update sysfs bank names for SMCA systems")
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

x86/mce/amd: Fix threshold limit reset [+ + +]
Author: Yazen Ghannam <[email protected]>
Date:   Tue Jun 24 14:15:59 2025 +0000

    x86/mce/amd: Fix threshold limit reset
    
    commit 5f6e3b720694ad771911f637a51930f511427ce1 upstream.
    
    The MCA threshold limit must be reset after servicing the interrupt.
    
    Currently, the restart function doesn't have an explicit check for this.  It
    makes some assumptions based on the current limit and what's in the registers.
    These assumptions don't always hold, so the limit won't be reset in some
    cases.
    
    Make the reset condition explicit. Either an interrupt/overflow has occurred
    or the bank is being initialized.
    
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/mce: Don't remove sysfs if thresholding sysfs init fails [+ + +]
Author: Yazen Ghannam <[email protected]>
Date:   Tue Jun 24 14:15:56 2025 +0000

    x86/mce: Don't remove sysfs if thresholding sysfs init fails
    
    commit 4c113a5b28bfd589e2010b5fc8867578b0135ed7 upstream.
    
    Currently, the MCE subsystem sysfs interface will be removed if the
    thresholding sysfs interface fails to be created. A common failure is due to
    new MCA bank types that are not recognized and don't have a short name set.
    
    The MCA thresholding feature is optional and should not break the common MCE
    sysfs interface. Also, new MCA bank types are occasionally introduced, and
    updates will be needed to recognize them. But likewise, this should not break
    the common sysfs interface.
    
    Keep the MCE sysfs interface regardless of the status of the thresholding
    sysfs interface.
    
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Qiuxu Zhuo <[email protected]>
    Reviewed-by: Tony Luck <[email protected]>
    Tested-by: Tony Luck <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

x86/mce: Ensure user polling settings are honored when restarting timer [+ + +]
Author: Yazen Ghannam <[email protected]>
Date:   Tue Jun 24 14:15:57 2025 +0000

    x86/mce: Ensure user polling settings are honored when restarting timer
    
    commit 00c092de6f28ebd32208aef83b02d61af2229b60 upstream.
    
    Users can disable MCA polling by setting the "ignore_ce" parameter or by
    setting "check_interval=0". This tells the kernel to *not* start the MCE
    timer on a CPU.
    
    If the user did not disable CMCI, then storms can occur. When these
    happen, the MCE timer will be started with a fixed interval. After the
    storm subsides, the timer's next interval is set to check_interval.
    
    This disregards the user's input through "ignore_ce" and
    "check_interval". Furthermore, if "check_interval=0", then the new timer
    will run faster than expected.
    
    Create a new helper to check these conditions and use it when a CMCI
    storm ends.
    
      [ bp: Massage. ]
    
    Fixes: 7eae17c4add5 ("x86/mce: Add per-bank CMCI storm mitigation")
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

x86/mce: Make sure CMCI banks are cleared during shutdown on Intel [+ + +]
Author: JP Kobryn <[email protected]>
Date:   Fri Jun 27 10:49:35 2025 -0700

    x86/mce: Make sure CMCI banks are cleared during shutdown on Intel
    
    commit 30ad231a5029bfa16e46ce868497b1a5cdd3c24d upstream.
    
    CMCI banks are not cleared during shutdown on Intel CPUs. As a side effect,
    when a kexec is performed, CPUs coming back online are unable to
    rediscover/claim these occupied banks which breaks MCE reporting.
    
    Clear the CPU ownership during shutdown via cmci_clear() so the banks can
    be reclaimed and MCE reporting will become functional once more.
    
      [ bp: Massage commit message. ]
    
    Reported-by: Aijay Adams <[email protected]>
    Signed-off-by: JP Kobryn <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Tony Luck <[email protected]>
    Reviewed-by: Qiuxu Zhuo <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/mm: Disable hugetlb page table sharing on 32-bit [+ + +]
Author: Jann Horn <[email protected]>
Date:   Wed Jul 2 10:32:04 2025 +0200

    x86/mm: Disable hugetlb page table sharing on 32-bit
    
    commit 76303ee8d54bff6d9a6d55997acd88a6c2ba63cf upstream.
    
    Only select ARCH_WANT_HUGE_PMD_SHARE on 64-bit x86.
    Page table sharing requires at least three levels because it involves
    shared references to PMD tables; 32-bit x86 has either two-level paging
    (without PAE) or three-level paging (with PAE), but even with
    three-level paging, having a dedicated PGD entry for hugetlb is only
    barely possible (because the PGD only has four entries), and it seems
    unlikely anyone's actually using PMD sharing on 32-bit.
    
    Having ARCH_WANT_HUGE_PMD_SHARE enabled on non-PAE 32-bit X86 (which
    has 2-level paging) became particularly problematic after commit
    59d9094df3d7 ("mm: hugetlb: independent PMD page table shared count"),
    since that changes `struct ptdesc` such that the `pt_mm` (for PGDs) and
    the `pt_share_count` (for PMDs) share the same union storage - and with
    2-level paging, PMDs are PGDs.
    
    (For comparison, arm64 also gates ARCH_WANT_HUGE_PMD_SHARE on the
    configuration of page tables such that it is never enabled with 2-level
    paging.)
    
    Closes: https://lore.kernel.org/r/[email protected]
    Fixes: cfe28c5d63d8 ("x86: mm: Remove x86 version of huge_pmd_share.")
    Reported-by: Vitaly Chikunov <[email protected]>
    Suggested-by: Dave Hansen <[email protected]>
    Signed-off-by: Jann Horn <[email protected]>
    Signed-off-by: Dave Hansen <[email protected]>
    Acked-by: Oscar Salvador <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Tested-by: Vitaly Chikunov <[email protected]>
    Cc:[email protected]
    Link: https://lore.kernel.org/all/20250702-x86-2level-hugetlb-v2-1-1a98096edf92%40google.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/rdrand: Disable RDSEED on AMD Cyan Skillfish [+ + +]
Author: Mikhail Paulyshka <[email protected]>
Date:   Sat May 24 17:53:19 2025 +0300

    x86/rdrand: Disable RDSEED on AMD Cyan Skillfish
    
    commit 5b937a1ed64ebeba8876e398110a5790ad77407c upstream.
    
    AMD Cyan Skillfish (Family 17h, Model 47h, Stepping 0h) has an error that
    causes RDSEED to always return 0xffffffff, while RDRAND works correctly.
    
    Mask the RDSEED cap for this CPU so that both /proc/cpuinfo and direct CPUID
    read report RDSEED as unavailable.
    
      [ bp: Move to amd.c, massage. ]
    
    Signed-off-by: Mikhail Paulyshka <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/sev: Use TSC_FACTOR for Secure TSC frequency calculation [+ + +]
Author: Nikunj A Dadhania <[email protected]>
Date:   Mon Jun 30 13:48:58 2025 +0530

    x86/sev: Use TSC_FACTOR for Secure TSC frequency calculation
    
    commit 52e1a03e6cf61ae165f59f41c44394a653a0a788 upstream.
    
    When using Secure TSC, the GUEST_TSC_FREQ MSR reports a frequency based on
    the nominal P0 frequency, which deviates slightly (typically ~0.2%) from
    the actual mean TSC frequency due to clocking parameters.
    
    Over extended VM uptime, this discrepancy accumulates, causing clock skew
    between the hypervisor and a SEV-SNP VM, leading to early timer interrupts as
    perceived by the guest.
    
    The guest kernel relies on the reported nominal frequency for TSC-based
    timekeeping, while the actual frequency set during SNP_LAUNCH_START may
    differ. This mismatch results in inaccurate time calculations, causing the
    guest to perceive hrtimers as firing earlier than expected.
    
    Utilize the TSC_FACTOR from the SEV firmware's secrets page (see "Secrets
    Page Format" in the SNP Firmware ABI Specification) to calculate the mean
    TSC frequency, ensuring accurate timekeeping and mitigating clock skew in
    SEV-SNP VMs.
    
    Use early_ioremap_encrypted() to map the secrets page as
    ioremap_encrypted() uses kmalloc() which is not available during early TSC
    initialization and causes a panic.
    
      [ bp: Drop the silly dummy var:
        https://lore.kernel.org/r/20250630192726.GBaGLlHl84xIopx4Pt@fat_crate.local ]
    
    Fixes: 73bbf3b0fbba ("x86/tsc: Init the TSC for Secure TSC guests")
    Signed-off-by: Nikunj A Dadhania <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>