Changelog in Linux kernel 5.15.185

 
__legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock [+ + +]
Author: Al Viro <[email protected]>
Date:   Sun Apr 27 15:41:51 2025 -0400

    __legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock
    
    [ Upstream commit 250cf3693060a5f803c5f1ddc082bb06b16112a9 ]
    
    ... or we risk stealing final mntput from sync umount - raising mnt_count
    after umount(2) has verified that victim is not busy, but before it
    has set MNT_SYNC_UMOUNT; in that case __legitimize_mnt() doesn't see
    that it's safe to quietly undo mnt_count increment and leaves dropping
    the reference to caller, where it'll be a full-blown mntput().
    
    Check under mount_lock is needed; leaving the current one done before
    taking that makes no sense - it's nowhere near common enough to bother
    with.
    
    Reviewed-by: Christian Brauner <[email protected]>
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ACPI: HED: Always initialize before evged [+ + +]
Author: Xiaofei Tan <[email protected]>
Date:   Wed Feb 12 14:34:08 2025 +0800

    ACPI: HED: Always initialize before evged
    
    [ Upstream commit cccf6ee090c8c133072d5d5b52ae25f3bc907a16 ]
    
    When the HED driver is built-in, it initializes after evged because they
    both are at the same initcall level, so the initialization ordering
    depends on the Makefile order.  However, this prevents RAS records
    coming in between the evged driver initialization and the HED driver
    initialization from being handled.
    
    If the number of such RAS records is above the APEI HEST error source
    number, the HEST resources may be exhausted, and that may affect
    subsequent RAS error reporting.
    
    To fix this issue, change the initcall level of HED to subsys_initcall
    and prevent the driver from being built as a module by changing ACPI_HED
    in Kconfig from "tristate" to "bool".
    
    Signed-off-by: Xiaofei Tan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA: hda/realtek: Add quirk for HP Spectre x360 15-df1xxx [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Sun Apr 27 10:10:34 2025 +0200

    ALSA: hda/realtek: Add quirk for HP Spectre x360 15-df1xxx
    
    [ Upstream commit be0c40da888840fe91b45474cb70779e6cbaf7ca ]
    
    HP Spectre x360 15-df1xxx with SSID 13c:863e requires similar
    workarounds that were applied to another HP Spectre x360 models;
    it has a mute LED only, no micmute LEDs, and needs the speaker GPIO
    seup.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220054
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: pcm: Fix race of buffer access at PCM OSS layer [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Fri May 16 10:08:16 2025 +0200

    ALSA: pcm: Fix race of buffer access at PCM OSS layer
    
    commit 93a81ca0657758b607c3f4ba889ae806be9beb73 upstream.
    
    The PCM OSS layer tries to clear the buffer with the silence data at
    initialization (or reconfiguration) of a stream with the explicit call
    of snd_pcm_format_set_silence() with runtime->dma_area.  But this may
    lead to a UAF because the accessed runtime->dma_area might be freed
    concurrently, as it's performed outside the PCM ops.
    
    For avoiding it, move the code into the PCM core and perform it inside
    the buffer access lock, so that it won't be changed during the
    operation.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/[email protected]
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
arch/powerpc/perf: Check the instruction type before creating sample with perf_mem_data_src [+ + +]
Author: Athira Rajeev <[email protected]>
Date:   Tue Jan 21 18:46:20 2025 +0530

    arch/powerpc/perf: Check the instruction type before creating sample with perf_mem_data_src
    
    [ Upstream commit 2ffb26afa64261139e608bf087a0c1fe24d76d4d ]
    
    perf mem report aborts as below sometimes (during some corner
    case) in powerpc:
    
       # ./perf mem report 1>out
       *** stack smashing detected ***: terminated
       Aborted (core dumped)
    
    The backtrace is as below:
       __pthread_kill_implementation ()
       raise ()
       abort ()
       __libc_message
       __fortify_fail
       __stack_chk_fail
       hist_entry.lvl_snprintf
       __sort__hpp_entry
       __hist_entry__snprintf
       hists.fprintf
       cmd_report
       cmd_mem
    
    Snippet of code which triggers the issue
    from tools/perf/util/sort.c
    
       static int hist_entry__lvl_snprintf(struct hist_entry *he, char *bf,
                                        size_t size, unsigned int width)
       {
            char out[64];
    
            perf_mem__lvl_scnprintf(out, sizeof(out), he->mem_info);
            return repsep_snprintf(bf, size, "%-*s", width, out);
       }
    
    The value of "out" is filled from perf_mem_data_src value.
    Debugging this further showed that for some corner cases, the
    value of "data_src" was pointing to wrong value. This resulted
    in bigger size of string and causing stack check fail.
    
    The perf mem data source values are captured in the sample via
    isa207_get_mem_data_src function. The initial check is to fetch
    the type of sampled instruction. If the type of instruction is
    not valid (not a load/store instruction), the function returns.
    
    Since 'commit e16fd7f2cb1a ("perf: Use sample_flags for data_src")',
    data_src field is not initialized by the perf_sample_data_init()
    function. If the PMU driver doesn't set the data_src value to zero if
    type is not valid, this will result in uninitailised value for data_src.
    The uninitailised value of data_src resulted in stack check fail
    followed by abort for "perf mem report".
    
    When requesting for data source information in the sample, the
    instruction type is expected to be load or store instruction.
    In ISA v3.0, due to hardware limitation, there are corner cases
    where the instruction type other than load or store is observed.
    In ISA v3.0 and before values "0" and "7" are considered reserved.
    In ISA v3.1, value "7" has been used to indicate "larx/stcx".
    Drop the sample if instruction type has reserved values for this
    field with a ISA version check. Initialize data_src to zero in
    isa207_get_mem_data_src if the instruction type is not load/store.
    
    Reported-by: Disha Goel <[email protected]>
    Signed-off-by: Athira Rajeev <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64/mm: Check PUD_TYPE_TABLE in pud_bad() [+ + +]
Author: Ryan Roberts <[email protected]>
Date:   Fri Feb 21 10:12:25 2025 +0530

    arm64/mm: Check PUD_TYPE_TABLE in pud_bad()
    
    [ Upstream commit bfb1d2b9021c21891427acc86eb848ccedeb274e ]
    
    pud_bad() is currently defined in terms of pud_table(). Although for some
    configs, pud_table() is hard-coded to true i.e. when using 64K base pages
    or when page table levels are less than 3.
    
    pud_bad() is intended to check that the pud is configured correctly. Hence
    let's open-code the same check that the full version of pud_table() uses
    into pud_bad(). Then it always performs the check regardless of the config.
    
    Cc: Will Deacon <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Ryan Roberts <[email protected]>
    Signed-off-by: Anshuman Khandual <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: dts: qcom: sm8350: Fix typo in pil_camera_mem node [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Wed May 14 04:46:51 2025 -0700

    arm64: dts: qcom: sm8350: Fix typo in pil_camera_mem node
    
    commit 295217420a44403a33c30f99d8337fe7b07eb02b upstream.
    
    There is a typo in sm8350.dts where the node label
    mmeory@85200000 should be memory@85200000.
    This patch corrects the typo for clarity and consistency.
    
    Fixes: b7e8f433a673 ("arm64: dts: qcom: Add basic devicetree support for SM8350 SoC")
    Cc: [email protected]
    Signed-off-by: Alok Tiwari <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator [+ + +]
Author: Diogo Ivo <[email protected]>
Date:   Mon Feb 24 12:17:36 2025 +0000

    arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator
    
    [ Upstream commit f34621f31e3be81456c903287f7e4c0609829e29 ]
    
    According to the board schematics the enable pin of this regulator is
    connected to gpio line #9 of the first instance of the TCA9539
    GPIO expander, so adjust it.
    
    Signed-off-by: Diogo Ivo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: at91: pm: fix at91_suspend_finish for ZQ calibration [+ + +]
Author: Li Bin <[email protected]>
Date:   Thu Feb 27 08:51:56 2025 -0700

    ARM: at91: pm: fix at91_suspend_finish for ZQ calibration
    
    [ Upstream commit bc4722c3598d0e2c2dbf9609a3d3198993093e2b ]
    
    For sama7g5 and sama7d65 backup mode, we encountered a "ZQ calibrate error"
    during recalibrating the impedance in BootStrap.
    We found that the impedance value saved in at91_suspend_finish() before
    the DDR entered self-refresh mode did not match the resistor values. The
    ZDATA field in the DDR3PHY_ZQ0CR0 register uses a modified gray code to
    select the different impedance setting.
    But these gray code are incorrect, a workaournd from design team fixed the
    bug in the calibration logic. The ZDATA contains four independent impedance
    elements, but the algorithm combined the four elements into one. The elements
    were fixed using properly shifted offsets.
    
    Signed-off-by: Li Bin <[email protected]>
    [[email protected]: fix indentation and combine 2 patches]
    Signed-off-by: Nicolas Ferre <[email protected]>
    Tested-by: Ryan Wanner <[email protected]>
    Tested-by: Durai Manickam KR <[email protected]>
    Tested-by: Andrei Simion <[email protected]>
    Signed-off-by: Ryan Wanner <[email protected]>
    Link: https://lore.kernel.org/r/28b33f9bcd0ca60ceba032969fe054d38f2b9577.1740671156.git.Ryan.Wanner@microchip.com
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114 [+ + +]
Author: Svyatoslav Ryhel <[email protected]>
Date:   Wed Feb 26 12:56:11 2025 +0200

    ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114
    
    [ Upstream commit 2b3db788f2f614b875b257cdb079adadedc060f3 ]
    
    PLLD is usually used as parent clock for internal video devices, like
    DSI for example, while PLLD2 is used as parent for HDMI.
    
    Signed-off-by: Svyatoslav Ryhel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: imx-card: Adjust over allocation of memory in imx_card_parse_of() [+ + +]
Author: Chenyuan Yang <[email protected]>
Date:   Sun Apr 6 16:08:54 2025 -0500

    ASoC: imx-card: Adjust over allocation of memory in imx_card_parse_of()
    
    [ Upstream commit a9a69c3b38c89d7992fb53db4abb19104b531d32 ]
    
    Incorrect types are used as sizeof() arguments in devm_kcalloc().
    It should be sizeof(dai_link_data) for link_data instead of
    sizeof(snd_soc_dai_link).
    
    This is found by our static analysis tool.
    
    Signed-off-by: Chenyuan Yang <[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: bytcr_rt5640: Add DMI quirk for Acer Aspire SW3-013 [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Sun Apr 20 10:56:59 2025 +0200

    ASoC: Intel: bytcr_rt5640: Add DMI quirk for Acer Aspire SW3-013
    
    [ Upstream commit a549b927ea3f5e50b1394209b64e6e17e31d4db8 ]
    
    Acer Aspire SW3-013 requires the very same quirk as other Acer Aspire
    model for making it working.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220011
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: mediatek: mt6359: Add stub for mt6359_accdet_enable_jack_detect [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Thu Mar 6 16:52:17 2025 -0300

    ASoC: mediatek: mt6359: Add stub for mt6359_accdet_enable_jack_detect
    
    [ Upstream commit 0116a7d84b32537a10d9bea1fd1bfc06577ef527 ]
    
    Add a stub for mt6359_accdet_enable_jack_detect() to prevent linker
    failures in the machine sound drivers calling it when
    CONFIG_SND_SOC_MT6359_ACCDET is not enabled.
    
    Suggested-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: ops: Enforce platform maximum on initial value [+ + +]
Author: Martin Povišer <[email protected]>
Date:   Sat Feb 8 00:57:22 2025 +0000

    ASoC: ops: Enforce platform maximum on initial value
    
    [ Upstream commit 783db6851c1821d8b983ffb12b99c279ff64f2ee ]
    
    Lower the volume if it is violating the platform maximum at its initial
    value (i.e. at the time of the 'snd_soc_limit_volume' call).
    
    Signed-off-by: Martin Povišer <[email protected]>
    [Cherry picked from the Asahi kernel with fixups -- broonie]
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: qcom: sm8250: explicitly set format in sm8250_be_hw_params_fixup() [+ + +]
Author: Alexey Klimov <[email protected]>
Date:   Fri Feb 28 16:14:30 2025 +0000

    ASoC: qcom: sm8250: explicitly set format in sm8250_be_hw_params_fixup()
    
    [ Upstream commit 89be3c15a58b2ccf31e969223c8ac93ca8932d81 ]
    
    Setting format to s16le is required for compressed playback on compatible
    soundcards.
    
    Cc: Srinivas Kandagatla <[email protected]>
    Signed-off-by: Alexey Klimov <[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-dai: check return value at snd_soc_dai_set_tdm_slot() [+ + +]
Author: Kuninori Morimoto <[email protected]>
Date:   Wed Feb 12 02:24:38 2025 +0000

    ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot()
    
    [ Upstream commit 7f1186a8d738661b941b298fd6d1d5725ed71428 ]
    
    snd_soc_dai_set_tdm_slot() calls .xlate_tdm_slot_mask() or
    snd_soc_xlate_tdm_slot_mask(), but didn't check its return value.
    Let's check it.
    
    This patch might break existing driver. In such case, let's makes
    each func to void instead of int.
    
    Signed-off-by: Kuninori Morimoto <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: tas2764: Power up/down amp on mute ops [+ + +]
Author: Hector Martin <[email protected]>
Date:   Sat Feb 8 01:03:24 2025 +0000

    ASoC: tas2764: Power up/down amp on mute ops
    
    [ Upstream commit 1c3b5f37409682184669457a5bdf761268eafbe5 ]
    
    The ASoC convention is that clocks are removed after codec mute, and
    power up/down is more about top level power management. For these chips,
    the "mute" state still expects a TDM clock, and yanking the clock in
    this state will trigger clock errors. So, do the full
    shutdown<->mute<->active transition on the mute operation, so the amp is
    in software shutdown by the time the clocks are removed.
    
    This fixes TDM clock errors when streams are stopped.
    
    Signed-off-by: Hector Martin <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common" [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Mon Feb 24 19:27:38 2025 +0200

    auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common"
    
    [ Upstream commit 09965a142078080fe7807bab0f6f1890cb5987a4 ]
    
    Commit 2545c1c948a6 ("auxdisplay: Move hwidth and bwidth to struct
    hd44780_common") makes charlcd_alloc() argument-less effectively dropping
    the single allocation for the struct charlcd_priv object along with
    the driver specific one. Restore that behaviour here.
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: L2CAP: Fix not checking l2cap_chan security level [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed May 7 15:00:30 2025 -0400

    Bluetooth: L2CAP: Fix not checking l2cap_chan security level
    
    [ Upstream commit 7af8479d9eb4319b4ba7b47a8c4d2c55af1c31e1 ]
    
    l2cap_check_enc_key_size shall check the security level of the
    l2cap_chan rather than the hci_conn since for incoming connection
    request that may be different as hci_conn may already been
    encrypted using a different security level.
    
    Fixes: 522e9ed157e3 ("Bluetooth: l2cap: Check encryption key size on incoming connection")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bonding: report duplicate MAC address in all situations [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Tue Feb 25 03:39:14 2025 +0000

    bonding: report duplicate MAC address in all situations
    
    [ Upstream commit 28d68d396a1cd21591e8c6d74afbde33a7ea107e ]
    
    Normally, a bond uses the MAC address of the first added slave as the bond’s
    MAC address. And the bond will set active slave’s MAC address to bond’s
    address if fail_over_mac is set to none (0) or follow (2).
    
    When the first slave is removed, the bond will still use the removed slave’s
    MAC address, which can lead to a duplicate MAC address and potentially cause
    issues with the switch. To avoid confusion, let's warn the user in all
    situations, including when fail_over_mac is set to 2 or not in active-backup
    mode.
    
    Signed-off-by: Hangbin Liu <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: fix possible endless loop in BPF map iteration [+ + +]
Author: Brandon Kammerdiener <[email protected]>
Date:   Thu Apr 24 11:32:51 2025 -0400

    bpf: fix possible endless loop in BPF map iteration
    
    [ Upstream commit 75673fda0c557ae26078177dd14d4857afbf128d ]
    
    The _safe variant used here gets the next element before running the callback,
    avoiding the endless loop condition.
    
    Signed-off-by: Brandon Kammerdiener <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Acked-by: Hou Tao <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpftool: Fix readlink usage in get_fd_type [+ + +]
Author: Viktor Malik <[email protected]>
Date:   Wed Jan 29 08:18:57 2025 +0100

    bpftool: Fix readlink usage in get_fd_type
    
    [ Upstream commit 0053f7d39d491b6138d7c526876d13885cbb65f1 ]
    
    The `readlink(path, buf, sizeof(buf))` call reads at most sizeof(buf)
    bytes and *does not* append null-terminator to buf. With respect to
    that, fix two pieces in get_fd_type:
    
    1. Change the truncation check to contain sizeof(buf) rather than
       sizeof(path).
    2. Append null-terminator to buf.
    
    Reported by Coverity.
    
    Signed-off-by: Viktor Malik <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Reviewed-by: Quentin Monnet <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bridge: netfilter: Fix forwarding of fragmented packets [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Thu May 15 11:48:48 2025 +0300

    bridge: netfilter: Fix forwarding of fragmented packets
    
    [ Upstream commit 91b6dbced0ef1d680afdd69b14fc83d50ebafaf3 ]
    
    When netfilter defrag hooks are loaded (due to the presence of conntrack
    rules, for example), fragmented packets entering the bridge will be
    defragged by the bridge's pre-routing hook (br_nf_pre_routing() ->
    ipv4_conntrack_defrag()).
    
    Later on, in the bridge's post-routing hook, the defragged packet will
    be fragmented again. If the size of the largest fragment is larger than
    what the kernel has determined as the destination MTU (using
    ip_skb_dst_mtu()), the defragged packet will be dropped.
    
    Before commit ac6627a28dbf ("net: ipv4: Consolidate ipv4_mtu and
    ip_dst_mtu_maybe_forward"), ip_skb_dst_mtu() would return dst_mtu() as
    the destination MTU. Assuming the dst entry attached to the packet is
    the bridge's fake rtable one, this would simply be the bridge's MTU (see
    fake_mtu()).
    
    However, after above mentioned commit, ip_skb_dst_mtu() ends up
    returning the route's MTU stored in the dst entry's metrics. Ideally, in
    case the dst entry is the bridge's fake rtable one, this should be the
    bridge's MTU as the bridge takes care of updating this metric when its
    MTU changes (see br_change_mtu()).
    
    Unfortunately, the last operation is a no-op given the metrics attached
    to the fake rtable entry are marked as read-only. Therefore,
    ip_skb_dst_mtu() ends up returning 1500 (the initial MTU value) and
    defragged packets are dropped during fragmentation when dealing with
    large fragments and high MTU (e.g., 9k).
    
    Fix by moving the fake rtable entry's metrics to be per-bridge (in a
    similar fashion to the fake rtable entry itself) and marking them as
    writable, thereby allowing MTU changes to be reflected.
    
    Fixes: 62fa8a846d7d ("net: Implement read-only protection and COW'ing of metrics.")
    Fixes: 33eb9873a283 ("bridge: initialize fake_rtable metrics")
    Reported-by: Venkat Venkatsubra <[email protected]>
    Closes: https://lore.kernel.org/netdev/PH0PR10MB4504888284FF4CBA648197D0ACB82@PH0PR10MB4504.namprd10.prod.outlook.com/
    Tested-by: Venkat Venkatsubra <[email protected]>
    Signed-off-by: Ido Schimmel <[email protected]>
    Acked-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: avoid linker error in btrfs_find_create_tree_block() [+ + +]
Author: Mark Harmstone <[email protected]>
Date:   Thu Mar 6 10:58:46 2025 +0000

    btrfs: avoid linker error in btrfs_find_create_tree_block()
    
    [ Upstream commit 7ef3cbf17d2734ca66c4ed8573be45f4e461e7ee ]
    
    The inline function btrfs_is_testing() is hardcoded to return 0 if
    CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set. Currently we're relying on
    the compiler optimizing out the call to alloc_test_extent_buffer() in
    btrfs_find_create_tree_block(), as it's not been defined (it's behind an
     #ifdef).
    
    Add a stub version of alloc_test_extent_buffer() to avoid linker errors
    on non-standard optimization levels. This problem was seen on GCC 14
    with -O0 and is helps to see symbols that would be otherwise optimized
    out.
    
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Mark Harmstone <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref [+ + +]
Author: Goldwyn Rodrigues <[email protected]>
Date:   Fri Apr 25 09:25:06 2025 -0400

    btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref
    
    [ Upstream commit bc7e0975093567f51be8e1bdf4aa5900a3cf0b1e ]
    
    btrfs_prelim_ref() calls the old and new reference variables in the
    incorrect order. This causes a NULL pointer dereference because oldref
    is passed as NULL to trace_btrfs_prelim_ref_insert().
    
    Note, trace_btrfs_prelim_ref_insert() is being called with newref as
    oldref (and oldref as NULL) on purpose in order to print out
    the values of newref.
    
    To reproduce:
    echo 1 > /sys/kernel/debug/tracing/events/btrfs/btrfs_prelim_ref_insert/enable
    
    Perform some writeback operations.
    
    Backtrace:
    BUG: kernel NULL pointer dereference, address: 0000000000000018
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 115949067 P4D 115949067 PUD 11594a067 PMD 0
     Oops: Oops: 0000 [#1] SMP NOPTI
     CPU: 1 UID: 0 PID: 1188 Comm: fsstress Not tainted 6.15.0-rc2-tester+ #47 PREEMPT(voluntary)  7ca2cef72d5e9c600f0c7718adb6462de8149622
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-2-gc13ff2cd-prebuilt.qemu.org 04/01/2014
     RIP: 0010:trace_event_raw_event_btrfs__prelim_ref+0x72/0x130
     Code: e8 43 81 9f ff 48 85 c0 74 78 4d 85 e4 0f 84 8f 00 00 00 49 8b 94 24 c0 06 00 00 48 8b 0a 48 89 48 08 48 8b 52 08 48 89 50 10 <49> 8b 55 18 48 89 50 18 49 8b 55 20 48 89 50 20 41 0f b6 55 28 88
     RSP: 0018:ffffce44820077a0 EFLAGS: 00010286
     RAX: ffff8c6b403f9014 RBX: ffff8c6b55825730 RCX: 304994edf9cf506b
     RDX: d8b11eb7f0fdb699 RSI: ffff8c6b403f9010 RDI: ffff8c6b403f9010
     RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000010
     R10: 00000000ffffffff R11: 0000000000000000 R12: ffff8c6b4e8fb000
     R13: 0000000000000000 R14: ffffce44820077a8 R15: ffff8c6b4abd1540
     FS:  00007f4dc6813740(0000) GS:ffff8c6c1d378000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000018 CR3: 000000010eb42000 CR4: 0000000000750ef0
     PKRU: 55555554
     Call Trace:
      <TASK>
      prelim_ref_insert+0x1c1/0x270
      find_parent_nodes+0x12a6/0x1ee0
      ? __entry_text_end+0x101f06/0x101f09
      ? srso_alias_return_thunk+0x5/0xfbef5
      ? srso_alias_return_thunk+0x5/0xfbef5
      ? srso_alias_return_thunk+0x5/0xfbef5
      ? srso_alias_return_thunk+0x5/0xfbef5
      btrfs_is_data_extent_shared+0x167/0x640
      ? fiemap_process_hole+0xd0/0x2c0
      extent_fiemap+0xa5c/0xbc0
      ? __entry_text_end+0x101f05/0x101f09
      btrfs_fiemap+0x7e/0xd0
      do_vfs_ioctl+0x425/0x9d0
      __x64_sys_ioctl+0x75/0xc0
    
    Signed-off-by: Goldwyn Rodrigues <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: get zone unusable bytes while holding lock at btrfs_reclaim_bgs_work() [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Fri Feb 21 16:12:15 2025 +0000

    btrfs: get zone unusable bytes while holding lock at btrfs_reclaim_bgs_work()
    
    [ Upstream commit 1283b8c125a83bf7a7dbe90c33d3472b6d7bf612 ]
    
    At btrfs_reclaim_bgs_work(), we are grabbing a block group's zone unusable
    bytes while not under the protection of the block group's spinlock, so
    this can trigger race reports from KCSAN (or similar tools) since that
    field is typically updated while holding the lock, such as at
    __btrfs_add_free_space_zoned() for example.
    
    Fix this by grabbing the zone unusable bytes while we are still in the
    critical section holding the block group's spinlock, which is right above
    where we are currently grabbing it.
    
    Reviewed-by: Johannes Thumshirn <[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]>

btrfs: make btrfs_discard_workfn() block_group ref explicit [+ + +]
Author: Boris Burkov <[email protected]>
Date:   Mon Mar 3 15:01:05 2025 -0800

    btrfs: make btrfs_discard_workfn() block_group ref explicit
    
    [ Upstream commit 895c6721d310c036dcfebb5ab845822229fa35eb ]
    
    Currently, the async discard machinery owns a ref to the block_group
    when the block_group is queued on a discard list. However, to handle
    races with discard cancellation and the discard workfn, we have a
    specific logic to detect that the block_group is *currently* running in
    the workfn, to protect the workfn's usage amidst cancellation.
    
    As far as I can tell, this doesn't have any overt bugs (though
    finish_discard_pass() and remove_from_discard_list() racing can have a
    surprising outcome for the caller of remove_from_discard_list() in that
    it is again added at the end).
    
    But it is needlessly complicated to rely on locking and the nullity of
    discard_ctl->block_group. Simplify this significantly by just taking a
    refcount while we are in the workfn and unconditionally drop it in both
    the remove and workfn paths, regardless of if they race.
    
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Boris Burkov <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: send: return -ENAMETOOLONG when attempting a path that is too long [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Feb 5 13:09:25 2025 +0000

    btrfs: send: return -ENAMETOOLONG when attempting a path that is too long
    
    [ Upstream commit a77749b3e21813566cea050bbb3414ae74562eba ]
    
    When attempting to build a too long path we are currently returning
    -ENOMEM, which is very odd and misleading. So update fs_path_ensure_buf()
    to return -ENAMETOOLONG instead. Also, while at it, move the WARN_ON()
    into the if statement's expression, as it makes it clear what is being
    tested and also has the effect of adding 'unlikely' to the statement,
    which allows the compiler to generate better code as this condition is
    never expected to happen.
    
    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: bcm: add locking for bcm_op runtime updates [+ + +]
Author: Oliver Hartkopp <[email protected]>
Date:   Mon May 19 14:50:26 2025 +0200

    can: bcm: add locking for bcm_op runtime updates
    
    commit c2aba69d0c36a496ab4f2e81e9c2b271f2693fd7 upstream.
    
    The CAN broadcast manager (CAN BCM) can send a sequence of CAN frames via
    hrtimer. The content and also the length of the sequence can be changed
    resp reduced at runtime where the 'currframe' counter is then set to zero.
    
    Although this appeared to be a safe operation the updates of 'currframe'
    can be triggered from user space and hrtimer context in bcm_can_tx().
    Anderson Nascimento created a proof of concept that triggered a KASAN
    slab-out-of-bounds read access which can be prevented with a spin_lock_bh.
    
    At the rework of bcm_can_tx() the 'count' variable has been moved into
    the protected section as this variable can be modified from both contexts
    too.
    
    Fixes: ffd980f976e7 ("[CAN]: Add broadcast manager (bcm) protocol")
    Reported-by: Anderson Nascimento <[email protected]>
    Tested-by: Anderson Nascimento <[email protected]>
    Reviewed-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Oliver Hartkopp <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: bcm: add missing rcu read protection for procfs content [+ + +]
Author: Oliver Hartkopp <[email protected]>
Date:   Mon May 19 14:50:27 2025 +0200

    can: bcm: add missing rcu read protection for procfs content
    
    commit dac5e6249159ac255dad9781793dbe5908ac9ddb upstream.
    
    When the procfs content is generated for a bcm_op which is in the process
    to be removed the procfs output might show unreliable data (UAF).
    
    As the removal of bcm_op's is already implemented with rcu handling this
    patch adds the missing rcu_read_lock() and makes sure the list entries
    are properly removed under rcu protection.
    
    Fixes: f1b4e32aca08 ("can: bcm: use call_rcu() instead of costly synchronize_rcu()")
    Reported-by: Anderson Nascimento <[email protected]>
    Suggested-by: Anderson Nascimento <[email protected]>
    Tested-by: Anderson Nascimento <[email protected]>
    Signed-off-by: Oliver Hartkopp <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected] # >= 5.4
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: c_can: Use of_property_present() to test existence of DT property [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Feb 12 21:23:14 2025 +0100

    can: c_can: Use of_property_present() to test existence of DT property
    
    [ Upstream commit ab1bc2290fd8311d49b87c29f1eb123fcb581bee ]
    
    of_property_read_bool() should be used only on boolean properties.
    
    Cc: Rob Herring <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cgroup: Fix compilation issue due to cgroup_mutex not being exported [+ + +]
Author: gaoxu <[email protected]>
Date:   Thu Apr 17 07:30:00 2025 +0000

    cgroup: Fix compilation issue due to cgroup_mutex not being exported
    
    [ Upstream commit 87c259a7a359e73e6c52c68fcbec79988999b4e6 ]
    
    When adding folio_memcg function call in the zram module for
    Android16-6.12, the following error occurs during compilation:
    ERROR: modpost: "cgroup_mutex" [../soc-repo/zram.ko] undefined!
    
    This error is caused by the indirect call to lockdep_is_held(&cgroup_mutex)
    within folio_memcg. The export setting for cgroup_mutex is controlled by
    the CONFIG_PROVE_RCU macro. If CONFIG_LOCKDEP is enabled while
    CONFIG_PROVE_RCU is not, this compilation error will occur.
    
    To resolve this issue, add a parallel macro CONFIG_LOCKDEP control to
    ensure cgroup_mutex is properly exported when needed.
    
    Signed-off-by: gao xu <[email protected]>
    Acked-by: Michal Koutný <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clk: imx8mp: inform CCF of maximum frequency of clocks [+ + +]
Author: Ahmad Fatoum <[email protected]>
Date:   Tue Feb 18 19:26:46 2025 +0100

    clk: imx8mp: inform CCF of maximum frequency of clocks
    
    [ Upstream commit 06a61b5cb6a8638fa8823cd09b17233b29696fa2 ]
    
    The IMX8MPCEC datasheet lists maximum frequencies allowed for different
    modules. Some of these limits are universal, but some depend on
    whether the SoC is operating in nominal or in overdrive mode.
    
    The imx8mp.dtsi currently assumes overdrive mode and configures some
    clocks in accordance with this. Boards wishing to make use of nominal
    mode will need to override some of the clock rates manually.
    
    As operating the clocks outside of their allowed range can lead to
    difficult to debug issues, it makes sense to register the maximum rates
    allowed in the driver, so the CCF can take them into account.
    
    Reviewed-by: Peng Fan <[email protected]>
    Signed-off-by: Ahmad Fatoum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Abel Vesa <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: camcc-sm8250: Use clk_rcg2_shared_ops for some RCGs [+ + +]
Author: Jordan Crouse <[email protected]>
Date:   Wed Jan 22 22:26:12 2025 +0000

    clk: qcom: camcc-sm8250: Use clk_rcg2_shared_ops for some RCGs
    
    [ Upstream commit 52b10b591f83dc6d9a1d6c2dc89433470a787ecd ]
    
    Update some RCGs on the sm8250 camera clock controller to use
    clk_rcg2_shared_ops. The shared_ops ensure the RCGs get parked
    to the XO during clock disable to prevent the clocks from locking up
    when the GDSC is enabled. These mirror similar fixes for other controllers
    such as commit e5c359f70e4b ("clk: qcom: camcc: Update the clock ops for
    the SC7180").
    
    Signed-off-by: Jordan Crouse <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clocksource: mips-gic-timer: Enable counter when CPUs start [+ + +]
Author: Paul Burton <[email protected]>
Date:   Wed Jan 29 13:32:47 2025 +0100

    clocksource: mips-gic-timer: Enable counter when CPUs start
    
    [ Upstream commit 3128b0a2e0cf6e07aa78e5f8cf7dd9cd59dc8174 ]
    
    In multi-cluster MIPS I6500 systems there is a GIC in each cluster,
    each with its own counter. When a cluster powers up the counter will
    be stopped, with the COUNTSTOP bit set in the GIC_CONFIG register.
    
    In single cluster systems, it has been fine to clear COUNTSTOP once
    in gic_clocksource_of_init() to start the counter. In multi-cluster
    systems, this will only have started the counter in the boot cluster,
    and any CPUs in other clusters will find their counter stopped which
    will break the GIC clock_event_device.
    
    Resolve this by having CPUs clear the COUNTSTOP bit when they come
    online, using the existing gic_starting_cpu() CPU hotplug callback. This
    will allow CPUs in secondary clusters to ensure that the cluster's GIC
    counter is running as expected.
    
    Signed-off-by: Paul Burton <[email protected]>
    Signed-off-by: Chao-ying Fu <[email protected]>
    Signed-off-by: Dragan Mladjenovic <[email protected]>
    Signed-off-by: Aleksandar Rikalo <[email protected]>
    Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
    Tested-by: Serge Semin <[email protected]>
    Tested-by: Gregory CLEMENT <[email protected]>
    Acked-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
coredump: fix error handling for replace_fd() [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Mon Apr 14 15:55:06 2025 +0200

    coredump: fix error handling for replace_fd()
    
    commit 95c5f43181fe9c1b5e5a4bd3281c857a5259991f upstream.
    
    The replace_fd() helper returns the file descriptor number on success
    and a negative error code on failure. The current error handling in
    umh_pipe_setup() only works because the file descriptor that is replaced
    is zero but that's pretty volatile. Explicitly check for a negative
    error code.
    
    Link: https://lore.kernel.org/[email protected]
    Tested-by: Luca Boccassi <[email protected]>
    Reviewed-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

coredump: hand a pidfd to the usermode coredump helper [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Mon Jun 2 13:16:07 2025 +0200

    coredump: hand a pidfd to the usermode coredump helper
    
    commit b5325b2a270fcaf7b2a9a0f23d422ca8a5a8bdea upstream.
    
    Give userspace a way to instruct the kernel to install a pidfd into the
    usermode helper process. This makes coredump handling a lot more
    reliable for userspace. In parallel with this commit we already have
    systemd adding support for this in [1].
    
    We create a pidfs file for the coredumping process when we process the
    corename pattern. When the usermode helper process is forked we then
    install the pidfs file as file descriptor three into the usermode
    helpers file descriptor table so it's available to the exec'd program.
    
    Since usermode helpers are either children of the system_unbound_wq
    workqueue or kthreadd we know that the file descriptor table is empty
    and can thus always use three as the file descriptor number.
    
    Note, that we'll install a pidfd for the thread-group leader even if a
    subthread is calling do_coredump(). We know that task linkage hasn't
    been removed due to delay_group_leader() and even if this @current isn't
    the actual thread-group leader we know that the thread-group leader
    cannot be reaped until @current has exited.
    
    [brauner: This is a backport for the v5.14 series. Upstream has
    significantly changed and backporting all that infra is a non-starter.
    So simply backport the pidfd_prepare() helper and waste the file
    descriptor we allocated. Then we minimally massage the umh coredump
    setup code.]
    
    Link: https://github.com/systemd/systemd/pull/37125 [1]
    Link: https://lore.kernel.org/[email protected]
    Tested-by: Luca Boccassi <[email protected]>
    Reviewed-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cpufreq: tegra186: Share policy per cluster [+ + +]
Author: Aaron Kling <[email protected]>
Date:   Mon Mar 10 00:28:48 2025 -0500

    cpufreq: tegra186: Share policy per cluster
    
    [ Upstream commit be4ae8c19492cd6d5de61ccb34ffb3f5ede5eec8 ]
    
    This functionally brings tegra186 in line with tegra210 and tegra194,
    sharing a cpufreq policy between all cores in a cluster.
    
    Reviewed-by: Sumit Gupta <[email protected]>
    Acked-by: Thierry Reding <[email protected]>
    Signed-off-by: Aaron Kling <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cpuidle: menu: Avoid discarding useful information [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Thu Feb 6 15:29:05 2025 +0100

    cpuidle: menu: Avoid discarding useful information
    
    [ Upstream commit 85975daeaa4d6ec560bfcd354fc9c08ad7f38888 ]
    
    When giving up on making a high-confidence prediction,
    get_typical_interval() always returns UINT_MAX which means that the
    next idle interval prediction will be based entirely on the time till
    the next timer.  However, the information represented by the most
    recent intervals may not be completely useless in those cases.
    
    Namely, the largest recent idle interval is an upper bound on the
    recently observed idle duration, so it is reasonable to assume that
    the next idle duration is unlikely to exceed it.  Moreover, this is
    still true after eliminating the suspected outliers if the sample
    set still under consideration is at least as large as 50% of the
    maximum sample set size.
    
    Accordingly, make get_typical_interval() return the current maximum
    recent interval value in that case instead of UINT_MAX.
    
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reported-by: Artem Bityutskiy <[email protected]>
    Tested-by: Artem Bityutskiy <[email protected]>
    Reviewed-by: Christian Loehle <[email protected]>
    Tested-by: Christian Loehle <[email protected]>
    Tested-by: Aboorva Devarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: algif_hash - fix double free in hash_accept [+ + +]
Author: Ivan Pravdin <[email protected]>
Date:   Sun May 18 18:41:02 2025 -0400

    crypto: algif_hash - fix double free in hash_accept
    
    commit b2df03ed4052e97126267e8c13ad4204ea6ba9b6 upstream.
    
    If accept(2) is called on socket type algif_hash with
    MSG_MORE flag set and crypto_ahash_import fails,
    sk2 is freed. However, it is also freed in af_alg_release,
    leading to slab-use-after-free error.
    
    Fixes: fe869cdb89c9 ("crypto: algif_hash - User-space interface for hash operations")
    Cc: <[email protected]>
    Signed-off-by: Ivan Pravdin <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

crypto: lzo - Fix compression buffer overrun [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Thu Feb 27 17:04:46 2025 +0800

    crypto: lzo - Fix compression buffer overrun
    
    [ Upstream commit cc47f07234f72cbd8e2c973cdbf2a6730660a463 ]
    
    Unlike the decompression code, the compression code in LZO never
    checked for output overruns.  It instead assumes that the caller
    always provides enough buffer space, disregarding the buffer length
    provided by the caller.
    
    Add a safe compression interface that checks for the end of buffer
    before each write.  Use the safe interface in crypto/lzo.
    
    Signed-off-by: Herbert Xu <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: octeontx2 - suppress auth failure screaming due to negative tests [+ + +]
Author: Shashank Gupta <[email protected]>
Date:   Wed Mar 5 13:27:05 2025 +0530

    crypto: octeontx2 - suppress auth failure screaming due to negative tests
    
    [ Upstream commit 64b7871522a4cba99d092e1c849d6f9092868aaa ]
    
    This patch addresses an issue where authentication failures were being
    erroneously reported due to negative test failures in the "ccm(aes)"
    selftest.
    pr_debug suppress unnecessary screaming of these tests.
    
    Signed-off-by: Shashank Gupta <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dlm: make tcp still work in multi-link env [+ + +]
Author: Heming Zhao <[email protected]>
Date:   Mon Mar 10 15:36:21 2025 +0800

    dlm: make tcp still work in multi-link env
    
    [ Upstream commit 03d2b62208a336a3bb984b9465ef6d89a046ea22 ]
    
    This patch bypasses multi-link errors in TCP mode, allowing dlm
    to operate on the first tcp link.
    
    Signed-off-by: Heming Zhao <[email protected]>
    Signed-off-by: David Teigland <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm cache: prevent BUG_ON by blocking retries on failed device resumes [+ + +]
Author: Ming-Hung Tsai <[email protected]>
Date:   Thu Mar 6 16:41:50 2025 +0800

    dm cache: prevent BUG_ON by blocking retries on failed device resumes
    
    [ Upstream commit 5da692e2262b8f81993baa9592f57d12c2703dea ]
    
    A cache device failing to resume due to mapping errors should not be
    retried, as the failure leaves a partially initialized policy object.
    Repeating the resume operation risks triggering BUG_ON when reloading
    cache mappings into the incomplete policy object.
    
    Reproduce steps:
    
    1. create a cache metadata consisting of 512 or more cache blocks,
       with some mappings stored in the first array block of the mapping
       array. Here we use cache_restore v1.0 to build the metadata.
    
    cat <<EOF >> cmeta.xml
    <superblock uuid="" block_size="128" nr_cache_blocks="512" \
    policy="smq" hint_width="4">
      <mappings>
        <mapping cache_block="0" origin_block="0" dirty="false"/>
      </mappings>
    </superblock>
    EOF
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    cache_restore -i cmeta.xml -o /dev/mapper/cmeta --metadata-version=2
    dmsetup remove cmeta
    
    2. wipe the second array block of the mapping array to simulate
       data degradations.
    
    mapping_root=$(dd if=/dev/sdc bs=1c count=8 skip=192 \
    2>/dev/null | hexdump -e '1/8 "%u\n"')
    ablock=$(dd if=/dev/sdc bs=1c count=8 skip=$((4096*mapping_root+2056)) \
    2>/dev/null | hexdump -e '1/8 "%u\n"')
    dd if=/dev/zero of=/dev/sdc bs=4k count=1 seek=$ablock
    
    3. try bringing up the cache device. The resume is expected to fail
       due to the broken array block.
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc 262144"
    dmsetup create cache --notable
    dmsetup load cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    dmsetup resume cache
    
    4. try resuming the cache again. An unexpected BUG_ON is triggered
       while loading cache mappings.
    
    dmsetup resume cache
    
    Kernel logs:
    
    (snip)
    ------------[ cut here ]------------
    kernel BUG at drivers/md/dm-cache-policy-smq.c:752!
    Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 332 Comm: dmsetup Not tainted 6.13.4 #3
    RIP: 0010:smq_load_mapping+0x3e5/0x570
    
    Fix by disallowing resume operations for devices that failed the
    initial attempt.
    
    Signed-off-by: Ming-Hung Tsai <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm: restrict dm device size to 2^63-512 bytes [+ + +]
Author: Mikulas Patocka <[email protected]>
Date:   Fri Mar 14 13:51:32 2025 +0100

    dm: restrict dm device size to 2^63-512 bytes
    
    [ Upstream commit 45fc728515c14f53f6205789de5bfd72a95af3b8 ]
    
    The devices with size >= 2^63 bytes can't be used reliably by userspace
    because the type off_t is a signed 64-bit integer.
    
    Therefore, we limit the maximum size of a device mapper device to
    2^63-512 bytes.
    
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dma-mapping: avoid potential unused data compilation warning [+ + +]
Author: Marek Szyprowski <[email protected]>
Date:   Tue Apr 15 09:56:59 2025 +0200

    dma-mapping: avoid potential unused data compilation warning
    
    [ Upstream commit c9b19ea63036fc537a69265acea1b18dabd1cbd3 ]
    
    When CONFIG_NEED_DMA_MAP_STATE is not defined, dma-mapping clients might
    report unused data compilation warnings for dma_unmap_*() calls
    arguments. Redefine macros for those calls to let compiler to notice that
    it is okay when the provided arguments are not used.
    
    Reported-by: Andy Shevchenko <[email protected]>
    Suggested-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Marek Szyprowski <[email protected]>
    Tested-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
dql: Fix dql->limit value when reset. [+ + +]
Author: Jing Su <[email protected]>
Date:   Wed Mar 19 16:57:51 2025 +0800

    dql: Fix dql->limit value when reset.
    
    [ Upstream commit 3a17f23f7c36bac3a3584aaf97d3e3e0b2790396 ]
    
    Executing dql_reset after setting a non-zero value for limit_min can
    lead to an unreasonable situation where dql->limit is less than
    dql->limit_min.
    
    For instance, after setting
    /sys/class/net/eth*/queues/tx-0/byte_queue_limits/limit_min,
    an ifconfig down/up operation might cause the ethernet driver to call
    netdev_tx_reset_queue, which in turn invokes dql_reset.
    
    In this case, dql->limit is reset to 0 while dql->limit_min remains
    non-zero value, which is unexpected. The limit should always be
    greater than or equal to limit_min.
    
    Signed-off-by: Jing Su <[email protected]>
    Link: https://patch.msgid.link/Z9qHD1s/NEuQBdgH@pilot-ThinkCentre-M930t-N000
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: handle max_downscale_src_width fail check [+ + +]
Author: Yihan Zhu <[email protected]>
Date:   Wed Feb 12 15:17:56 2025 -0500

    drm/amd/display: handle max_downscale_src_width fail check
    
    [ Upstream commit 02a940da2ccc0cc0299811379580852b405a0ea2 ]
    
    [WHY]
    If max_downscale_src_width check fails, we exit early from TAP calculation and left a NULL
    value to the scaling data structure to cause the zero divide in the DML validation.
    
    [HOW]
    Call set default TAP calculation before early exit in get_optimal_number_of_taps due to
    max downscale limit exceed.
    
    Reviewed-by: Samson Tam <[email protected]>
    Signed-off-by: Yihan Zhu <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Initial psr_version with correct setting [+ + +]
Author: Tom Chung <[email protected]>
Date:   Mon Jan 13 14:22:31 2025 +0800

    drm/amd/display: Initial psr_version with correct setting
    
    [ Upstream commit d8c782cac5007e68e7484d420168f12d3490def6 ]
    
    [Why & How]
    The initial setting for psr_version is not correct while
    create a virtual link.
    
    The default psr_version should be DC_PSR_VERSION_UNSUPPORTED.
    
    Reviewed-by: Roman Li <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu: Do not program AGP BAR regs under SRIOV in gfxhub_v1_0.c [+ + +]
Author: Victor Lu <[email protected]>
Date:   Thu Feb 13 18:38:28 2025 -0500

    drm/amdgpu: Do not program AGP BAR regs under SRIOV in gfxhub_v1_0.c
    
    [ Upstream commit 057fef20b8401110a7bc1c2fe9d804a8a0bf0d24 ]
    
    SRIOV VF does not have write access to AGP BAR regs.
    Skip the writes to avoid a dmesg warning.
    
    Signed-off-by: Victor Lu <[email protected]>
    Acked-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: reset psp->cmd to NULL after releasing the buffer [+ + +]
Author: Jiang Liu <[email protected]>
Date:   Fri Feb 7 14:28:49 2025 +0800

    drm/amdgpu: reset psp->cmd to NULL after releasing the buffer
    
    [ Upstream commit e92f3f94cad24154fd3baae30c6dfb918492278d ]
    
    Reset psp->cmd to NULL after releasing the buffer in function psp_sw_fini().
    
    Reviewed-by: Lijo Lazar <[email protected]>
    Signed-off-by: Jiang Liu <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdkfd: KFD release_work possible circular locking [+ + +]
Author: Philip Yang <[email protected]>
Date:   Mon Feb 17 20:08:29 2025 -0500

    drm/amdkfd: KFD release_work possible circular locking
    
    [ Upstream commit 1b9366c601039d60546794c63fbb83ce8e53b978 ]
    
    If waiting for gpu reset done in KFD release_work, thers is WARNING:
    possible circular locking dependency detected
    
      #2  kfd_create_process
            kfd_process_mutex
              flush kfd release work
    
      #1  kfd release work
            wait for amdgpu reset work
    
      #0  amdgpu_device_gpu_reset
            kgd2kfd_pre_reset
              kfd_process_mutex
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock((work_completion)(&p->release_work));
                      lock((wq_completion)kfd_process_wq);
                      lock((work_completion)(&p->release_work));
       lock((wq_completion)amdgpu-reset-dev);
    
    To fix this, KFD create process move flush release work outside
    kfd_process_mutex.
    
    Signed-off-by: Philip Yang <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/ast: Find VBIOS mode from regular display size [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Fri Jan 31 10:21:08 2025 +0100

    drm/ast: Find VBIOS mode from regular display size
    
    [ Upstream commit c81202906b5cd56db403e95db3d29c9dfc8c74c1 ]
    
    The ast driver looks up supplied display modes from an internal list of
    display modes supported by the VBIOS.
    
    Do not use the crtc_-prefixed display values from struct drm_display_mode
    for looking up the VBIOS mode. The fields contain raw values that the
    driver programs to hardware. They are affected by display settings like
    double-scan or interlace.
    
    Instead use the regular vdisplay and hdisplay fields for lookup. As the
    programmed values can now differ from the values used for lookup, set
    struct drm_display_mode.crtc_vdisplay and .crtc_hdisplay from the VBIOS
    mode.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Jocelyn Falempe <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/atomic: clarify the rules around drm_atomic_state->allow_modeset [+ + +]
Author: Simona Vetter <[email protected]>
Date:   Wed Jan 8 18:24:16 2025 +0100

    drm/atomic: clarify the rules around drm_atomic_state->allow_modeset
    
    [ Upstream commit c5e3306a424b52e38ad2c28c7f3399fcd03e383d ]
    
    msm is automagically upgrading normal commits to full modesets, and
    that's a big no-no:
    
    - for one this results in full on->off->on transitions on all these
      crtc, at least if you're using the usual helpers. Which seems to be
      the case, and is breaking uapi
    
    - further even if the ctm change itself would not result in flicker,
      this can hide modesets for other reasons. Which again breaks the
      uapi
    
    v2: I forgot the case of adding unrelated crtc state. Add that case
    and link to the existing kerneldoc explainers. This has come up in an
    irc discussion with Manasi and Ville about intel's bigjoiner mode.
    Also cc everyone involved in the msm irc discussion, more people
    joined after I sent out v1.
    
    v3: Wording polish from Pekka and Thomas
    
    Acked-by: Pekka Paalanen <[email protected]>
    Acked-by: Dmitry Baryshkov <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: David Airlie <[email protected]>
    Cc: Daniel Vetter <[email protected]>
    Cc: Pekka Paalanen <[email protected]>
    Cc: Rob Clark <[email protected]>
    Cc: Simon Ser <[email protected]>
    Cc: Manasi Navare <[email protected]>
    Cc: Ville Syrjälä <[email protected]>
    Cc: Abhinav Kumar <[email protected]>
    Cc: Dmitry Baryshkov <[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: Sasha Levin <[email protected]>

 
drm/edid: fixed the bug that hdr metadata was not reset [+ + +]
Author: feijuan.li <[email protected]>
Date:   Wed May 14 14:35:11 2025 +0800

    drm/edid: fixed the bug that hdr metadata was not reset
    
    commit 6692dbc15e5ed40a3aa037aced65d7b8826c58cd upstream.
    
    When DP connected to a device with HDR capability,
    the hdr structure was filled.Then connected to another
    sink device without hdr capability, but the hdr info
    still exist.
    
    Fixes: e85959d6cbe0 ("drm: Parse HDR metadata info from EDID")
    Cc: <[email protected]> # v5.3+
    Signed-off-by: "feijuan.li" <[email protected]>
    Reviewed-by: Jani Nikula <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jani Nikula <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/i915/gvt: fix unterminated-string-initialization warning [+ + +]
Author: Jani Nikula <[email protected]>
Date:   Thu Mar 27 14:47:39 2025 +0200

    drm/i915/gvt: fix unterminated-string-initialization warning
    
    commit 2e43ae7dd71cd9bb0d1bce1d3306bf77523feb81 upstream.
    
    Initializing const char opregion_signature[16] = OPREGION_SIGNATURE
    (which is "IntelGraphicsMem") drops the NUL termination of the
    string. This is intentional, but the compiler doesn't know this.
    
    Switch to initializing header->signature directly from the string
    litaral, with sizeof destination rather than source. We don't treat the
    signature as a string other than for initialization; it's really just a
    blob of binary data.
    
    Add a static assert for good measure to cross-check the sizes.
    
    Reported-by: Kees Cook <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13934
    Tested-by: Nicolas Chauvet <[email protected]>
    Tested-by: Damian Tometzki <[email protected]>
    Cc: [email protected]
    Reviewed-by: Zhenyu Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jani Nikula <[email protected]>
    (cherry picked from commit 4f8207469094bd04aad952258ceb9ff4c77b6bfa)
    Signed-off-by: Jani Nikula <[email protected]>
    [nathan: Move static_assert() to top of function to avoid instance of
             -Wdeclaration-after-statement due to lack of b5ec6fd286df]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Mon Feb 17 16:47:58 2025 +0100

    drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence
    
    [ Upstream commit 8c9da7cd0bbcc90ab444454fecf535320456a312 ]
    
    In preparation for adding support for newer DPI instances which
    do support direct-pin but do not have any H_FRE_CON register,
    like the one found in MT8195 and MT8188, add a branch to check
    if the reg_h_fre_con variable was declared in the mtk_dpi_conf
    structure for the probed SoC DPI version.
    
    As a note, this is useful specifically only for cases in which
    the support_direct_pin variable is true, so mt8195-dpintf is
    not affected by any issue.
    
    Reviewed-by: CK Hu <[email protected]>
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patchwork.kernel.org/project/dri-devel/patch/[email protected]/
    Signed-off-by: Chun-Kuang Hu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm: Add valid clones check [+ + +]
Author: Jessica Zhang <[email protected]>
Date:   Mon Dec 16 16:43:14 2024 -0800

    drm: Add valid clones check
    
    [ Upstream commit 41b4b11da02157c7474caf41d56baae0e941d01a ]
    
    Check that all encoders attached to a given CRTC are valid
    possible_clones of each other.
    
    Signed-off-by: Jessica Zhang <[email protected]>
    Reviewed-by: Maxime Ripard <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/ie31200: work around false positive build warning [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Wed Jan 22 07:50:26 2025 +0100

    EDAC/ie31200: work around false positive build warning
    
    [ Upstream commit c29dfd661fe2f8d1b48c7f00590929c04b25bf40 ]
    
    gcc-14 produces a bogus warning in some configurations:
    
    drivers/edac/ie31200_edac.c: In function 'ie31200_probe1.isra':
    drivers/edac/ie31200_edac.c:412:26: error: 'dimm_info' is used uninitialized [-Werror=uninitialized]
      412 |         struct dimm_data dimm_info[IE31200_CHANNELS][IE31200_DIMMS_PER_CHANNEL];
          |                          ^~~~~~~~~
    drivers/edac/ie31200_edac.c:412:26: note: 'dimm_info' declared here
      412 |         struct dimm_data dimm_info[IE31200_CHANNELS][IE31200_DIMMS_PER_CHANNEL];
          |                          ^~~~~~~~~
    
    I don't see any way the unintialized access could really happen here,
    but I can see why the compiler gets confused by the two loops.
    
    Instead, rework the two nested loops to only read the addr_decode
    registers and then keep only one instance of the dimm info structure.
    
    [Tony: Qiuxu pointed out that the "populate DIMM info" comment was left
    behind in the refactor and suggested moving it. I deleted the comment
    as unnecessry in front os a call to populate_dimm_info(). That seems
    pretty self-describing.]
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Acked-by: Jason Baron <[email protected]>
    Signed-off-by: Tony Luck <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
eth: mlx4: don't try to complete XDP frames in netpoll [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Wed Feb 12 17:06:33 2025 -0800

    eth: mlx4: don't try to complete XDP frames in netpoll
    
    [ Upstream commit 8fdeafd66edaf420ea0063a1f13442fe3470fe70 ]
    
    mlx4 doesn't support ndo_xdp_xmit / XDP_REDIRECT and wasn't
    using page pool until now, so it could run XDP completions
    in netpoll (NAPI budget == 0) just fine. Page pool has calling
    context requirements, make sure we don't try to call it from
    what is potentially HW IRQ context.
    
    Reviewed-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ext4: reorder capability check last [+ + +]
Author: Christian Göttsche <[email protected]>
Date:   Sun Mar 2 17:06:39 2025 +0100

    ext4: reorder capability check last
    
    [ Upstream commit 1b419c889c0767a5b66d0a6c566cae491f1cb0f7 ]
    
    capable() calls refer to enabled LSMs whether to permit or deny the
    request.  This is relevant in connection with SELinux, where a
    capability check results in a policy decision and by default a denial
    message on insufficient permission is issued.
    It can lead to three undesired cases:
      1. A denial message is generated, even in case the operation was an
         unprivileged one and thus the syscall succeeded, creating noise.
      2. To avoid the noise from 1. the policy writer adds a rule to ignore
         those denial messages, hiding future syscalls, where the task
         performs an actual privileged operation, leading to hidden limited
         functionality of that task.
      3. To avoid the noise from 1. the policy writer adds a rule to permit
         the task the requested capability, while it does not need it,
         violating the principle of least privilege.
    
    Signed-off-by: Christian Göttsche <[email protected]>
    Reviewed-by: Serge Hallyn <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fbcon: Use correct erase colour for clearing in fbcon [+ + +]
Author: Zsolt Kajtar <[email protected]>
Date:   Sun Feb 2 21:33:46 2025 +0100

    fbcon: Use correct erase colour for clearing in fbcon
    
    [ Upstream commit 892c788d73fe4a94337ed092cb998c49fa8ecaf4 ]
    
    The erase colour calculation for fbcon clearing should use get_color instead
    of attr_col_ec, like everything else. The latter is similar but is not correct.
    For example it's missing the depth dependent remapping and doesn't care about
    blanking.
    
    The problem can be reproduced by setting up the background colour to grey
    (vt.color=0x70) and having an fbcon console set to 2bpp (4 shades of gray).
    Now the background attribute should be 1 (dark gray) on the console.
    
    If the screen is scrolled when pressing enter in a shell prompt at the bottom
    line then the new line is cleared using colour 7 instead of 1. That's not
    something fillrect likes (at 2bbp it expect 0-3) so the result is interesting.
    
    This patch switches to get_color with vc_video_erase_char to determine the
    erase colour from attr_col_ec. That makes the latter function redundant as
    no other users were left.
    
    Use correct erase colour for clearing in fbcon
    
    Signed-off-by: Zsolt Kajtar <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fbdev: core: tileblit: Implement missing margin clearing for tileblit [+ + +]
Author: Zsolt Kajtar <[email protected]>
Date:   Sat Feb 1 09:18:09 2025 +0100

    fbdev: core: tileblit: Implement missing margin clearing for tileblit
    
    [ Upstream commit 76d3ca89981354e1f85a3e0ad9ac4217d351cc72 ]
    
    I was wondering why there's garbage at the bottom of the screen when
    tile blitting is used with an odd mode like 1080, 600 or 200. Sure there's
    only space for half a tile but the same area is clean when the buffer
    is bitmap.
    
    Then later I found that it's supposed to be cleaned but that's not
    implemented. So I took what's in bitblit and adapted it for tileblit.
    
    This implementation was tested for both the horizontal and vertical case,
    and now does the same as what's done for bitmap buffers.
    
    If anyone is interested to reproduce the problem then I could bet that'd
    be on a S3 or Ark. Just set up a mode with an odd line count and make
    sure that the virtual size covers the complete tile at the bottom. E.g.
    for 600 lines that's 608 virtual lines for a 16 tall tile. Then the
    bottom area should be cleaned.
    
    For the right side it's more difficult as there the drivers won't let an
    odd size happen, unless the code is modified. But once it reports back a
    few pixel columns short then fbcon won't use the last column. With the
    patch that column is now clean.
    
    Btw. the virtual size should be rounded up by the driver for both axes
    (not only the horizontal) so that it's dividable by the tile size.
    That's a driver bug but correcting it is not in scope for this patch.
    
    Implement missing margin clearing for tileblit
    
    Signed-off-by: Zsolt Kajtar <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fbdev: fsl-diu-fb: add missing device_remove_file() [+ + +]
Author: Shixiong Ou <[email protected]>
Date:   Mon Mar 10 09:54:31 2025 +0800

    fbdev: fsl-diu-fb: add missing device_remove_file()
    
    [ Upstream commit 86d16cd12efa547ed43d16ba7a782c1251c80ea8 ]
    
    Call device_remove_file() when driver remove.
    
    Signed-off-by: Shixiong Ou <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: arm_ffa: Set dma_mask for ffa devices [+ + +]
Author: Viresh Kumar <[email protected]>
Date:   Fri Jan 17 15:35:52 2025 +0530

    firmware: arm_ffa: Set dma_mask for ffa devices
    
    [ Upstream commit cc0aac7ca17e0ea3ca84b552fc79f3e86fd07f53 ]
    
    Set dma_mask for FFA devices, otherwise DMA allocation using the device pointer
    lead to following warning:
    
    WARNING: CPU: 1 PID: 1 at kernel/dma/mapping.c:597 dma_alloc_attrs+0xe0/0x124
    
    Signed-off-by: Viresh Kumar <[email protected]>
    Message-Id: <e3dd8042ac680bd74b6580c25df855d092079c18.1737107520.git.viresh.kumar@linaro.org>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fork: use pidfd_prepare() [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Mon Mar 27 20:22:52 2023 +0200

    fork: use pidfd_prepare()
    
    commit ca7707f5430ad6b1c9cb7cee0a7f67d69328bb2d upstream.
    
    Stop open-coding get_unused_fd_flags() and anon_inode_getfile(). That's
    brittle just for keeping the flags between both calls in sync. Use the
    dedicated helper.
    
    Message-Id: <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fpga: altera-cvp: Increase credit timeout [+ + +]
Author: Kuhanh Murugasen Krishnan <[email protected]>
Date:   Thu Feb 13 06:12:49 2025 +0800

    fpga: altera-cvp: Increase credit timeout
    
    [ Upstream commit 0f05886a40fdc55016ba4d9ae0a9c41f8312f15b ]
    
    Increase the timeout for SDM (Secure device manager) data credits from
    20ms to 40ms. Internal stress tests running at 500 loops failed with the
    current timeout of 20ms. At the start of a FPGA configuration, the CVP
    host driver reads the transmit credits from SDM. It then sends bitstream
    FPGA data to SDM based on the total credits. Each credit allows the
    CVP host driver to send 4kBytes of data. There are situations whereby,
    the SDM did not respond in time during testing.
    
    Signed-off-by: Ang Tien Sung <[email protected]>
    Signed-off-by: Kuhanh Murugasen Krishnan <[email protected]>
    Acked-by: Xu Yilun <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Xu Yilun <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: quirks: Add ADATA XPG alpha wireless mouse support [+ + +]
Author: Milton Barrera <[email protected]>
Date:   Wed Apr 9 00:04:28 2025 -0600

    HID: quirks: Add ADATA XPG alpha wireless mouse support
    
    [ Upstream commit fa9fdeea1b7d6440c22efa6d59a769eae8bc89f1 ]
    
    This patch adds HID_QUIRK_ALWAYS_POLL for the ADATA XPG wireless gaming mouse (USB ID 125f:7505) and its USB dongle (USB ID 125f:7506). Without this quirk, the device does not generate input events properly.
    
    Signed-off-by: Milton Barrera <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: usbkbd: Fix the bit shift number for LED_KANA [+ + +]
Author: junan <[email protected]>
Date:   Thu Nov 28 10:35:18 2024 +0800

    HID: usbkbd: Fix the bit shift number for LED_KANA
    
    [ Upstream commit d73a4bfa2881a6859b384b75a414c33d4898b055 ]
    
    Since "LED_KANA" was defined as "0x04", the shift number should be "4".
    
    Signed-off-by: junan <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hwmon: (gpio-fan) Add missing mutex locks [+ + +]
Author: Alexander Stein <[email protected]>
Date:   Mon Feb 10 15:59:30 2025 +0100

    hwmon: (gpio-fan) Add missing mutex locks
    
    [ Upstream commit 9fee7d19bab635f89223cc40dfd2c8797fdc4988 ]
    
    set_fan_speed() is expected to be called with fan_data->lock being locked.
    Add locking for proper synchronization.
    
    Signed-off-by: Alexander Stein <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hwmon: (xgene-hwmon) use appropriate type for the latency value [+ + +]
Author: Andrey Vatoropin <[email protected]>
Date:   Tue Feb 4 09:54:08 2025 +0000

    hwmon: (xgene-hwmon) use appropriate type for the latency value
    
    [ Upstream commit 8df0f002827e18632dcd986f7546c1abf1953a6f ]
    
    The expression PCC_NUM_RETRIES * pcc_chan->latency is currently being
    evaluated using 32-bit arithmetic.
    
    Since a value of type 'u64' is used to store the eventual result,
    and this result is later sent to the function usecs_to_jiffies with
    input parameter unsigned int, the current data type is too wide to
    store the value of ctx->usecs_lat.
    
    Change the data type of "usecs_lat" to a more suitable (narrower) type.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Andrey Vatoropin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: pxa: fix call balance of i2c->clk handling routines [+ + +]
Author: Vitalii Mordan <[email protected]>
Date:   Wed Feb 12 20:28:03 2025 +0300

    i2c: pxa: fix call balance of i2c->clk handling routines
    
    [ Upstream commit be7113d2e2a6f20cbee99c98d261a1fd6fd7b549 ]
    
    If the clock i2c->clk was not enabled in i2c_pxa_probe(), it should not be
    disabled in any path.
    
    Found by Linux Verification Center (linuxtesting.org) with Klever.
    
    Signed-off-by: Vitalii Mordan <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

i2c: qup: Vote for interconnect bandwidth to DRAM [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Tue Nov 28 10:48:37 2023 +0100

    i2c: qup: Vote for interconnect bandwidth to DRAM
    
    [ Upstream commit d4f35233a6345f62637463ef6e0708f44ffaa583 ]
    
    When the I2C QUP controller is used together with a DMA engine it needs
    to vote for the interconnect path to the DRAM. Otherwise it may be
    unable to access the memory quickly enough.
    
    The requested peak bandwidth is dependent on the I2C core clock.
    
    To avoid sending votes too often the bandwidth is always requested when
    a DMA transfer starts, but dropped only on runtime suspend. Runtime
    suspend should only happen if no transfer is active. After resumption we
    can defer the next vote until the first DMA transfer actually happens.
    
    The implementation is largely identical to the one introduced for
    spi-qup in commit ecdaa9473019 ("spi: qup: Vote for interconnect
    bandwidth to DRAM") since both drivers represent the same hardware
    block.
    
    Signed-off-by: Stephan Gerhold <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
i3c: master: svc: Fix implicit fallthrough in svc_i3c_master_ibi_work() [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Wed Mar 19 09:08:01 2025 -0700

    i3c: master: svc: Fix implicit fallthrough in svc_i3c_master_ibi_work()
    
    commit e8d2d287e26d9bd9114cf258a123a6b70812442e upstream.
    
    Clang warns (or errors with CONFIG_WERROR=y):
    
      drivers/i3c/master/svc-i3c-master.c:596:2: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
        596 |         default:
            |         ^
      drivers/i3c/master/svc-i3c-master.c:596:2: note: insert 'break;' to avoid fall-through
        596 |         default:
            |         ^
            |         break;
      1 error generated.
    
    Clang is a little more pedantic than GCC, which does not warn when
    falling through to a case that is just break or return. Clang's version
    is more in line with the kernel's own stance in deprecated.rst, which
    states that all switch/case blocks must end in either break,
    fallthrough, continue, goto, or return. Add the missing break to silence
    the warning.
    
    Fixes: 0430bf9bc1ac ("i3c: master: svc: Fix missing STOP for master request")
    Signed-off-by: Nathan Chancellor <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i3c: master: svc: Fix missing STOP for master request [+ + +]
Author: Stanley Chu <[email protected]>
Date:   Tue Mar 18 13:36:06 2025 +0800

    i3c: master: svc: Fix missing STOP for master request
    
    [ Upstream commit 0430bf9bc1ac068c8b8c540eb93e5751872efc51 ]
    
    The controller driver nacked the master request but didn't emit a
    STOP to end the transaction. The driver shall refuse the unsupported
    requests and return the controller state to IDLE by emitting a STOP.
    
    Signed-off-by: Stanley Chu <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ieee802154: ca8210: Use proper setters and getters for bitwise types [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Wed Mar 5 12:55:34 2025 +0200

    ieee802154: ca8210: Use proper setters and getters for bitwise types
    
    [ Upstream commit 169b2262205836a5d1213ff44dca2962276bece1 ]
    
    Sparse complains that the driver doesn't respect the bitwise types:
    
    drivers/net/ieee802154/ca8210.c:1796:27: warning: incorrect type in assignment (different base types)
    drivers/net/ieee802154/ca8210.c:1796:27:    expected restricted __le16 [addressable] [assigned] [usertype] pan_id
    drivers/net/ieee802154/ca8210.c:1796:27:    got unsigned short [usertype]
    drivers/net/ieee802154/ca8210.c:1801:25: warning: incorrect type in assignment (different base types)
    drivers/net/ieee802154/ca8210.c:1801:25:    expected restricted __le16 [addressable] [assigned] [usertype] pan_id
    drivers/net/ieee802154/ca8210.c:1801:25:    got unsigned short [usertype]
    drivers/net/ieee802154/ca8210.c:1928:28: warning: incorrect type in argument 3 (different base types)
    drivers/net/ieee802154/ca8210.c:1928:28:    expected unsigned short [usertype] dst_pan_id
    drivers/net/ieee802154/ca8210.c:1928:28:    got restricted __le16 [addressable] [usertype] pan_id
    
    Use proper setters and getters for bitwise types.
    
    Note, in accordance with [1] the protocol is little endian.
    
    Link: https://www.cascoda.com/wp-content/uploads/2018/11/CA-8210_datasheet_0418.pdf [1]
    Reviewed-by: Miquel Raynal <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Signed-off-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Stefan Schmidt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Feb 7 16:24:58 2025 +0900

    ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure().
    
    [ Upstream commit 5a1ccffd30a08f5a2428cd5fbb3ab03e8eb6c66d ]
    
    The following patch will not set skb->sk from VRF path.
    
    Let's fetch net from fib_rule->fr_net instead of sock_net(skb->sk)
    in fib[46]_rule_configure().
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Tested-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Feb 27 20:23:27 2025 -0800

    ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config().
    
    [ Upstream commit 254ba7e6032d3fc738050d500b0c1d8197af90ca ]
    
    fib_valid_key_len() is called in the beginning of fib_table_insert()
    or fib_table_delete() to check if the prefix length is valid.
    
    fib_table_insert() and fib_table_delete() are called from 3 paths
    
      - ip_rt_ioctl()
      - inet_rtm_newroute() / inet_rtm_delroute()
      - fib_magic()
    
    In the first ioctl() path, rtentry_to_fib_config() checks the prefix
    length with bad_mask().  Also, fib_magic() always passes the correct
    prefix: 32 or ifa->ifa_prefixlen, which is already validated.
    
    Let's move fib_valid_key_len() to the rtnetlink path, rtm_to_fib_config().
    
    While at it, 2 direct returns in rtm_to_fib_config() are changed to
    goto to match other places in the same function
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv6: save dontfrag in cork [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Thu Mar 6 22:34:09 2025 -0500

    ipv6: save dontfrag in cork
    
    [ Upstream commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a ]
    
    When spanning datagram construction over multiple send calls using
    MSG_MORE, per datagram settings are configured on the first send.
    
    That is when ip(6)_setup_cork stores these settings for subsequent use
    in __ip(6)_append_data and others.
    
    The only flag that escaped this was dontfrag. As a result, a datagram
    could be constructed with df=0 on the first sendmsg, but df=1 on a
    next. Which is what cmsg_ip.sh does in an upcoming MSG_MORE test in
    the "diff" scenario.
    
    Changing datagram conditions in the middle of constructing an skb
    makes this already complex code path even more convoluted. It is here
    unintentional. Bring this flag in line with expected sockopt/cmsg
    behavior.
    
    And stop passing ipc6 to __ip6_append_data, to avoid such issues
    in the future. This is already the case for __ip_append_data.
    
    inet6_cork had a 6 byte hole, so the 1B flag has no impact.
    
    Signed-off-by: Willem de Bruijn <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kbuild: Disable -Wdefault-const-init-unsafe [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Tue May 6 14:02:01 2025 -0700

    kbuild: Disable -Wdefault-const-init-unsafe
    
    commit d0afcfeb9e3810ec89d1ffde1a0e36621bb75dca upstream.
    
    A new on by default warning in clang [1] aims to flags instances where
    const variables without static or thread local storage or const members
    in aggregate types are not initialized because it can lead to an
    indeterminate value. This is quite noisy for the kernel due to
    instances originating from header files such as:
    
      drivers/gpu/drm/i915/gt/intel_ring.h:62:2: error: default initialization of an object of type 'typeof (ring->size)' (aka 'const unsigned int') leaves the object uninitialized [-Werror,-Wdefault-const-init-var-unsafe]
         62 |         typecheck(typeof(ring->size), next);
            |         ^
      include/linux/typecheck.h:10:9: note: expanded from macro 'typecheck'
         10 | ({      type __dummy; \
            |              ^
    
      include/net/ip.h:478:14: error: default initialization of an object of type 'typeof (rt->dst.expires)' (aka 'const unsigned long') leaves the object uninitialized [-Werror,-Wdefault-const-init-var-unsafe]
        478 |                 if (mtu && time_before(jiffies, rt->dst.expires))
            |                            ^
      include/linux/jiffies.h:138:26: note: expanded from macro 'time_before'
        138 | #define time_before(a,b)        time_after(b,a)
            |                                 ^
      include/linux/jiffies.h:128:3: note: expanded from macro 'time_after'
        128 |         (typecheck(unsigned long, a) && \
            |          ^
      include/linux/typecheck.h:11:12: note: expanded from macro 'typecheck'
         11 |         typeof(x) __dummy2; \
            |                   ^
    
      include/linux/list.h:409:27: warning: default initialization of an object of type 'union (unnamed union at include/linux/list.h:409:27)' with const member leaves the object uninitialized [-Wdefault-const-init-field-unsafe]
        409 |         struct list_head *next = smp_load_acquire(&head->next);
            |                                  ^
      include/asm-generic/barrier.h:176:29: note: expanded from macro 'smp_load_acquire'
        176 | #define smp_load_acquire(p) __smp_load_acquire(p)
            |                             ^
      arch/arm64/include/asm/barrier.h:164:59: note: expanded from macro '__smp_load_acquire'
        164 |         union { __unqual_scalar_typeof(*p) __val; char __c[1]; } __u;   \
            |                                                                  ^
      include/linux/list.h:409:27: note: member '__val' declared 'const' here
    
      crypto/scatterwalk.c:66:22: error: default initialization of an object of type 'struct scatter_walk' with const member leaves the object uninitialized [-Werror,-Wdefault-const-init-field-unsafe]
         66 |         struct scatter_walk walk;
            |                             ^
      include/crypto/algapi.h:112:15: note: member 'addr' declared 'const' here
        112 |                 void *const addr;
            |                             ^
    
      fs/hugetlbfs/inode.c:733:24: error: default initialization of an object of type 'struct vm_area_struct' with const member leaves the object uninitialized [-Werror,-Wdefault-const-init-field-unsafe]
        733 |         struct vm_area_struct pseudo_vma;
            |                               ^
      include/linux/mm_types.h:803:20: note: member 'vm_flags' declared 'const' here
        803 |                 const vm_flags_t vm_flags;
            |                                  ^
    
    Silencing the instances from typecheck.h is difficult because '= {}' is
    not available in older but supported compilers and '= {0}' would cause
    warnings about a literal 0 being treated as NULL. While it might be
    possible to come up with a local hack to silence the warning for
    clang-21+, it may not be worth it since -Wuninitialized will still
    trigger if an uninitialized const variable is actually used.
    
    In all audited cases of the "field" variant of the warning, the members
    are either not used in the particular call path, modified through other
    means such as memset() / memcpy() because the containing object is not
    const, or are within a union with other non-const members.
    
    Since this warning does not appear to have a high signal to noise ratio,
    just disable it.
    
    Cc: [email protected]
    Link: https://github.com/llvm/llvm-project/commit/576161cb6069e2c7656a8ef530727a0f4aefff30 [1]
    Reported-by: Linux Kernel Functional Testing <[email protected]>
    Closes: https://lore.kernel.org/CA+G9fYuNjKcxFKS_MKPRuga32XbndkLGcY-PVuoSwzv6VWbY=w@mail.gmail.com/
    Reported-by: Marcus Seyfarth <[email protected]>
    Closes: https://github.com/ClangBuiltLinux/linux/issues/2088
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    [nathan: Apply change to Makefile instead of scripts/Makefile.extrawarn
             due to lack of e88ca24319e4 in older stable branches]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

kbuild: fix argument parsing in scripts/config [+ + +]
Author: Seyediman Seyedarab <[email protected]>
Date:   Sat Mar 1 17:21:37 2025 -0500

    kbuild: fix argument parsing in scripts/config
    
    [ Upstream commit f757f6011c92b5a01db742c39149bed9e526478f ]
    
    The script previously assumed --file was always the first argument,
    which caused issues when it appeared later. This patch updates the
    parsing logic to scan all arguments to find --file, sets the config
    file correctly, and resets the argument list with the remaining
    commands.
    
    It also fixes --refresh to respect --file by passing KCONFIG_CONFIG=$FN
    to make oldconfig.
    
    Signed-off-by: Seyediman Seyedarab <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kconfig: merge_config: use an empty file as initfile [+ + +]
Author: Daniel Gomez <[email protected]>
Date:   Fri Mar 28 14:28:37 2025 +0000

    kconfig: merge_config: use an empty file as initfile
    
    [ Upstream commit a26fe287eed112b4e21e854f173c8918a6a8596d ]
    
    The scripts/kconfig/merge_config.sh script requires an existing
    $INITFILE (or the $1 argument) as a base file for merging Kconfig
    fragments. However, an empty $INITFILE can serve as an initial starting
    point, later referenced by the KCONFIG_ALLCONFIG Makefile variable
    if -m is not used. This variable can point to any configuration file
    containing preset config symbols (the merged output) as stated in
    Documentation/kbuild/kconfig.rst. When -m is used $INITFILE will
    contain just the merge output requiring the user to run make (i.e.
    KCONFIG_ALLCONFIG=<$INITFILE> make <allnoconfig/alldefconfig> or make
    olddefconfig).
    
    Instead of failing when `$INITFILE` is missing, create an empty file and
    use it as the starting point for merges.
    
    Signed-off-by: Daniel Gomez <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
libbpf: Fix out-of-bound read [+ + +]
Author: Nandakumar Edamana <[email protected]>
Date:   Sat Feb 22 02:31:11 2025 +0530

    libbpf: Fix out-of-bound read
    
    [ Upstream commit 236d3910117e9f97ebf75e511d8bcc950f1a4e5f ]
    
    In `set_kcfg_value_str`, an untrusted string is accessed with the assumption
    that it will be at least two characters long due to the presence of checks for
    opening and closing quotes. But the check for the closing quote
    (value[len - 1] != '"') misses the fact that it could be checking the opening
    quote itself in case of an invalid input that consists of just the opening
    quote.
    
    This commit adds an explicit check to make sure the string is at least two
    characters long.
    
    Signed-off-by: Nandakumar Edamana <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
libnvdimm/labels: Fix divide error in nd_label_data_init() [+ + +]
Author: Robert Richter <[email protected]>
Date:   Thu Mar 20 12:22:22 2025 +0100

    libnvdimm/labels: Fix divide error in nd_label_data_init()
    
    [ Upstream commit ef1d3455bbc1922f94a91ed58d3d7db440652959 ]
    
    If a faulty CXL memory device returns a broken zero LSA size in its
    memory device information (Identify Memory Device (Opcode 4000h), CXL
    spec. 3.1, 8.2.9.9.1.1), a divide error occurs in the libnvdimm
    driver:
    
     Oops: divide error: 0000 [#1] PREEMPT SMP NOPTI
     RIP: 0010:nd_label_data_init+0x10e/0x800 [libnvdimm]
    
    Code and flow:
    
    1) CXL Command 4000h returns LSA size = 0
    2) config_size is assigned to zero LSA size (CXL pmem driver):
    
    drivers/cxl/pmem.c:             .config_size = mds->lsa_size,
    
    3) max_xfer is set to zero (nvdimm driver):
    
    drivers/nvdimm/label.c: max_xfer = min_t(size_t, ndd->nsarea.max_xfer, config_size);
    
    4) A subsequent DIV_ROUND_UP() causes a division by zero:
    
    drivers/nvdimm/label.c: /* Make our initial read size a multiple of max_xfer size */
    drivers/nvdimm/label.c: read_size = min(DIV_ROUND_UP(read_size, max_xfer) * max_xfer,
    drivers/nvdimm/label.c-                 config_size);
    
    Fix this by checking the config size parameter by extending an
    existing check.
    
    Signed-off-by: Robert Richter <[email protected]>
    Reviewed-by: Pankaj Gupta <[email protected]>
    Reviewed-by: Ira Weiny <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Ira Weiny <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 5.15.185 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Jun 4 14:38:08 2025 +0200

    Linux 5.15.185
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Richard Narron <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
llc: fix data loss when reading from a socket in llc_ui_recvmsg() [+ + +]
Author: Ilia Gavrilov <[email protected]>
Date:   Thu May 15 12:20:15 2025 +0000

    llc: fix data loss when reading from a socket in llc_ui_recvmsg()
    
    commit 239af1970bcb039a1551d2c438d113df0010c149 upstream.
    
    For SOCK_STREAM sockets, if user buffer size (len) is less
    than skb size (skb->len), the remaining data from skb
    will be lost after calling kfree_skb().
    
    To fix this, move the statement for partial reading
    above skb deletion.
    
    Found by InfoTeCS on behalf of Linux Verification Center (linuxtesting.org)
    
    Fixes: 30a584d944fb ("[LLX]: SOCK_DGRAM interface fixes")
    Cc: [email protected]
    Signed-off-by: Ilia Gavrilov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
lockdep: Fix wait context check on softirq for PREEMPT_RT [+ + +]
Author: Ryo Takakura <[email protected]>
Date:   Fri Mar 21 07:33:22 2025 -0700

    lockdep: Fix wait context check on softirq for PREEMPT_RT
    
    [ Upstream commit 61c39d8c83e2077f33e0a2c8980a76a7f323f0ce ]
    
    Since:
    
      0c1d7a2c2d32 ("lockdep: Remove softirq accounting on PREEMPT_RT.")
    
    the wait context test for mutex usage within "in softirq context" fails
    as it references @softirq_context:
    
        | wait context tests |
        --------------------------------------------------------------------------
                                       | rcu  | raw  | spin |mutex |
        --------------------------------------------------------------------------
                     in hardirq context:  ok  |  ok  |  ok  |  ok  |
      in hardirq context (not threaded):  ok  |  ok  |  ok  |  ok  |
                     in softirq context:  ok  |  ok  |  ok  |FAILED|
    
    As a fix, add lockdep map for BH disabled section. This fixes the
    issue by letting us catch cases when local_bh_disable() gets called
    with preemption disabled where local_lock doesn't get acquired.
    In the case of "in softirq context" selftest, local_bh_disable() was
    being called with preemption disable as it's early in the boot.
    
    [ boqun: Move the lockdep annotations into __local_bh_*() to avoid false
             positives because of unpaired local_bh_disable() reported by
             Borislav Petkov and Peter Zijlstra, and make bh_lock_map
             only exist for PREEMPT_RT. ]
    
    [ mingo: Restored authorship and improved the bh_lock_map definition. ]
    
    Signed-off-by: Ryo Takakura <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
mailbox: use error ret code of of_parse_phandle_with_args() [+ + +]
Author: Tudor Ambarus <[email protected]>
Date:   Mon Feb 24 08:27:13 2025 +0000

    mailbox: use error ret code of of_parse_phandle_with_args()
    
    [ Upstream commit 24fdd5074b205cfb0ef4cd0751a2d03031455929 ]
    
    In case of error, of_parse_phandle_with_args() returns -EINVAL when the
    passed index is negative, or -ENOENT when the index is for an empty
    phandle. The mailbox core overwrote the error return code with a less
    precise -ENODEV. Use the error returned code from
    of_parse_phandle_with_args().
    
    Signed-off-by: Tudor Ambarus <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe() [+ + +]
Author: Markus Elfring <[email protected]>
Date:   Fri Oct 4 15:50:15 2024 +0200

    media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe()
    
    [ Upstream commit b773530a34df0687020520015057075f8b7b4ac4 ]
    
    An of_node_put(i2c_bus) call was immediately used after a pointer check
    for an of_find_i2c_adapter_by_node() call in this function implementation.
    Thus call such a function only once instead directly before the check.
    
    This issue was transformed by using the Coccinelle software.
    
    Signed-off-by: Markus Elfring <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cx231xx: set device_caps for 417 [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Mon Feb 24 14:13:24 2025 +0100

    media: cx231xx: set device_caps for 417
    
    [ Upstream commit a79efc44b51432490538a55b9753a721f7d3ea42 ]
    
    The video_device for the MPEG encoder did not set device_caps.
    
    Add this, otherwise the video device can't be registered (you get a
    WARN_ON instead).
    
    Not seen before since currently 417 support is disabled, but I found
    this while experimenting with it.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: qcom: camss: csid: Only add TPG v4l2 ctrl if TPG hardware is available [+ + +]
Author: Depeng Shao <[email protected]>
Date:   Mon Jan 13 10:01:28 2025 +0530

    media: qcom: camss: csid: Only add TPG v4l2 ctrl if TPG hardware is available
    
    [ Upstream commit 2f1361f862a68063f37362f1beb400e78e289581 ]
    
    There is no CSID TPG on some SoCs, so the v4l2 ctrl in CSID driver
    shouldn't be registered. Checking the supported TPG modes to indicate
    if the TPG hardware exists or not and only registering v4l2 ctrl for
    CSID only when the TPG hardware is present.
    
    Signed-off-by: Depeng Shao <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Mon Feb 3 11:55:51 2025 +0000

    media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map
    
    [ Upstream commit 990262fdfce24d6055df9711424343d94d829e6a ]
    
    Do not process unknown data types.
    
    Tested-by: Yunke Cao <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: v4l: Memset argument to 0 before calling get_mbus_config pad op [+ + +]
Author: Sakari Ailus <[email protected]>
Date:   Mon Dec 16 10:48:49 2024 +0200

    media: v4l: Memset argument to 0 before calling get_mbus_config pad op
    
    [ Upstream commit 91d6a99acfa5ce9f95ede775074b80f7193bd717 ]
    
    Memset the config argument to get_mbus_config V4L2 sub-device pad
    operation to zero before calling the operation. This ensures the callers
    don't need to bother with it nor the implementations need to set all
    fields that may not be relevant to them.
    
    Signed-off-by: Sakari Ailus <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
memcg: always call cond_resched() after fn() [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Fri May 23 10:21:06 2025 -0700

    memcg: always call cond_resched() after fn()
    
    commit 06717a7b6c86514dbd6ab322e8083ffaa4db5712 upstream.
    
    I am seeing soft lockup on certain machine types when a cgroup OOMs.  This
    is happening because killing the process in certain machine might be very
    slow, which causes the soft lockup and RCU stalls.  This happens usually
    when the cgroup has MANY processes and memory.oom.group is set.
    
    Example I am seeing in real production:
    
           [462012.244552] Memory cgroup out of memory: Killed process 3370438 (crosvm) ....
           ....
           [462037.318059] Memory cgroup out of memory: Killed process 4171372 (adb) ....
           [462037.348314] watchdog: BUG: soft lockup - CPU#64 stuck for 26s! [stat_manager-ag:1618982]
           ....
    
    Quick look at why this is so slow, it seems to be related to serial flush
    for certain machine types.  For all the crashes I saw, the target CPU was
    at console_flush_all().
    
    In the case above, there are thousands of processes in the cgroup, and it
    is soft locking up before it reaches the 1024 limit in the code (which
    would call the cond_resched()).  So, cond_resched() in 1024 blocks is not
    sufficient.
    
    Remove the counter-based conditional rescheduling logic and call
    cond_resched() unconditionally after each task iteration, after fn() is
    called.  This avoids the lockup independently of how slow fn() is.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: ade81479c7dd ("memcg: fix soft lockup in the OOM process")
    Signed-off-by: Breno Leitao <[email protected]>
    Suggested-by: Rik van Riel <[email protected]>
    Acked-by: Shakeel Butt <[email protected]>
    Cc: Michael van der Westhuizen <[email protected]>
    Cc: Usama Arif <[email protected]>
    Cc: Pavel Begunkov <[email protected]>
    Cc: Chen Ridong <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Roman Gushchin <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core [+ + +]
Author: Paul Burton <[email protected]>
Date:   Wed Jan 29 13:32:48 2025 +0100

    MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core
    
    [ Upstream commit 00a134fc2bb4a5f8fada58cf7ff4259149691d64 ]
    
    The pm-cps code has up until now used per-CPU variables indexed by core,
    rather than CPU number, in order to share data amongst sibling CPUs (ie.
    VPs/threads in a core). This works fine for single cluster systems, but
    with multi-cluster systems a core number is no longer unique in the
    system, leading to sharing between CPUs that are not actually siblings.
    
    Avoid this issue by using per-CPU variables as they are more generally
    used - ie. access them using CPU numbers rather than core numbers.
    Sharing between siblings is then accomplished by:
     - Assigning the same pointer to entries for each sibling CPU for the
       nc_asm_enter & ready_count variables, which allow this by virtue of
       being per-CPU pointers.
    
     - Indexing by the first CPU set in a CPUs cpu_sibling_map in the case
       of pm_barrier, for which we can't use the previous approach because
       the per-CPU variable is not a pointer.
    
    Signed-off-by: Paul Burton <[email protected]>
    Signed-off-by: Dragan Mladjenovic <[email protected]>
    Signed-off-by: Aleksandar Rikalo <[email protected]>
    Tested-by: Serge Semin <[email protected]>
    Tested-by: Gregory CLEMENT <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

MIPS: Use arch specific syscall name match function [+ + +]
Author: Bibo Mao <[email protected]>
Date:   Tue Jun 9 10:54:35 2020 +0800

    MIPS: Use arch specific syscall name match function
    
    [ Upstream commit 756276ce78d5624dc814f9d99f7d16c8fd51076e ]
    
    On MIPS system, most of the syscall function name begin with prefix
    sys_. Some syscalls are special such as clone/fork, function name of
    these begin with __sys_. Since scratch registers need be saved in
    stack when these system calls happens.
    
    With ftrace system call method, system call functions are declared with
    SYSCALL_DEFINEx, metadata of the system call symbol name begins with
    sys_. Here mips specific function arch_syscall_match_sym_name is used to
    compare function name between sys_call_table[] and metadata of syscall
    symbol.
    
    Signed-off-by: Bibo Mao <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm/page_alloc.c: avoid infinite retries caused by cpuset race [+ + +]
Author: Tianyang Zhang <[email protected]>
Date:   Wed Apr 16 16:24:05 2025 +0800

    mm/page_alloc.c: avoid infinite retries caused by cpuset race
    
    commit e05741fb10c38d70bbd7ec12b23c197b6355d519 upstream.
    
    __alloc_pages_slowpath has no change detection for ac->nodemask in the
    part of retry path, while cpuset can modify it in parallel.  For some
    processes that set mempolicy as MPOL_BIND, this results ac->nodemask
    changes, and then the should_reclaim_retry will judge based on the latest
    nodemask and jump to retry, while the get_page_from_freelist only
    traverses the zonelist from ac->preferred_zoneref, which selected by a
    expired nodemask and may cause infinite retries in some cases
    
    cpu 64:
    __alloc_pages_slowpath {
            /* ..... */
    retry:
            /* ac->nodemask = 0x1, ac->preferred->zone->nid = 1 */
            if (alloc_flags & ALLOC_KSWAPD)
                    wake_all_kswapds(order, gfp_mask, ac);
            /* cpu 1:
            cpuset_write_resmask
                update_nodemask
                    update_nodemasks_hier
                        update_tasks_nodemask
                            mpol_rebind_task
                             mpol_rebind_policy
                              mpol_rebind_nodemask
                    // mempolicy->nodes has been modified,
                    // which ac->nodemask point to
    
            */
            /* ac->nodemask = 0x3, ac->preferred->zone->nid = 1 */
            if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags,
                                     did_some_progress > 0, &no_progress_loops))
                    goto retry;
    }
    
    Simultaneously starting multiple cpuset01 from LTP can quickly reproduce
    this issue on a multi node server when the maximum memory pressure is
    reached and the swap is enabled
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c33d6c06f60f ("mm, page_alloc: avoid looking up the first zone in a zonelist twice")
    Signed-off-by: Tianyang Zhang <[email protected]>
    Reviewed-by: Suren Baghdasaryan <[email protected]>
    Reviewed-by: Vlastimil Babka <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Brendan Jackman <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Zi Yan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mmc: host: Wait for Vdd to settle on card power off [+ + +]
Author: Erick Shepherd <[email protected]>
Date:   Fri Mar 14 14:50:21 2025 -0500

    mmc: host: Wait for Vdd to settle on card power off
    
    [ Upstream commit 31e75ed964582257f59156ce6a42860e1ae4cc39 ]
    
    The SD spec version 6.0 section 6.4.1.5 requires that Vdd must be
    lowered to less than 0.5V for a minimum of 1 ms when powering off a
    card. Increase wait to 15 ms so that voltage has time to drain down
    to 0.5V and cards can power off correctly. Issues with voltage drain
    time were only observed on Apollo Lake and Bay Trail host controllers
    so this fix is limited to those devices.
    
    Signed-off-by: Erick Shepherd <[email protected]>
    Acked-by: Adrian Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mmc: sdhci: Disable SD card clock before changing parameters [+ + +]
Author: Erick Shepherd <[email protected]>
Date:   Tue Feb 11 15:46:45 2025 -0600

    mmc: sdhci: Disable SD card clock before changing parameters
    
    [ Upstream commit fb3bbc46c94f261b6156ee863c1b06c84cf157dc ]
    
    Per the SD Host Controller Simplified Specification v4.20 §3.2.3, change
    the SD card clock parameters only after first disabling the external card
    clock. Doing this fixes a spurious clock pulse on Baytrail and Apollo Lake
    SD controllers which otherwise breaks voltage switching with a specific
    Swissbit SD card.
    
    Signed-off-by: Kyle Roeschley <[email protected]>
    Signed-off-by: Brad Mouring <[email protected]>
    Signed-off-by: Erick Shepherd <[email protected]>
    Acked-by: Adrian Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mana: fix warning in the writer of client oob [+ + +]
Author: Konstantin Taranov <[email protected]>
Date:   Mon Jan 20 09:27:14 2025 -0800

    net/mana: fix warning in the writer of client oob
    
    [ Upstream commit 5ec7e1c86c441c46a374577bccd9488abea30037 ]
    
    Do not warn on missing pad_data when oob is in sgl.
    
    Signed-off-by: Konstantin Taranov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Shiraz Saleem <[email protected]>
    Reviewed-by: Long Li <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx4_core: Avoid impossible mlx4_db_alloc() order value [+ + +]
Author: Kees Cook <[email protected]>
Date:   Mon Feb 10 09:45:05 2025 -0800

    net/mlx4_core: Avoid impossible mlx4_db_alloc() order value
    
    [ Upstream commit 4a6f18f28627e121bd1f74b5fcc9f945d6dbeb1e ]
    
    GCC can see that the value range for "order" is capped, but this leads
    it to consider that it might be negative, leading to a false positive
    warning (with GCC 15 with -Warray-bounds -fdiagnostics-details):
    
    ../drivers/net/ethernet/mellanox/mlx4/alloc.c:691:47: error: array subscript -1 is below array bounds of 'long unsigned int *[2]' [-Werror=array-bounds=]
      691 |                 i = find_first_bit(pgdir->bits[o], MLX4_DB_PER_PAGE >> o);
          |                                    ~~~~~~~~~~~^~~
      'mlx4_alloc_db_from_pgdir': events 1-2
      691 |                 i = find_first_bit(pgdir->bits[o], MLX4_DB_PER_PAGE >> o);                        |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                     |                         |                                                   |                     |                         (2) out of array bounds here
          |                     (1) when the condition is evaluated to true                             In file included from ../drivers/net/ethernet/mellanox/mlx4/mlx4.h:53,
                     from ../drivers/net/ethernet/mellanox/mlx4/alloc.c:42:
    ../include/linux/mlx4/device.h:664:33: note: while referencing 'bits'
      664 |         unsigned long          *bits[2];
          |                                 ^~~~
    
    Switch the argument to unsigned int, which removes the compiler needing
    to consider negative values.
    
    Signed-off-by: Kees Cook <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Apply rate-limiting to high temperature warning [+ + +]
Author: Shahar Shitrit <[email protected]>
Date:   Thu Feb 13 11:46:38 2025 +0200

    net/mlx5: Apply rate-limiting to high temperature warning
    
    [ Upstream commit 9dd3d5d258aceb37bdf09c8b91fa448f58ea81f0 ]
    
    Wrap the high temperature warning in a temperature event with
    a call to net_ratelimit() to prevent flooding the kernel log
    with repeated warning messages when temperature exceeds the
    threshold multiple times within a short duration.
    
    Signed-off-by: Shahar Shitrit <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Mateusz Polchlopek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Avoid report two health errors on same syndrome [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Wed Feb 26 14:25:40 2025 +0200

    net/mlx5: Avoid report two health errors on same syndrome
    
    [ Upstream commit b5d7b2f04ebcff740f44ef4d295b3401aeb029f4 ]
    
    In case health counter has not increased for few polling intervals, miss
    counter will reach max misses threshold and health report will be
    triggered for FW health reporter. In case syndrome found on same health
    poll another health report will be triggered.
    
    Avoid two health reports on same syndrome by marking this syndrome as
    already known.
    
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Shahar Shitrit <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB [+ + +]
Author: Alexei Lazar <[email protected]>
Date:   Sun Feb 9 12:17:15 2025 +0200

    net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB
    
    [ Upstream commit 95b9606b15bb3ce1198d28d2393dd0e1f0a5f3e9 ]
    
    Current loopback test validation ignores non-linear SKB case in
    the SKB access, which can lead to failures in scenarios such as
    when HW GRO is enabled.
    Linearize the SKB so both cases will be handled.
    
    Signed-off-by: Alexei Lazar <[email protected]>
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Modify LSB bitmask in temperature event to include only the first bit [+ + +]
Author: Shahar Shitrit <[email protected]>
Date:   Thu Feb 13 11:46:40 2025 +0200

    net/mlx5: Modify LSB bitmask in temperature event to include only the first bit
    
    [ Upstream commit 633f16d7e07c129a36b882c05379e01ce5bdb542 ]
    
    In the sensor_count field of the MTEWE register, bits 1-62 are
    supported only for unmanaged switches, not for NICs, and bit 63
    is reserved for internal use.
    
    To prevent confusing output that may include set bits that are
    not relevant to NIC sensors, we update the bitmask to retain only
    the first bit, which corresponds to the sensor ASIC.
    
    Signed-off-by: Shahar Shitrit <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Mateusz Polchlopek <[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: reduce rep rxq depth to 256 for ECPF [+ + +]
Author: William Tu <[email protected]>
Date:   Sun Feb 9 12:17:08 2025 +0200

    net/mlx5e: reduce rep rxq depth to 256 for ECPF
    
    [ Upstream commit b9cc8f9d700867aaa77aedddfea85e53d5e5d584 ]
    
    By experiments, a single queue representor netdev consumes kernel
    memory around 2.8MB, and 1.8MB out of the 2.8MB is due to page
    pool for the RXQ. Scaling to a thousand representors consumes 2.8GB,
    which becomes a memory pressure issue for embedded devices such as
    BlueField-2 16GB / BlueField-3 32GB memory.
    
    Since representor netdevs mostly handles miss traffic, and ideally,
    most of the traffic will be offloaded, reduce the default non-uplink
    rep netdev's RXQ default depth from 1024 to 256 if mdev is ecpf eswitch
    manager. This saves around 1MB of memory per regular RQ,
    (1024 - 256) * 2KB, allocated from page pool.
    
    With rxq depth of 256, the netlink page pool tool reports
    $./tools/net/ynl/cli.py --spec Documentation/netlink/specs/netdev.yaml \
             --dump page-pool-get
     {'id': 277,
      'ifindex': 9,
      'inflight': 128,
      'inflight-mem': 786432,
      'napi-id': 775}]
    
    This is due to mtu 1500 + headroom consumes half pages, so 256 rxq
    entries consumes around 128 pages (thus create a page pool with
    size 128), shown above at inflight.
    
    Note that each netdev has multiple types of RQs, including
    Regular RQ, XSK, PTP, Drop, Trap RQ. Since non-uplink representor
    only supports regular rq, this patch only changes the regular RQ's
    default depth.
    
    Signed-off-by: William Tu <[email protected]>
    Reviewed-by: Bodong Wang <[email protected]>
    Reviewed-by: Saeed Mahameed <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Michal Swiatkowski <[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: set the tx_queue_len for pfifo_fast [+ + +]
Author: William Tu <[email protected]>
Date:   Sun Feb 9 12:17:09 2025 +0200

    net/mlx5e: set the tx_queue_len for pfifo_fast
    
    [ Upstream commit a38cc5706fb9f7dc4ee3a443f61de13ce1e410ed ]
    
    By default, the mq netdev creates a pfifo_fast qdisc. On a
    system with 16 core, the pfifo_fast with 3 bands consumes
    16 * 3 * 8 (size of pointer) * 1024 (default tx queue len)
    = 393KB. The patch sets the tx qlen to representor default
    value, 128 (1<<MLX5E_REP_PARAMS_DEF_LOG_SQ_SIZE), which
    consumes 16 * 3 * 8 * 128 = 49KB, saving 344KB for each
    representor at ECPF.
    
    Signed-off-by: William Tu <[email protected]>
    Reviewed-by: Daniel Jurgens <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done [+ + +]
Author: Wang Liang <[email protected]>
Date:   Tue May 20 18:14:04 2025 +0800

    net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done
    
    [ Upstream commit e279024617134c94fd3e37470156534d5f2b3472 ]
    
    Syzbot reported a slab-use-after-free with the following call trace:
    
      ==================================================================
      BUG: KASAN: slab-use-after-free in tipc_aead_encrypt_done+0x4bd/0x510 net/tipc/crypto.c:840
      Read of size 8 at addr ffff88807a733000 by task kworker/1:0/25
    
      Call Trace:
       kasan_report+0xd9/0x110 mm/kasan/report.c:601
       tipc_aead_encrypt_done+0x4bd/0x510 net/tipc/crypto.c:840
       crypto_request_complete include/crypto/algapi.h:266
       aead_request_complete include/crypto/internal/aead.h:85
       cryptd_aead_crypt+0x3b8/0x750 crypto/cryptd.c:772
       crypto_request_complete include/crypto/algapi.h:266
       cryptd_queue_worker+0x131/0x200 crypto/cryptd.c:181
       process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
    
      Allocated by task 8355:
       kzalloc_noprof include/linux/slab.h:778
       tipc_crypto_start+0xcc/0x9e0 net/tipc/crypto.c:1466
       tipc_init_net+0x2dd/0x430 net/tipc/core.c:72
       ops_init+0xb9/0x650 net/core/net_namespace.c:139
       setup_net+0x435/0xb40 net/core/net_namespace.c:343
       copy_net_ns+0x2f0/0x670 net/core/net_namespace.c:508
       create_new_namespaces+0x3ea/0xb10 kernel/nsproxy.c:110
       unshare_nsproxy_namespaces+0xc0/0x1f0 kernel/nsproxy.c:228
       ksys_unshare+0x419/0x970 kernel/fork.c:3323
       __do_sys_unshare kernel/fork.c:3394
    
      Freed by task 63:
       kfree+0x12a/0x3b0 mm/slub.c:4557
       tipc_crypto_stop+0x23c/0x500 net/tipc/crypto.c:1539
       tipc_exit_net+0x8c/0x110 net/tipc/core.c:119
       ops_exit_list+0xb0/0x180 net/core/net_namespace.c:173
       cleanup_net+0x5b7/0xbf0 net/core/net_namespace.c:640
       process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
    
    After freed the tipc_crypto tx by delete namespace, tipc_aead_encrypt_done
    may still visit it in cryptd_queue_worker workqueue.
    
    I reproduce this issue by:
      ip netns add ns1
      ip link add veth1 type veth peer name veth2
      ip link set veth1 netns ns1
      ip netns exec ns1 tipc bearer enable media eth dev veth1
      ip netns exec ns1 tipc node set key this_is_a_master_key master
      ip netns exec ns1 tipc bearer disable media eth dev veth1
      ip netns del ns1
    
    The key of reproduction is that, simd_aead_encrypt is interrupted, leading
    to crypto_simd_usable() return false. Thus, the cryptd_queue_worker is
    triggered, and the tipc_crypto tx will be visited.
    
      tipc_disc_timeout
        tipc_bearer_xmit_skb
          tipc_crypto_xmit
            tipc_aead_encrypt
              crypto_aead_encrypt
                // encrypt()
                simd_aead_encrypt
                  // crypto_simd_usable() is false
                  child = &ctx->cryptd_tfm->base;
    
      simd_aead_encrypt
        crypto_aead_encrypt
          // encrypt()
          cryptd_aead_encrypt_enqueue
            cryptd_aead_enqueue
              cryptd_enqueue_request
                // trigger cryptd_queue_worker
                queue_work_on(smp_processor_id(), cryptd_wq, &cpu_queue->work)
    
    Fix this by holding net reference count before encrypt.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=55c12726619ff85ce1f6
    Fixes: fc1b6d6de220 ("tipc: introduce TIPC encryption & authentication")
    Signed-off-by: Wang Liang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: dwmac-sun8i: Use parsed internal PHY address instead of 1 [+ + +]
Author: Paul Kocialkowski <[email protected]>
Date:   Mon May 19 18:49:36 2025 +0200

    net: dwmac-sun8i: Use parsed internal PHY address instead of 1
    
    [ Upstream commit 47653e4243f2b0a26372e481ca098936b51ec3a8 ]
    
    While the MDIO address of the internal PHY on Allwinner sun8i chips is
    generally 1, of_mdio_parse_addr is used to cleanly parse the address
    from the device-tree instead of hardcoding it.
    
    A commit reworking the code ditched the parsed value and hardcoded the
    value 1 instead, which didn't really break anything but is more fragile
    and not future-proof.
    
    Restore the initial behavior using the parsed address returned from the
    helper.
    
    Fixes: 634db83b8265 ("net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs")
    Signed-off-by: Paul Kocialkowski <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Acked-by: Corentin LABBE <[email protected]>
    Tested-by: Corentin LABBE <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: enetc: refactor bulk flipping of RX buffers to separate function [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Thu Apr 17 15:00:04 2025 +0300

    net: enetc: refactor bulk flipping of RX buffers to separate function
    
    [ Upstream commit 1d587faa5be7e9785b682cc5f58ba8f4100c13ea ]
    
    This small snippet of code ensures that we do something with the array
    of RX software buffer descriptor elements after passing the skb to the
    stack. In this case, we see if the other half of the page is reusable,
    and if so, we "turn around" the buffers, making them directly usable by
    enetc_refill_rx_ring() without going to enetc_new_page().
    
    We will need to perform this kind of buffer flipping from a new code
    path, i.e. from XDP_PASS. Currently, enetc_build_skb() does it there
    buffer by buffer, but in a subsequent change we will stop using
    enetc_build_skb() for XDP_PASS.
    
    Signed-off-by: Vladimir Oltean <[email protected]>
    Reviewed-by: Wei Fang <[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: ti: cpsw_new: populate netdev of_node [+ + +]
Author: Alexander Sverdlin <[email protected]>
Date:   Mon Mar 3 08:46:57 2025 +0100

    net: ethernet: ti: cpsw_new: populate netdev of_node
    
    [ Upstream commit 7ff1c88fc89688c27f773ba956f65f0c11367269 ]
    
    So that of_find_net_device_by_node() can find CPSW ports and other DSA
    switches can be stacked downstream. Tested in conjunction with KSZ8873.
    
    Reviewed-by: Siddharth Vadapalli <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Signed-off-by: Alexander Sverdlin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: pktgen: fix access outside of user given buffer in pktgen_thread_write() [+ + +]
Author: Peter Seiderer <[email protected]>
Date:   Wed Feb 19 09:45:27 2025 +0100

    net: pktgen: fix access outside of user given buffer in pktgen_thread_write()
    
    [ Upstream commit 425e64440ad0a2f03bdaf04be0ae53dededbaa77 ]
    
    Honour the user given buffer size for the strn_len() calls (otherwise
    strn_len() will access memory outside of the user given buffer).
    
    Signed-off-by: Peter Seiderer <[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: pktgen: fix mpls maximum labels list parsing [+ + +]
Author: Peter Seiderer <[email protected]>
Date:   Thu Feb 27 14:56:00 2025 +0100

    net: pktgen: fix mpls maximum labels list parsing
    
    [ Upstream commit 2b15a0693f70d1e8119743ee89edbfb1271b3ea8 ]
    
    Fix mpls maximum labels list parsing up to MAX_MPLS_LABELS entries (instead
    of up to MAX_MPLS_LABELS - 1).
    
    Addresses the following:
    
            $ echo "mpls 00000f00,00000f01,00000f02,00000f03,00000f04,00000f05,00000f06,00000f07,00000f08,00000f09,00000f0a,00000f0b,00000f0c,00000f0d,00000f0e,00000f0f" > /proc/net/pktgen/lo\@0
            -bash: echo: write error: Argument list too long
    
    Signed-off-by: Peter Seiderer <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: xgene-v2: remove incorrect ACPI_PTR annotation [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Feb 25 17:33:33 2025 +0100

    net: xgene-v2: remove incorrect ACPI_PTR annotation
    
    [ Upstream commit 01358e8fe922f716c05d7864ac2213b2440026e7 ]
    
    Building with W=1 shows a warning about xge_acpi_match being unused when
    CONFIG_ACPI is disabled:
    
    drivers/net/ethernet/apm/xgene-v2/main.c:723:36: error: unused variable 'xge_acpi_match' [-Werror,-Wunused-const-variable]
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net_sched: hfsc: Address reentrant enqueue adding class to eltree twice [+ + +]
Author: Pedro Tammela <[email protected]>
Date:   Thu May 22 15:14:47 2025 -0300

    net_sched: hfsc: Address reentrant enqueue adding class to eltree twice
    
    commit ac9fe7dd8e730a103ae4481147395cc73492d786 upstream.
    
    Savino says:
        "We are writing to report that this recent patch
        (141d34391abbb315d68556b7c67ad97885407547) [1]
        can be bypassed, and a UAF can still occur when HFSC is utilized with
        NETEM.
    
        The patch only checks the cl->cl_nactive field to determine whether
        it is the first insertion or not [2], but this field is only
        incremented by init_vf [3].
    
        By using HFSC_RSC (which uses init_ed) [4], it is possible to bypass the
        check and insert the class twice in the eltree.
        Under normal conditions, this would lead to an infinite loop in
        hfsc_dequeue for the reasons we already explained in this report [5].
    
        However, if TBF is added as root qdisc and it is configured with a
        very low rate,
        it can be utilized to prevent packets from being dequeued.
        This behavior can be exploited to perform subsequent insertions in the
        HFSC eltree and cause a UAF."
    
    To fix both the UAF and the infinite loop, with netem as an hfsc child,
    check explicitly in hfsc_enqueue whether the class is already in the eltree
    whenever the HFSC_RSC flag is set.
    
    [1] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=141d34391abbb315d68556b7c67ad97885407547
    [2] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L1572
    [3] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L677
    [4] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L1574
    [5] https://lore.kernel.org/netdev/8DuRWwfqjoRDLDmBMlIfbrsZg9Gx50DHJc1ilxsEBNe2D6NMoigR_eIRIG0LOjMc3r10nUUZtArXx4oZBIdUfZQrwjcQhdinnMis_0G7VEk=@willsroot.io/T/#u
    
    Fixes: 37d9cf1a3ce3 ("sched: Fix detection of empty queues in child qdiscs")
    Reported-by: Savino Dicanosa <[email protected]>
    Reported-by: William Liu <[email protected]>
    Acked-by: Jamal Hadi Salim <[email protected]>
    Tested-by: Victor Nogueira <[email protected]>
    Signed-off-by: Pedro Tammela <[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: conntrack: Bound nf_conntrack sysctl writes [+ + +]
Author: Nicolas Bouchinet <[email protected]>
Date:   Wed Jan 29 18:06:30 2025 +0100

    netfilter: conntrack: Bound nf_conntrack sysctl writes
    
    [ Upstream commit 8b6861390ffee6b8ed78b9395e3776c16fec6579 ]
    
    nf_conntrack_max and nf_conntrack_expect_max sysctls were authorized to
    be written any negative value, which would then be stored in the
    unsigned int variables nf_conntrack_max and nf_ct_expect_max variables.
    
    While the do_proc_dointvec_conv function is supposed to limit writing
    handled by proc_dointvec proc_handler to INT_MAX. Such a negative value
    being written in an unsigned int leads to a very high value, exceeding
    this limit.
    
    Moreover, the nf_conntrack_expect_max sysctl documentation specifies the
    minimum value is 1.
    
    The proc_handlers have thus been updated to proc_dointvec_minmax in
    order to specify the following write bounds :
    
    * Bound nf_conntrack_max sysctl writings between SYSCTL_ZERO
      and SYSCTL_INT_MAX.
    
    * Bound nf_conntrack_expect_max sysctl writings between SYSCTL_ONE
      and SYSCTL_INT_MAX as defined in the sysctl documentation.
    
    With this patch applied, sysctl writes outside the defined in the bound
    will thus lead to a write error :
    
    ```
    sysctl -w net.netfilter.nf_conntrack_expect_max=-1
    sysctl: setting key "net.netfilter.nf_conntrack_expect_max": Invalid argument
    ```
    
    Signed-off-by: Nicolas Bouchinet <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nfs: don't share pNFS DS connections between net namespaces [+ + +]
Author: Jeff Layton <[email protected]>
Date:   Thu Apr 10 16:42:03 2025 -0400

    nfs: don't share pNFS DS connections between net namespaces
    
    [ Upstream commit 6b9785dc8b13d9fb75ceec8cf4ea7ec3f3b1edbc ]
    
    Currently, different NFS clients can share the same DS connections, even
    when they are in different net namespaces. If a containerized client
    creates a DS connection, another container can find and use it. When the
    first client exits, the connection will close which can lead to stalls
    in other clients.
    
    Add a net namespace pointer to struct nfs4_pnfs_ds, and compare those
    value to the caller's netns in _data_server_lookup_locked() when
    searching for a nfs4_pnfs_ds to match.
    
    Reported-by: Omar Sandoval <[email protected]>
    Reported-by: Sargun Dillon <[email protected]>
    Closes: https://lore.kernel.org/linux-nfs/Z_ArpQC_vREh_hEA@telecaster/
    Tested-by: Sargun Dillon <[email protected]>
    Signed-off-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4: Check for delegation validity in nfs_start_delegation_return_locked() [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Thu Mar 27 19:20:53 2025 -0400

    NFSv4: Check for delegation validity in nfs_start_delegation_return_locked()
    
    [ Upstream commit 9e8f324bd44c1fe026b582b75213de4eccfa1163 ]
    
    Check that the delegation is still attached after taking the spin lock
    in nfs_start_delegation_return_locked().
    
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

NFSv4: Treat ENETUNREACH errors as fatal for state recovery [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Mon Mar 24 20:35:33 2025 -0400

    NFSv4: Treat ENETUNREACH errors as fatal for state recovery
    
    [ Upstream commit 0af5fb5ed3d2fd9e110c6112271f022b744a849a ]
    
    If a containerised process is killed and causes an ENETUNREACH or
    ENETDOWN error to be propagated to the state manager, then mark the
    nfs_client as being dead so that we don't loop in functions that are
    expecting recovery to succeed.
    
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme-pci: add NVME_QUIRK_NO_DEEPEST_PS quirk for SOLIDIGM P44 Pro [+ + +]
Author: Ilya Guterman <[email protected]>
Date:   Sat May 10 19:21:30 2025 +0900

    nvme-pci: add NVME_QUIRK_NO_DEEPEST_PS quirk for SOLIDIGM P44 Pro
    
    [ Upstream commit e765bf89f42b5c82132a556b630affeb82b2a21f ]
    
    This commit adds the NVME_QUIRK_NO_DEEPEST_PS quirk for device
    [126f:2262], which belongs to device SOLIDIGM P44 Pro SSDPFKKW020X7
    
    The device frequently have trouble exiting the deepest power state (5),
    resulting in the entire disk being unresponsive.
    
    Verified by setting nvme_core.default_ps_max_latency_us=10000 and
    observing the expected behavior.
    
    Signed-off-by: Ilya Guterman <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmet-tcp: don't restore null sk_state_change [+ + +]
Author: Alistair Francis <[email protected]>
Date:   Wed Apr 23 16:06:21 2025 +1000

    nvmet-tcp: don't restore null sk_state_change
    
    [ Upstream commit 46d22b47df2741996af277a2838b95f130436c13 ]
    
    queue->state_change is set as part of nvmet_tcp_set_queue_sock(), but if
    the TCP connection isn't established when nvmet_tcp_set_queue_sock() is
    called then queue->state_change isn't set and sock->sk->sk_state_change
    isn't replaced.
    
    As such we don't need to restore sock->sk->sk_state_change if
    queue->state_change is NULL.
    
    This avoids NULL pointer dereferences such as this:
    
    [  286.462026][    C0] BUG: kernel NULL pointer dereference, address: 0000000000000000
    [  286.462814][    C0] #PF: supervisor instruction fetch in kernel mode
    [  286.463796][    C0] #PF: error_code(0x0010) - not-present page
    [  286.464392][    C0] PGD 8000000140620067 P4D 8000000140620067 PUD 114201067 PMD 0
    [  286.465086][    C0] Oops: Oops: 0010 [#1] SMP KASAN PTI
    [  286.465559][    C0] CPU: 0 UID: 0 PID: 1628 Comm: nvme Not tainted 6.15.0-rc2+ #11 PREEMPT(voluntary)
    [  286.466393][    C0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
    [  286.467147][    C0] RIP: 0010:0x0
    [  286.467420][    C0] Code: Unable to access opcode bytes at 0xffffffffffffffd6.
    [  286.467977][    C0] RSP: 0018:ffff8883ae008580 EFLAGS: 00010246
    [  286.468425][    C0] RAX: 0000000000000000 RBX: ffff88813fd34100 RCX: ffffffffa386cc43
    [  286.469019][    C0] RDX: 1ffff11027fa68b6 RSI: 0000000000000008 RDI: ffff88813fd34100
    [  286.469545][    C0] RBP: ffff88813fd34160 R08: 0000000000000000 R09: ffffed1027fa682c
    [  286.470072][    C0] R10: ffff88813fd34167 R11: 0000000000000000 R12: ffff88813fd344c3
    [  286.470585][    C0] R13: ffff88813fd34112 R14: ffff88813fd34aec R15: ffff888132cdd268
    [  286.471070][    C0] FS:  00007fe3c04c7d80(0000) GS:ffff88840743f000(0000) knlGS:0000000000000000
    [  286.471644][    C0] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  286.472543][    C0] CR2: ffffffffffffffd6 CR3: 000000012daca000 CR4: 00000000000006f0
    [  286.473500][    C0] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  286.474467][    C0] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
    [  286.475453][    C0] Call Trace:
    [  286.476102][    C0]  <IRQ>
    [  286.476719][    C0]  tcp_fin+0x2bb/0x440
    [  286.477429][    C0]  tcp_data_queue+0x190f/0x4e60
    [  286.478174][    C0]  ? __build_skb_around+0x234/0x330
    [  286.478940][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.479659][    C0]  ? __pfx_tcp_data_queue+0x10/0x10
    [  286.480431][    C0]  ? tcp_try_undo_loss+0x640/0x6c0
    [  286.481196][    C0]  ? seqcount_lockdep_reader_access.constprop.0+0x82/0x90
    [  286.482046][    C0]  ? kvm_clock_get_cycles+0x14/0x30
    [  286.482769][    C0]  ? ktime_get+0x66/0x150
    [  286.483433][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.484146][    C0]  tcp_rcv_established+0x6e4/0x2050
    [  286.484857][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.485523][    C0]  ? ipv4_dst_check+0x160/0x2b0
    [  286.486203][    C0]  ? __pfx_tcp_rcv_established+0x10/0x10
    [  286.486917][    C0]  ? lock_release+0x217/0x2c0
    [  286.487595][    C0]  tcp_v4_do_rcv+0x4d6/0x9b0
    [  286.488279][    C0]  tcp_v4_rcv+0x2af8/0x3e30
    [  286.488904][    C0]  ? raw_local_deliver+0x51b/0xad0
    [  286.489551][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.490198][    C0]  ? __pfx_tcp_v4_rcv+0x10/0x10
    [  286.490813][    C0]  ? __pfx_raw_local_deliver+0x10/0x10
    [  286.491487][    C0]  ? __pfx_nf_confirm+0x10/0x10 [nf_conntrack]
    [  286.492275][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.492900][    C0]  ip_protocol_deliver_rcu+0x8f/0x370
    [  286.493579][    C0]  ip_local_deliver_finish+0x297/0x420
    [  286.494268][    C0]  ip_local_deliver+0x168/0x430
    [  286.494867][    C0]  ? __pfx_ip_local_deliver+0x10/0x10
    [  286.495498][    C0]  ? __pfx_ip_local_deliver_finish+0x10/0x10
    [  286.496204][    C0]  ? ip_rcv_finish_core+0x19a/0x1f20
    [  286.496806][    C0]  ? lock_release+0x217/0x2c0
    [  286.497414][    C0]  ip_rcv+0x455/0x6e0
    [  286.497945][    C0]  ? __pfx_ip_rcv+0x10/0x10
    [  286.498550][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.499137][    C0]  ? __pfx_ip_rcv_finish+0x10/0x10
    [  286.499763][    C0]  ? lock_release+0x217/0x2c0
    [  286.500327][    C0]  ? dl_scaled_delta_exec+0xd1/0x2c0
    [  286.500922][    C0]  ? __pfx_ip_rcv+0x10/0x10
    [  286.501480][    C0]  __netif_receive_skb_one_core+0x166/0x1b0
    [  286.502173][    C0]  ? __pfx___netif_receive_skb_one_core+0x10/0x10
    [  286.502903][    C0]  ? lock_acquire+0x2b2/0x310
    [  286.503487][    C0]  ? process_backlog+0x372/0x1350
    [  286.504087][    C0]  ? lock_release+0x217/0x2c0
    [  286.504642][    C0]  process_backlog+0x3b9/0x1350
    [  286.505214][    C0]  ? process_backlog+0x372/0x1350
    [  286.505779][    C0]  __napi_poll.constprop.0+0xa6/0x490
    [  286.506363][    C0]  net_rx_action+0x92e/0xe10
    [  286.506889][    C0]  ? __pfx_net_rx_action+0x10/0x10
    [  286.507437][    C0]  ? timerqueue_add+0x1f0/0x320
    [  286.507977][    C0]  ? sched_clock_cpu+0x68/0x540
    [  286.508492][    C0]  ? lock_acquire+0x2b2/0x310
    [  286.509043][    C0]  ? kvm_sched_clock_read+0xd/0x20
    [  286.509607][    C0]  ? handle_softirqs+0x1aa/0x7d0
    [  286.510187][    C0]  handle_softirqs+0x1f2/0x7d0
    [  286.510754][    C0]  ? __pfx_handle_softirqs+0x10/0x10
    [  286.511348][    C0]  ? irqtime_account_irq+0x181/0x290
    [  286.511937][    C0]  ? __dev_queue_xmit+0x85d/0x3450
    [  286.512510][    C0]  do_softirq.part.0+0x89/0xc0
    [  286.513100][    C0]  </IRQ>
    [  286.513548][    C0]  <TASK>
    [  286.513953][    C0]  __local_bh_enable_ip+0x112/0x140
    [  286.514522][    C0]  ? __dev_queue_xmit+0x85d/0x3450
    [  286.515072][    C0]  __dev_queue_xmit+0x872/0x3450
    [  286.515619][    C0]  ? nft_do_chain+0xe16/0x15b0 [nf_tables]
    [  286.516252][    C0]  ? __pfx___dev_queue_xmit+0x10/0x10
    [  286.516817][    C0]  ? selinux_ip_postroute+0x43c/0xc50
    [  286.517433][    C0]  ? __pfx_selinux_ip_postroute+0x10/0x10
    [  286.518061][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.518606][    C0]  ? ip_output+0x164/0x4a0
    [  286.519149][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.519671][    C0]  ? ip_finish_output2+0x17d5/0x1fb0
    [  286.520258][    C0]  ip_finish_output2+0xb4b/0x1fb0
    [  286.520787][    C0]  ? __pfx_ip_finish_output2+0x10/0x10
    [  286.521355][    C0]  ? __ip_finish_output+0x15d/0x750
    [  286.521890][    C0]  ip_output+0x164/0x4a0
    [  286.522372][    C0]  ? __pfx_ip_output+0x10/0x10
    [  286.522872][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.523402][    C0]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
    [  286.524031][    C0]  ? __pfx_ip_finish_output+0x10/0x10
    [  286.524605][    C0]  ? __ip_queue_xmit+0x999/0x2260
    [  286.525200][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.525744][    C0]  ? ipv4_dst_check+0x16a/0x2b0
    [  286.526279][    C0]  ? lock_release+0x217/0x2c0
    [  286.526793][    C0]  __ip_queue_xmit+0x1883/0x2260
    [  286.527324][    C0]  ? __skb_clone+0x54c/0x730
    [  286.527827][    C0]  __tcp_transmit_skb+0x209b/0x37a0
    [  286.528374][    C0]  ? __pfx___tcp_transmit_skb+0x10/0x10
    [  286.528952][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.529472][    C0]  ? seqcount_lockdep_reader_access.constprop.0+0x82/0x90
    [  286.530152][    C0]  ? trace_hardirqs_on+0x12/0x120
    [  286.530691][    C0]  tcp_write_xmit+0xb81/0x88b0
    [  286.531224][    C0]  ? mod_memcg_state+0x4d/0x60
    [  286.531736][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.532253][    C0]  __tcp_push_pending_frames+0x90/0x320
    [  286.532826][    C0]  tcp_send_fin+0x141/0xb50
    [  286.533352][    C0]  ? __pfx_tcp_send_fin+0x10/0x10
    [  286.533908][    C0]  ? __local_bh_enable_ip+0xab/0x140
    [  286.534495][    C0]  inet_shutdown+0x243/0x320
    [  286.535077][    C0]  nvme_tcp_alloc_queue+0xb3b/0x2590 [nvme_tcp]
    [  286.535709][    C0]  ? do_raw_spin_lock+0x129/0x260
    [  286.536314][    C0]  ? __pfx_nvme_tcp_alloc_queue+0x10/0x10 [nvme_tcp]
    [  286.536996][    C0]  ? do_raw_spin_unlock+0x54/0x1e0
    [  286.537550][    C0]  ? _raw_spin_unlock+0x29/0x50
    [  286.538127][    C0]  ? do_raw_spin_lock+0x129/0x260
    [  286.538664][    C0]  ? __pfx_do_raw_spin_lock+0x10/0x10
    [  286.539249][    C0]  ? nvme_tcp_alloc_admin_queue+0xd5/0x340 [nvme_tcp]
    [  286.539892][    C0]  ? __wake_up+0x40/0x60
    [  286.540392][    C0]  nvme_tcp_alloc_admin_queue+0xd5/0x340 [nvme_tcp]
    [  286.541047][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.541589][    C0]  nvme_tcp_setup_ctrl+0x8b/0x7a0 [nvme_tcp]
    [  286.542254][    C0]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
    [  286.542887][    C0]  ? __pfx_nvme_tcp_setup_ctrl+0x10/0x10 [nvme_tcp]
    [  286.543568][    C0]  ? trace_hardirqs_on+0x12/0x120
    [  286.544166][    C0]  ? _raw_spin_unlock_irqrestore+0x35/0x60
    [  286.544792][    C0]  ? nvme_change_ctrl_state+0x196/0x2e0 [nvme_core]
    [  286.545477][    C0]  nvme_tcp_create_ctrl+0x839/0xb90 [nvme_tcp]
    [  286.546126][    C0]  nvmf_dev_write+0x3db/0x7e0 [nvme_fabrics]
    [  286.546775][    C0]  ? rw_verify_area+0x69/0x520
    [  286.547334][    C0]  vfs_write+0x218/0xe90
    [  286.547854][    C0]  ? do_syscall_64+0x9f/0x190
    [  286.548408][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.549037][    C0]  ? syscall_exit_to_user_mode+0x93/0x280
    [  286.549659][    C0]  ? __pfx_vfs_write+0x10/0x10
    [  286.550259][    C0]  ? do_syscall_64+0x9f/0x190
    [  286.550840][    C0]  ? syscall_exit_to_user_mode+0x8e/0x280
    [  286.551516][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.552180][    C0]  ? syscall_exit_to_user_mode+0x93/0x280
    [  286.552834][    C0]  ? ksys_read+0xf5/0x1c0
    [  286.553386][    C0]  ? __pfx_ksys_read+0x10/0x10
    [  286.553964][    C0]  ksys_write+0xf5/0x1c0
    [  286.554499][    C0]  ? __pfx_ksys_write+0x10/0x10
    [  286.555072][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.555698][    C0]  ? syscall_exit_to_user_mode+0x93/0x280
    [  286.556319][    C0]  ? do_syscall_64+0x54/0x190
    [  286.556866][    C0]  do_syscall_64+0x93/0x190
    [  286.557420][    C0]  ? rcu_read_unlock+0x17/0x60
    [  286.557986][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.558526][    C0]  ? lock_release+0x217/0x2c0
    [  286.559087][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.559659][    C0]  ? count_memcg_events.constprop.0+0x4a/0x60
    [  286.560476][    C0]  ? exc_page_fault+0x7a/0x110
    [  286.561064][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.561647][    C0]  ? lock_release+0x217/0x2c0
    [  286.562257][    C0]  ? do_user_addr_fault+0x171/0xa00
    [  286.562839][    C0]  ? do_user_addr_fault+0x4a2/0xa00
    [  286.563453][    C0]  ? irqentry_exit_to_user_mode+0x84/0x270
    [  286.564112][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.564677][    C0]  ? irqentry_exit_to_user_mode+0x84/0x270
    [  286.565317][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.565922][    C0]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  286.566542][    C0] RIP: 0033:0x7fe3c05e6504
    [  286.567102][    C0] Code: c7 00 16 00 00 00 b8 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 80 3d c5 8b 10 00 00 74 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 55 48 89 e5 48 83 ec 20 48 89
    [  286.568931][    C0] RSP: 002b:00007fff76444f58 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
    [  286.569807][    C0] RAX: ffffffffffffffda RBX: 000000003b40d930 RCX: 00007fe3c05e6504
    [  286.570621][    C0] RDX: 00000000000000cf RSI: 000000003b40d930 RDI: 0000000000000003
    [  286.571443][    C0] RBP: 0000000000000003 R08: 00000000000000cf R09: 000000003b40d930
    [  286.572246][    C0] R10: 0000000000000000 R11: 0000000000000202 R12: 000000003b40cd60
    [  286.573069][    C0] R13: 00000000000000cf R14: 00007fe3c07417f8 R15: 00007fe3c073502e
    [  286.573886][    C0]  </TASK>
    
    Closes: https://lore.kernel.org/linux-nvme/5hdonndzoqa265oq3bj6iarwtfk5dewxxjtbjvn5uqnwclpwt6@a2n6w3taxxex/
    Signed-off-by: Alistair Francis <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Tested-by: Shin'ichiro Kawasaki <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-af: Set LMT_ENA bit for APR table entries [+ + +]
Author: Subbaraya Sundeep <[email protected]>
Date:   Wed May 21 11:38:33 2025 +0530

    octeontx2-af: Set LMT_ENA bit for APR table entries
    
    [ Upstream commit 0eefa27b493306928d88af6368193b134c98fd64 ]
    
    This patch enables the LMT line for a PF/VF by setting the
    LMT_ENA bit in the APR_LMT_MAP_ENTRY_S structure.
    
    Additionally, it simplifies the logic for calculating the
    LMTST table index by consistently using the maximum
    number of hw supported VFs (i.e., 256).
    
    Fixes: 873a1e3d207a ("octeontx2-af: cn10k: Setting up lmtst map table").
    Signed-off-by: Subbaraya Sundeep <[email protected]>
    Signed-off-by: Geetha sowjanya <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
orangefs: Do not truncate file size [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Wed Mar 5 20:47:25 2025 +0000

    orangefs: Do not truncate file size
    
    [ Upstream commit 062e8093592fb866b8e016641a8b27feb6ac509d ]
    
    'len' is used to store the result of i_size_read(), so making 'len'
    a size_t results in truncation to 4GiB on 32-bit systems.
    
    Signed-off-by: "Matthew Wilcox (Oracle)" <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Mike Marshall <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
padata: do not leak refcount in reorder_work [+ + +]
Author: Dominik Grzegorzek <[email protected]>
Date:   Sun May 18 19:45:31 2025 +0200

    padata: do not leak refcount in reorder_work
    
    commit d6ebcde6d4ecf34f8495fb30516645db3aea8993 upstream.
    
    A recent patch that addressed a UAF introduced a reference count leak:
    the parallel_data refcount is incremented unconditionally, regardless
    of the return value of queue_work(). If the work item is already queued,
    the incremented refcount is never decremented.
    
    Fix this by checking the return value of queue_work() and decrementing
    the refcount when necessary.
    
    Resolves:
    
    Unreferenced object 0xffff9d9f421e3d80 (size 192):
      comm "cryptomgr_probe", pid 157, jiffies 4294694003
      hex dump (first 32 bytes):
        80 8b cf 41 9f 9d ff ff b8 97 e0 89 ff ff ff ff  ...A............
        d0 97 e0 89 ff ff ff ff 19 00 00 00 1f 88 23 00  ..............#.
      backtrace (crc 838fb36):
        __kmalloc_cache_noprof+0x284/0x320
        padata_alloc_pd+0x20/0x1e0
        padata_alloc_shell+0x3b/0xa0
        0xffffffffc040a54d
        cryptomgr_probe+0x43/0xc0
        kthread+0xf6/0x1f0
        ret_from_fork+0x2f/0x50
        ret_from_fork_asm+0x1a/0x30
    
    Fixes: dd7d37ccf6b1 ("padata: avoid UAF for reorder_work")
    Cc: <[email protected]>
    Signed-off-by: Dominik Grzegorzek <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI: brcmstb: Add a softdep to MIP MSI-X driver [+ + +]
Author: Stanimir Varbanov <[email protected]>
Date:   Mon Feb 24 10:35:56 2025 +0200

    PCI: brcmstb: Add a softdep to MIP MSI-X driver
    
    [ Upstream commit 2294059118c550464dd8906286324d90c33b152b ]
    
    Then the brcmstb PCIe driver and MIP MSI-X interrupt controller
    drivers are built as modules there could be a race in probing.
    
    To avoid this, add a softdep to MIP driver to guarantee that
    MIP driver will be load first.
    
    Signed-off-by: Stanimir Varbanov <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Tested-by: Ivan T. Ivanov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: brcmstb: Expand inbound window size up to 64GB [+ + +]
Author: Stanimir Varbanov <[email protected]>
Date:   Mon Feb 24 10:35:58 2025 +0200

    PCI: brcmstb: Expand inbound window size up to 64GB
    
    [ Upstream commit 25a98c727015638baffcfa236e3f37b70cedcf87 ]
    
    The BCM2712 memory map can support up to 64GB of system memory, thus
    expand the inbound window size in calculation helper function.
    
    The change is safe for the currently supported SoCs that have smaller
    inbound window sizes.
    
    Signed-off-by: Stanimir Varbanov <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Reviewed-by: Jim Quinlan <[email protected]>
    Tested-by: Ivan T. Ivanov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: dwc: ep: Ensure proper iteration over outbound map windows [+ + +]
Author: Frank Li <[email protected]>
Date:   Sat Mar 15 15:15:46 2025 -0500

    PCI: dwc: ep: Ensure proper iteration over outbound map windows
    
    [ Upstream commit f3e1dccba0a0833fc9a05fb838ebeb6ea4ca0e1a ]
    
    Most systems' PCIe outbound map windows have non-zero physical addresses,
    but the possibility of encountering zero increased after following commit
    ("PCI: dwc: Use parent_bus_offset").
    
    'ep->outbound_addr[n]', representing 'parent_bus_address', might be 0 on
    some hardware, which trims high address bits through bus fabric before
    sending to the PCIe controller.
    
    Replace the iteration logic with 'for_each_set_bit()' to ensure only
    allocated map windows are iterated when determining the ATU index from a
    given address.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Frank Li <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Fix old_size lower bound in calculate_iosize() too [+ + +]
Author: Ilpo Järvinen <[email protected]>
Date:   Mon Dec 16 19:56:12 2024 +0200

    PCI: Fix old_size lower bound in calculate_iosize() too
    
    [ Upstream commit ff61f380de5652e723168341480cc7adf1dd6213 ]
    
    Commit 903534fa7d30 ("PCI: Fix resource double counting on remove &
    rescan") fixed double counting of mem resources because of old_size being
    applied too early.
    
    Fix a similar counting bug on the io resource side.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Xiaochun Lee <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: vmd: Disable MSI remapping bypass under Xen [+ + +]
Author: Roger Pau Monne <[email protected]>
Date:   Wed Feb 19 10:20:56 2025 +0100

    PCI: vmd: Disable MSI remapping bypass under Xen
    
    [ Upstream commit 6c4d5aadf5df31ea0ac025980670eee9beaf466b ]
    
    MSI remapping bypass (directly configuring MSI entries for devices on the
    VMD bus) won't work under Xen, as Xen is not aware of devices in such bus,
    and hence cannot configure the entries using the pIRQ interface in the PV
    case, and in the PVH case traps won't be setup for MSI entries for such
    devices.
    
    Until Xen is aware of devices in the VMD bus prevent the
    VMD_FEAT_CAN_BYPASS_MSI_REMAP capability from being used when running as
    any kind of Xen guest.
    
    The MSI remapping bypass is an optional feature of VMD bridges, and hence
    when running under Xen it will be masked and devices will be forced to
    redirect its interrupts from the VMD bridge.  That mode of operation must
    always be supported by VMD bridges and works when Xen is not aware of
    devices behind the VMD bridge.
    
    Signed-off-by: Roger Pau Monné <[email protected]>
    Acked-by: Bjorn Helgaas <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt [+ + +]
Author: Ravi Bangoria <[email protected]>
Date:   Wed Jan 15 05:44:33 2025 +0000

    perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt
    
    [ Upstream commit 46dcf85566170d4528b842bf83ffc350d71771fa ]
    
    IBS Op uses two counters: MaxCnt and CurCnt. MaxCnt is programmed with
    the desired sample period. IBS hw generates sample when CurCnt reaches
    to MaxCnt. The size of these counter used to be 20 bits but later they
    were extended to 27 bits. The 7 bit extension is indicated by CPUID
    Fn8000_001B_EAX[6 / OpCntExt].
    
    perf_ibs->cnt_mask variable contains bit masks for MaxCnt and CurCnt.
    But IBS driver does not set upper 7 bits of CurCnt in cnt_mask even
    when OpCntExt CPUID bit is set. Fix this.
    
    IBS driver uses cnt_mask[CurCnt] bits only while disabling an event.
    Fortunately, CurCnt bits are not read from MSR while re-enabling the
    event, instead MaxCnt is programmed with desired period and CurCnt is
    set to 0. Hence, we did not see any issues so far.
    
    Signed-off-by: Ravi Bangoria <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/arm-cmn: Initialise cmn->cpu earlier [+ + +]
Author: Robin Murphy <[email protected]>
Date:   Mon May 12 18:11:54 2025 +0100

    perf/arm-cmn: Initialise cmn->cpu earlier
    
    commit 597704e201068db3d104de3c7a4d447ff8209127 upstream.
    
    For all the complexity of handling affinity for CPU hotplug, what we've
    apparently managed to overlook is that arm_cmn_init_irqs() has in fact
    always been setting the *initial* affinity of all IRQs to CPU 0, not the
    CPU we subsequently choose for event scheduling. Oh dear.
    
    Cc: [email protected]
    Fixes: 0ba64770a2f2 ("perf: Add Arm CMN-600 PMU driver")
    Signed-off-by: Robin Murphy <[email protected]>
    Reviewed-by: Ilkka Koskinen <[email protected]>
    Link: https://lore.kernel.org/r/b12fccba6b5b4d2674944f59e4daad91cd63420b.1747069914.git.robin.murphy@arm.com
    Signed-off-by: Will Deacon <[email protected]>
    [ backport past NUMA changes in 5.17 ]
    Signed-off-by: Robin Murphy <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
phy: core: don't require set_mode() callback for phy_get_mode() to work [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Sun Feb 9 14:31:45 2025 +0200

    phy: core: don't require set_mode() callback for phy_get_mode() to work
    
    [ Upstream commit d58c04e305afbaa9dda7969151f06c4efe2c98b0 ]
    
    As reported by Damon Ding, the phy_get_mode() call doesn't work as
    expected unless the PHY driver has a .set_mode() call. This prompts PHY
    drivers to have empty stubs for .set_mode() for the sake of being able
    to get the mode.
    
    Make .set_mode() callback truly optional and update PHY's mode even if
    it there is none.
    
    Cc: Damon Ding <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Damon Ding <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pid: add pidfd_prepare() [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Mon Mar 27 20:22:51 2023 +0200

    pid: add pidfd_prepare()
    
    commit 6ae930d9dbf2d093157be33428538c91966d8a9f upstream.
    
    Add a new helper that allows to reserve a pidfd and allocates a new
    pidfd file that stashes the provided struct pid. This will allow us to
    remove places that either open code this function or that call
    pidfd_create() but then have to call close_fd() because there are still
    failure points after pidfd_create() has been called.
    
    Reviewed-by: Jan Kara <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pinctrl: bcm281xx: Use "unsigned int" instead of bare "unsigned" [+ + +]
Author: Artur Weber <[email protected]>
Date:   Mon Mar 3 21:54:47 2025 +0100

    pinctrl: bcm281xx: Use "unsigned int" instead of bare "unsigned"
    
    [ Upstream commit 07b5a2a13f4704c5eae3be7277ec54ffdba45f72 ]
    
    Replace uses of bare "unsigned" with "unsigned int" to fix checkpatch
    warnings. No functional change.
    
    Signed-off-by: Artur Weber <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map [+ + +]
Author: Valentin Caron <[email protected]>
Date:   Thu Jan 16 18:00:09 2025 +0100

    pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map
    
    [ Upstream commit c98868e816209e568c9d72023ba0bc1e4d96e611 ]
    
    Cross case in pinctrl framework make impossible to an hogged pin and
    another, not hogged, used within the same device-tree node. For example
    with this simplified device-tree :
    
      &pinctrl {
        pinctrl_pin_1: pinctrl-pin-1 {
          pins = "dummy-pinctrl-pin";
        };
      };
    
      &rtc {
        pinctrl-names = "default"
        pinctrl-0 = <&pinctrl_pin_1 &rtc_pin_1>
    
        rtc_pin_1: rtc-pin-1 {
          pins = "dummy-rtc-pin";
        };
      };
    
    "pinctrl_pin_1" configuration is never set. This produces this path in
    the code:
    
      really_probe()
        pinctrl_bind_pins()
        | devm_pinctrl_get()
        |   pinctrl_get()
        |     create_pinctrl()
        |       pinctrl_dt_to_map()
        |         // Hog pin create an abort for all pins of the node
        |         ret = dt_to_map_one_config()
        |         | /* Do not defer probing of hogs (circular loop) */
        |         | if (np_pctldev == p->dev->of_node)
        |         |   return -ENODEV;
        |         if (ret)
        |           goto err
        |
        call_driver_probe()
          stm32_rtc_probe()
            pinctrl_enable()
              pinctrl_claim_hogs()
                create_pinctrl()
                  for_each_maps(maps_node, i, map)
                    // Not hog pin is skipped
                    if (pctldev && strcmp(dev_name(pctldev->dev),
                                          map->ctrl_dev_name))
                      continue;
    
    At the first call of create_pinctrl() the hogged pin produces an abort to
    avoid a defer of hogged pins. All other pin configurations are trashed.
    
    At the second call, create_pinctrl is now called with pctldev parameter to
    get hogs, but in this context only hogs are set. And other pins are
    skipped.
    
    To handle this, do not produce an abort in the first call of
    create_pinctrl(). Classic pin configuration will be set in
    pinctrl_bind_pins() context. And the hogged pin configuration will be set
    in pinctrl_claim_hogs() context.
    
    Signed-off-by: Valentin Caron <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: meson: define the pull up/down resistor value as 60 kOhm [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Sat Mar 29 20:01:32 2025 +0100

    pinctrl: meson: define the pull up/down resistor value as 60 kOhm
    
    [ Upstream commit e56088a13708757da68ad035269d69b93ac8c389 ]
    
    The public datasheets of the following Amlogic SoCs describe a typical
    resistor value for the built-in pull up/down resistor:
    - Meson8/8b/8m2: not documented
    - GXBB (S905): 60 kOhm
    - GXL (S905X): 60 kOhm
    - GXM (S912): 60 kOhm
    - G12B (S922X): 60 kOhm
    - SM1 (S905D3): 60 kOhm
    
    The public G12B and SM1 datasheets additionally state min and max
    values:
    - min value: 50 kOhm for both, pull-up and pull-down
    - max value for the pull-up: 70 kOhm
    - max value for the pull-down: 130 kOhm
    
    Use 60 kOhm in the pinctrl-meson driver as well so it's shown in the
    debugfs output. It may not be accurate for Meson8/8b/8m2 but in reality
    60 kOhm is closer to the actual value than 1 Ohm.
    
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: dell-wmi-sysman: Avoid buffer overflow in current_password_store() [+ + +]
Author: Vladimir Moskovkin <[email protected]>
Date:   Wed May 14 12:12:55 2025 +0000

    platform/x86: dell-wmi-sysman: Avoid buffer overflow in current_password_store()
    
    commit 4e89a4077490f52cde652d17e32519b666abf3a6 upstream.
    
    If the 'buf' array received from the user contains an empty string, the
    'length' variable will be zero. Accessing the 'buf' array element with
    index 'length - 1' will result in a buffer overflow.
    
    Add a check for an empty string.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: e8a60aa7404b ("platform/x86: Introduce support for Systems Management Driver over WMI for Dell Systems")
    Cc: [email protected]
    Signed-off-by: Vladimir Moskovkin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys [+ + +]
Author: Valtteri Koskivuori <[email protected]>
Date:   Fri May 9 21:42:49 2025 +0300

    platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys
    
    [ Upstream commit a7e255ff9fe4d9b8b902023aaf5b7a673786bb50 ]
    
    The S2110 has an additional set of media playback control keys enabled
    by a hardware toggle button that switches the keys between "Application"
    and "Player" modes. Toggling "Player" mode just shifts the scancode of
    each hotkey up by 4.
    
    Add defines for new scancodes, and a keymap and dmi id for the S2110.
    
    Tested on a Fujitsu Lifebook S2110.
    
    Signed-off-by: Valtteri Koskivuori <[email protected]>
    Acked-by: Jonathan Woithe <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: thinkpad_acpi: Ignore battery threshold change event notification [+ + +]
Author: Mark Pearson <[email protected]>
Date:   Fri May 16 22:33:37 2025 -0400

    platform/x86: thinkpad_acpi: Ignore battery threshold change event notification
    
    [ Upstream commit 29e4e6b4235fefa5930affb531fe449cac330a72 ]
    
    If user modifies the battery charge threshold an ACPI event is generated.
    Confirmed with Lenovo FW team this is only generated on user event. As no
    action is needed, ignore the event and prevent spurious kernel logs.
    
    Reported-by: Derek Barbosa <[email protected]>
    Closes: https://lore.kernel.org/platform-driver-x86/[email protected]/T/#m5f5b9ae31d3fbf30d7d9a9d76c15fb3502dfd903
    Signed-off-by: Mark Pearson <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Reviewed-by: Armin Wolf <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: thinkpad_acpi: Support also NEC Lavie X1475JAS [+ + +]
Author: John Chau <[email protected]>
Date:   Mon May 5 01:55:13 2025 +0900

    platform/x86: thinkpad_acpi: Support also NEC Lavie X1475JAS
    
    [ Upstream commit a032f29a15412fab9f4352e0032836d51420a338 ]
    
    Change get_thinkpad_model_data() to check for additional vendor name
    "NEC" in order to support NEC Lavie X1475JAS notebook (and perhaps
    more).
    
    The reason of this works with minimal changes is because NEC Lavie
    X1475JAS is a Thinkpad inside. ACPI dumps reveals its OEM ID to be
    "LENOVO", BIOS version "R2PET30W" matches typical Lenovo BIOS version,
    the existence of HKEY of LEN0268, with DMI fw string is "R2PHT24W".
    
    I compiled and tested with my own machine, attached the dmesg
    below as proof of work:
    [    6.288932] thinkpad_acpi: ThinkPad ACPI Extras v0.26
    [    6.288937] thinkpad_acpi: http://ibm-acpi.sf.net/
    [    6.288938] thinkpad_acpi: ThinkPad BIOS R2PET30W (1.11 ), EC R2PHT24W
    [    6.307000] thinkpad_acpi: radio switch found; radios are enabled
    [    6.307030] thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
    [    6.307033] thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
    [    6.320322] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
    [    6.371963] thinkpad_acpi: secondary fan control detected & enabled
    [    6.391922] thinkpad_acpi: battery 1 registered (start 0, stop 85, behaviours: 0x7)
    [    6.398375] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input13
    
    Signed-off-by: John Chau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pNFS/flexfiles: Report ENETDOWN as a connection error [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Thu Mar 20 12:45:01 2025 -0400

    pNFS/flexfiles: Report ENETDOWN as a connection error
    
    [ Upstream commit aa42add73ce9b9e3714723d385c254b75814e335 ]
    
    If the client should see an ENETDOWN when trying to connect to the data
    server, it might still be able to talk to the metadata server through
    another NIC. If so, report the error.
    
    Signed-off-by: Trond Myklebust <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Tested-by: Jeff Layton <[email protected]>
    Acked-by: Chuck Lever <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
posix-timers: Add cond_resched() to posix_timer_add() search loop [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sat Mar 8 17:48:17 2025 +0100

    posix-timers: Add cond_resched() to posix_timer_add() search loop
    
    [ Upstream commit 5f2909c6cd13564a07ae692a95457f52295c4f22 ]
    
    With a large number of POSIX timers the search for a valid ID might cause a
    soft lockup on PREEMPT_NONE/VOLUNTARY kernels.
    
    Add cond_resched() to the loop to prevent that.
    
    [ tglx: Split out from Eric's series ]
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7 [+ + +]
Author: Andreas Schwab <[email protected]>
Date:   Mon Jan 13 18:19:09 2025 +0100

    powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7
    
    [ Upstream commit 7e67ef889c9ab7246547db73d524459f47403a77 ]
    
    Similar to the PowerMac3,1, the PowerBook6,7 is missing the #size-cells
    property on the i2s node.
    
    Depends-on: commit 045b14ca5c36 ("of: WARN on deprecated #address-cells/#size-cells handling")
    Signed-off-by: Andreas Schwab <[email protected]>
    Acked-by: Rob Herring (Arm) <[email protected]>
    [maddy: added "commit" work in depends-on to avoid checkpatch error]
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
r8152: add vendor/device ID pair for Dell Alienware AW1022z [+ + +]
Author: Aleksander Jan Bajkowski <[email protected]>
Date:   Thu Feb 6 23:40:33 2025 +0100

    r8152: add vendor/device ID pair for Dell Alienware AW1022z
    
    [ Upstream commit 848b09d53d923b4caee5491f57a5c5b22d81febc ]
    
    The Dell AW1022z is an RTL8156B based 2.5G Ethernet controller.
    
    Add the vendor and product ID values to the driver. This makes Ethernet
    work with the adapter.
    
    Signed-off-by: Aleksander Jan Bajkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
r8169: don't scan PHY addresses > 0 [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Tue Feb 4 07:58:17 2025 +0100

    r8169: don't scan PHY addresses > 0
    
    [ Upstream commit faac69a4ae5abb49e62c79c66b51bb905c9aa5ec ]
    
    The PHY address is a dummy, because r8169 PHY access registers
    don't support a PHY address. Therefore scan address 0 only.
    
    Signed-off-by: Heiner Kallweit <[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]>

 
rcu: fix header guard for rcu_all_qs() [+ + +]
Author: Ankur Arora <[email protected]>
Date:   Thu Dec 12 20:06:52 2024 -0800

    rcu: fix header guard for rcu_all_qs()
    
    [ Upstream commit ad6b5b73ff565e88aca7a7d1286788d80c97ba71 ]
    
    rcu_all_qs() is defined for !CONFIG_PREEMPT_RCU but the declaration
    is conditioned on CONFIG_PREEMPTION.
    
    With CONFIG_PREEMPT_LAZY, CONFIG_PREEMPTION=y does not imply
    CONFIG_PREEMPT_RCU=y.
    
    Decouple the two.
    
    Cc: Paul E. McKenney <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Reviewed-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Ankur Arora <[email protected]>
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y [+ + +]
Author: Ankur Arora <[email protected]>
Date:   Thu Dec 12 20:06:56 2024 -0800

    rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y
    
    [ Upstream commit 83b28cfe796464ebbde1cf7916c126da6d572685 ]
    
    With PREEMPT_RCU=n, cond_resched() provides urgently needed quiescent
    states for read-side critical sections via rcu_all_qs().
    One reason why this was needed: lacking preempt-count, the tick
    handler has no way of knowing whether it is executing in a
    read-side critical section or not.
    
    With (PREEMPT_LAZY=y, PREEMPT_DYNAMIC=n), we get (PREEMPT_COUNT=y,
    PREEMPT_RCU=n). In this configuration cond_resched() is a stub and
    does not provide quiescent states via rcu_all_qs().
    (PREEMPT_RCU=y provides this information via rcu_read_unlock() and
    its nesting counter.)
    
    So, use the availability of preempt_count() to report quiescent states
    in rcu_flavor_sched_clock_irq().
    
    Suggested-by: Paul E. McKenney <[email protected]>
    Reviewed-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Ankur Arora <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/core: Fix best page size finding when it can cross SG entries [+ + +]
Author: Michael Margolin <[email protected]>
Date:   Mon Feb 17 14:16:23 2025 +0000

    RDMA/core: Fix best page size finding when it can cross SG entries
    
    [ Upstream commit 486055f5e09df959ad4e3aa4ee75b5c91ddeec2e ]
    
    A single scatter-gather entry is limited by a 32 bits "length" field
    that is practically 4GB - PAGE_SIZE. This means that even when the
    memory is physically contiguous, we might need more than one entry to
    represent it. Additionally when using dmabuf, the sg_table might be
    originated outside the subsystem and optimized for other needs.
    
    For instance an SGT of 16GB GPU continuous memory might look like this:
    (a real life example)
    
    dma_address 34401400000, length fffff000
    dma_address 345013ff000, length fffff000
    dma_address 346013fe000, length fffff000
    dma_address 347013fd000, length fffff000
    dma_address 348013fc000, length 4000
    
    Since ib_umem_find_best_pgsz works within SG entries, in the above case
    we will result with the worst possible 4KB page size.
    
    Fix this by taking into consideration only the alignment of addresses of
    real discontinuity points rather than treating SG entries as such, and
    adjust the page iterator to correctly handle cross SG entry pages.
    
    There is currently an assumption that drivers do not ask for pages
    bigger than maximal DMA size supported by their devices.
    
    Reviewed-by: Firas Jahjah <[email protected]>
    Reviewed-by: Yonatan Nachum <[email protected]>
    Signed-off-by: Michael Margolin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject() [+ + +]
Author: Maher Sanalla <[email protected]>
Date:   Wed Feb 26 15:54:13 2025 +0200

    RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject()
    
    [ Upstream commit 81f8f7454ad9e0bf95efdec6542afdc9a6ab1e24 ]
    
    Currently, the IB uverbs API calls uobj_get_uobj_read(), which in turn
    uses the rdma_lookup_get_uobject() helper to retrieve user objects.
    In case of failure, uobj_get_uobj_read() returns NULL, overriding the
    error code from rdma_lookup_get_uobject(). The IB uverbs API then
    translates this NULL to -EINVAL, masking the actual error and
    complicating debugging. For example, applications calling ibv_modify_qp
    that fails with EBUSY when retrieving the QP uobject will see the
    overridden error code EINVAL instead, masking the actual error.
    
    Furthermore, based on rdma-core commit:
    "2a22f1ced5f3 ("Merge pull request #1568 from jakemoroni/master")"
    Kernel's IB uverbs return values are either ignored and passed on as is
    to application or overridden with other errnos in a few cases.
    
    Thus, to improve error reporting and debuggability, propagate the
    original error from rdma_lookup_get_uobject() instead of replacing it
    with EINVAL.
    
    Signed-off-by: Maher Sanalla <[email protected]>
    Link: https://patch.msgid.link/64f9d3711b183984e939962c2f83383904f97dfb.1740577869.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regulator: ad5398: Add device tree support [+ + +]
Author: Isaac Scott <[email protected]>
Date:   Tue Jan 28 17:31:43 2025 +0000

    regulator: ad5398: Add device tree support
    
    [ Upstream commit 5a6a461079decea452fdcae955bccecf92e07e97 ]
    
    Previously, the ad5398 driver used only platform_data, which is
    deprecated in favour of device tree. This caused the AD5398 to fail to
    probe as it could not load its init_data. If the AD5398 has a device
    tree node, pull the init_data from there using
    of_get_regulator_init_data.
    
    Signed-off-by: Isaac Scott <[email protected]>
    Acked-by: Michael Hennerich <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
remoteproc: qcom_wcnss: Fix on platforms without fallback regulators [+ + +]
Author: Matti Lehtimäki <[email protected]>
Date:   Mon May 12 02:40:15 2025 +0300

    remoteproc: qcom_wcnss: Fix on platforms without fallback regulators
    
    [ Upstream commit 4ca45af0a56d00b86285d6fdd720dca3215059a7 ]
    
    Recent change to handle platforms with only single power domain broke
    pronto-v3 which requires power domains and doesn't have fallback voltage
    regulators in case power domains are missing. Add a check to verify
    the number of fallback voltage regulators before using the code which
    handles single power domain situation.
    
    Fixes: 65991ea8a6d1 ("remoteproc: qcom_wcnss: Handle platforms with only single power domain")
    Signed-off-by: Matti Lehtimäki <[email protected]>
    Tested-by: Luca Weiss <[email protected]> # sdm632-fairphone-fp3
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

remoteproc: qcom_wcnss: Handle platforms with only single power domain [+ + +]
Author: Matti Lehtimäki <[email protected]>
Date:   Thu Feb 6 20:56:48 2025 +0100

    remoteproc: qcom_wcnss: Handle platforms with only single power domain
    
    [ Upstream commit 65991ea8a6d1e68effdc01d95ebe39f1653f7b71 ]
    
    Both MSM8974 and MSM8226 have only CX as power domain with MX & PX being
    handled as regulators. Handle this case by reodering pd_names to have CX
    first, and handling that the driver core will already attach a single
    power domain internally.
    
    Signed-off-by: Matti Lehtimäki <[email protected]>
    [luca: minor changes]
    Signed-off-by: Luca Weiss <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [bjorn: Added missing braces to else after multi-statement if]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection" [+ + +]
Author: Jernej Skrabec <[email protected]>
Date:   Sun Apr 13 15:58:48 2025 +0200

    Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection"
    
    [ Upstream commit 573f99c7585f597630f14596550c79e73ffaeef4 ]
    
    This reverts commit 531fdbeedeb89bd32018a35c6e137765c9cc9e97.
    
    Hardware that uses I2C wasn't designed with high speeds in mind, so
    communication with PMIC via RSB can intermittently fail. Go back to I2C
    as higher speed and efficiency isn't worth the trouble.
    
    Fixes: 531fdbeedeb8 ("arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection")
    Link: https://github.com/LibreELEC/LibreELEC.tv/issues/7731
    Signed-off-by: Jernej Skrabec <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "drm/amd: Keep display off while going into S4" [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu May 22 09:13:28 2025 -0500

    Revert "drm/amd: Keep display off while going into S4"
    
    commit 7e7cb7a13c81073d38a10fa7b450d23712281ec4 upstream.
    
    commit 68bfdc8dc0a1a ("drm/amd: Keep display off while going into S4")
    attempted to keep displays off during the S4 sequence by not resuming
    display IP.  This however leads to hangs because DRM clients such as the
    console can try to access registers and cause a hang.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4155
    Fixes: 68bfdc8dc0a1a ("drm/amd: Keep display off while going into S4")
    Reviewed-by: Alex Deucher <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit e485502c37b097b0bd773baa7e2741bf7bd2909a)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rtc: ds1307: stop disabling alarms on probe [+ + +]
Author: Alexandre Belloni <[email protected]>
Date:   Mon Mar 3 23:37:44 2025 +0100

    rtc: ds1307: stop disabling alarms on probe
    
    [ Upstream commit dcec12617ee61beed928e889607bf37e145bf86b ]
    
    It is a bad practice to disable alarms on probe or remove as this will
    prevent alarms across reboots.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rtc: rv3032: fix EERD location [+ + +]
Author: Alexandre Belloni <[email protected]>
Date:   Thu Mar 6 22:42:41 2025 +0100

    rtc: rv3032: fix EERD location
    
    [ Upstream commit b0f9cb4a0706b0356e84d67e48500b77b343debe ]
    
    EERD is bit 2 in CTRL1
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
samples/bpf: Fix compilation failure for samples/bpf on LoongArch Fedora [+ + +]
Author: Haoran Jiang <[email protected]>
Date:   Fri Apr 25 17:50:42 2025 +0800

    samples/bpf: Fix compilation failure for samples/bpf on LoongArch Fedora
    
    [ Upstream commit 548762f05d19c5542db7590bcdfb9be1fb928376 ]
    
    When building the latest samples/bpf on LoongArch Fedora
    
         make M=samples/bpf
    
    There are compilation errors as follows:
    
    In file included from ./linux/samples/bpf/sockex2_kern.c:2:
    In file included from ./include/uapi/linux/in.h:25:
    In file included from ./include/linux/socket.h:8:
    In file included from ./include/linux/uio.h:9:
    In file included from ./include/linux/thread_info.h:60:
    In file included from ./arch/loongarch/include/asm/thread_info.h:15:
    In file included from ./arch/loongarch/include/asm/processor.h:13:
    In file included from ./arch/loongarch/include/asm/cpu-info.h:11:
    ./arch/loongarch/include/asm/loongarch.h:13:10: fatal error: 'larchintrin.h' file not found
             ^~~~~~~~~~~~~~~
    1 error generated.
    
    larchintrin.h is included in /usr/lib64/clang/14.0.6/include,
    and the header file location is specified at compile time.
    
    Test on LoongArch Fedora:
    https://github.com/fedora-remix-loongarch/releases-info
    
    Signed-off-by: Haoran Jiang <[email protected]>
    Signed-off-by: zhangxi <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue() [+ + +]
Author: Cong Wang <[email protected]>
Date:   Sun May 18 15:20:37 2025 -0700

    sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue()
    
    [ Upstream commit 3f981138109f63232a5fb7165938d4c945cc1b9d ]
    
    When enqueuing the first packet to an HFSC class, hfsc_enqueue() calls the
    child qdisc's peek() operation before incrementing sch->q.qlen and
    sch->qstats.backlog. If the child qdisc uses qdisc_peek_dequeued(), this may
    trigger an immediate dequeue and potential packet drop. In such cases,
    qdisc_tree_reduce_backlog() is called, but the HFSC qdisc's qlen and backlog
    have not yet been updated, leading to inconsistent queue accounting. This
    can leave an empty HFSC class in the active list, causing further
    consequences like use-after-free.
    
    This patch fixes the bug by moving the increment of sch->q.qlen and
    sch->qstats.backlog before the call to the child qdisc's peek() operation.
    This ensures that queue length and backlog are always accurate when packet
    drops or dequeues are triggered during the peek.
    
    Fixes: 12d0ad3be9c3 ("net/sched/sch_hfsc.c: handle corner cases where head may change invalidating calculated deadline")
    Reported-by: Mingi Cho <[email protected]>
    Signed-off-by: Cong Wang <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Jamal Hadi Salim <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine [+ + +]
Author: Justin Tee <[email protected]>
Date:   Thu Jan 30 16:05:22 2025 -0800

    scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine
    
    [ Upstream commit 56c3d809b7b450379162d0b8a70bbe71ab8db706 ]
    
    After a port swap between separate fabrics, there may be multiple nodes in
    the vport's fc_nodes list with the same fabric well known address.
    Duplication is temporary and eventually resolves itself after dev_loss_tmo
    expires, but nameserver queries may still occur before dev_loss_tmo.  This
    possibly results in returning stale fabric ndlp objects.  Fix by adding an
    nlp_state check to ensure the ndlp search routine returns the correct newer
    allocated ndlp fabric object.
    
    Signed-off-by: Justin Tee <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mpt3sas: Send a diag reset if target reset fails [+ + +]
Author: Shivasharan S <[email protected]>
Date:   Wed Feb 12 17:26:55 2025 -0800

    scsi: mpt3sas: Send a diag reset if target reset fails
    
    [ Upstream commit 5612d6d51ed2634a033c95de2edec7449409cbb9 ]
    
    When an IOCTL times out and driver issues a target reset, if firmware
    fails the task management elevate the recovery by issuing a diag reset to
    controller.
    
    Signed-off-by: Shivasharan S <[email protected]>
    Link: https://lore.kernel.org/r/1739410016-27503-5-git-send-email-shivasharan.srikanteshwara@broadcom.com
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: st: ERASE does not change tape location [+ + +]
Author: Kai Mäkisara <[email protected]>
Date:   Tue Mar 11 13:25:15 2025 +0200

    scsi: st: ERASE does not change tape location
    
    [ Upstream commit ad77cebf97bd42c93ab4e3bffd09f2b905c1959a ]
    
    The SCSI ERASE command erases from the current position onwards.  Don't
    clear the position variables.
    
    Signed-off-by: Kai Mäkisara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: st: Restore some drive settings after reset [+ + +]
Author: Kai Mäkisara <[email protected]>
Date:   Mon Jan 20 21:49:22 2025 +0200

    scsi: st: Restore some drive settings after reset
    
    [ Upstream commit 7081dc75df79696d8322d01821c28e53416c932c ]
    
    Some of the allowed operations put the tape into a known position to
    continue operation assuming only the tape position has changed.  But reset
    sets partition, density and block size to drive default values. These
    should be restored to the values before reset.
    
    Normally the current block size and density are stored by the drive.  If
    the settings have been changed, the changed values have to be saved by the
    driver across reset.
    
    Signed-off-by: Kai Mäkisara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: John Meneghini <[email protected]>
    Tested-by: John Meneghini <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: st: Tighten the page format heuristics with MODE SELECT [+ + +]
Author: Kai Mäkisara <[email protected]>
Date:   Tue Mar 11 13:25:16 2025 +0200

    scsi: st: Tighten the page format heuristics with MODE SELECT
    
    [ Upstream commit 8db816c6f176321e42254badd5c1a8df8bfcfdb4 ]
    
    In the days when SCSI-2 was emerging, some drives did claim SCSI-2 but did
    not correctly implement it. The st driver first tries MODE SELECT with the
    page format bit set to set the block descriptor.  If not successful, the
    non-page format is tried.
    
    The test only tests the sense code and this triggers also from illegal
    parameter in the parameter list. The test is limited to "old" devices and
    made more strict to remove false alarms.
    
    Signed-off-by: Kai Mäkisara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: target: iscsi: Fix timeout on deleted connection [+ + +]
Author: Dmitry Bogdanov <[email protected]>
Date:   Tue Dec 24 13:17:57 2024 +0300

    scsi: target: iscsi: Fix timeout on deleted connection
    
    [ Upstream commit 7f533cc5ee4c4436cee51dc58e81dfd9c3384418 ]
    
    NOPIN response timer may expire on a deleted connection and crash with
    such logs:
    
    Did not receive response to NOPIN on CID: 0, failing connection for I_T Nexus (null),i,0x00023d000125,iqn.2017-01.com.iscsi.target,t,0x3d
    
    BUG: Kernel NULL pointer dereference on read at 0x00000000
    NIP  strlcpy+0x8/0xb0
    LR iscsit_fill_cxn_timeout_err_stats+0x5c/0xc0 [iscsi_target_mod]
    Call Trace:
     iscsit_handle_nopin_response_timeout+0xfc/0x120 [iscsi_target_mod]
     call_timer_fn+0x58/0x1f0
     run_timer_softirq+0x740/0x860
     __do_softirq+0x16c/0x420
     irq_exit+0x188/0x1c0
     timer_interrupt+0x184/0x410
    
    That is because nopin response timer may be re-started on nopin timer
    expiration.
    
    Stop nopin timer before stopping the nopin response timer to be sure
    that no one of them will be re-started.
    
    Signed-off-by: Dmitry Bogdanov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Maurizio Lombardi <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
 
selftests/net: have `gro.sh -t` return a correct exit code [+ + +]
Author: Kevin Krakauer <[email protected]>
Date:   Wed Feb 26 11:27:23 2025 -0800

    selftests/net: have `gro.sh -t` return a correct exit code
    
    [ Upstream commit 784e6abd99f24024a8998b5916795f0bec9d2fd9 ]
    
    Modify gro.sh to return a useful exit code when the -t flag is used. It
    formerly returned 0 no matter what.
    
    Tested: Ran `gro.sh -t large` and verified that test failures return 1.
    Signed-off-by: Kevin Krakauer <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smack: recognize ipv4 CIPSO w/o categories [+ + +]
Author: Konstantin Andreev <[email protected]>
Date:   Fri Jan 17 02:40:34 2025 +0300

    smack: recognize ipv4 CIPSO w/o categories
    
    [ Upstream commit a158a937d864d0034fea14913c1f09c6d5f574b8 ]
    
    If SMACK label has CIPSO representation w/o categories, e.g.:
    
    | # cat /smack/cipso2
    | foo  10
    | @ 250/2
    | ...
    
    then SMACK does not recognize such CIPSO in input ipv4 packets
    and substitues '*' label instead. Audit records may look like
    
    | lsm=SMACK fn=smack_socket_sock_rcv_skb action=denied
    |   subject="*" object="_" requested=w pid=0 comm="swapper/1" ...
    
    This happens in two steps:
    
    1) security/smack/smackfs.c`smk_set_cipso
       does not clear NETLBL_SECATTR_MLS_CAT
       from (struct smack_known *)skp->smk_netlabel.flags
       on assigning CIPSO w/o categories:
    
    | rcu_assign_pointer(skp->smk_netlabel.attr.mls.cat, ncats.attr.mls.cat);
    | skp->smk_netlabel.attr.mls.lvl = ncats.attr.mls.lvl;
    
    2) security/smack/smack_lsm.c`smack_from_secattr
       can not match skp->smk_netlabel with input packet's
       struct netlbl_lsm_secattr *sap
       because sap->flags have not NETLBL_SECATTR_MLS_CAT (what is correct)
       but skp->smk_netlabel.flags have (what is incorrect):
    
    | if ((sap->flags & NETLBL_SECATTR_MLS_CAT) == 0) {
    |       if ((skp->smk_netlabel.flags &
    |                NETLBL_SECATTR_MLS_CAT) == 0)
    |               found = 1;
    |       break;
    | }
    
    This commit sets/clears NETLBL_SECATTR_MLS_CAT in
    skp->smk_netlabel.flags according to the presense of CIPSO categories.
    The update of smk_netlabel is not atomic, so input packets processing
    still may be incorrect during short time while update proceeds.
    
    Signed-off-by: Konstantin Andreev <[email protected]>
    Signed-off-by: Casey Schaufler <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smb: client: Fix use-after-free in cifs_fill_dirent [+ + +]
Author: Wang Zhaolong <[email protected]>
Date:   Fri May 16 17:12:55 2025 +0800

    smb: client: Fix use-after-free in cifs_fill_dirent
    
    commit a7a8fe56e932a36f43e031b398aef92341bf5ea0 upstream.
    
    There is a race condition in the readdir concurrency process, which may
    access the rsp buffer after it has been released, triggering the
    following KASAN warning.
    
     ==================================================================
     BUG: KASAN: slab-use-after-free in cifs_fill_dirent+0xb03/0xb60 [cifs]
     Read of size 4 at addr ffff8880099b819c by task a.out/342975
    
     CPU: 2 UID: 0 PID: 342975 Comm: a.out Not tainted 6.15.0-rc6+ #240 PREEMPT(full)
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014
     Call Trace:
      <TASK>
      dump_stack_lvl+0x53/0x70
      print_report+0xce/0x640
      kasan_report+0xb8/0xf0
      cifs_fill_dirent+0xb03/0xb60 [cifs]
      cifs_readdir+0x12cb/0x3190 [cifs]
      iterate_dir+0x1a1/0x520
      __x64_sys_getdents+0x134/0x220
      do_syscall_64+0x4b/0x110
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
     RIP: 0033:0x7f996f64b9f9
     Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 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  0d f7 c3 0c 00 f7 d8 64 89 8
     RSP: 002b:00007f996f53de78 EFLAGS: 00000207 ORIG_RAX: 000000000000004e
     RAX: ffffffffffffffda RBX: 00007f996f53ecdc RCX: 00007f996f64b9f9
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
     RBP: 00007f996f53dea0 R08: 0000000000000000 R09: 0000000000000000
     R10: 0000000000000000 R11: 0000000000000207 R12: ffffffffffffff88
     R13: 0000000000000000 R14: 00007ffc8cd9a500 R15: 00007f996f51e000
      </TASK>
    
     Allocated by task 408:
      kasan_save_stack+0x20/0x40
      kasan_save_track+0x14/0x30
      __kasan_slab_alloc+0x6e/0x70
      kmem_cache_alloc_noprof+0x117/0x3d0
      mempool_alloc_noprof+0xf2/0x2c0
      cifs_buf_get+0x36/0x80 [cifs]
      allocate_buffers+0x1d2/0x330 [cifs]
      cifs_demultiplex_thread+0x22b/0x2690 [cifs]
      kthread+0x394/0x720
      ret_from_fork+0x34/0x70
      ret_from_fork_asm+0x1a/0x30
    
     Freed by task 342979:
      kasan_save_stack+0x20/0x40
      kasan_save_track+0x14/0x30
      kasan_save_free_info+0x3b/0x60
      __kasan_slab_free+0x37/0x50
      kmem_cache_free+0x2b8/0x500
      cifs_buf_release+0x3c/0x70 [cifs]
      cifs_readdir+0x1c97/0x3190 [cifs]
      iterate_dir+0x1a1/0x520
      __x64_sys_getdents64+0x134/0x220
      do_syscall_64+0x4b/0x110
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
     The buggy address belongs to the object at ffff8880099b8000
      which belongs to the cache cifs_request of size 16588
     The buggy address is located 412 bytes inside of
      freed 16588-byte region [ffff8880099b8000, ffff8880099bc0cc)
    
     The buggy address belongs to the physical page:
     page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x99b8
     head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
     anon flags: 0x80000000000040(head|node=0|zone=1)
     page_type: f5(slab)
     raw: 0080000000000040 ffff888001e03400 0000000000000000 dead000000000001
     raw: 0000000000000000 0000000000010001 00000000f5000000 0000000000000000
     head: 0080000000000040 ffff888001e03400 0000000000000000 dead000000000001
     head: 0000000000000000 0000000000010001 00000000f5000000 0000000000000000
     head: 0080000000000003 ffffea0000266e01 00000000ffffffff 00000000ffffffff
     head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
     page dumped because: kasan: bad access detected
    
     Memory state around the buggy address:
      ffff8880099b8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff8880099b8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     >ffff8880099b8180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                 ^
      ffff8880099b8200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff8880099b8280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ==================================================================
    
    POC is available in the link [1].
    
    The problem triggering process is as follows:
    
    Process 1                       Process 2
    -----------------------------------------------------------------
    cifs_readdir
      /* file->private_data == NULL */
      initiate_cifs_search
        cifsFile = kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
        smb2_query_dir_first ->query_dir_first()
          SMB2_query_directory
            SMB2_query_directory_init
            cifs_send_recv
            smb2_parse_query_directory
              srch_inf->ntwrk_buf_start = (char *)rsp;
              srch_inf->srch_entries_start = (char *)rsp + ...
              srch_inf->last_entry = (char *)rsp + ...
              srch_inf->smallBuf = true;
      find_cifs_entry
        /* if (cfile->srch_inf.ntwrk_buf_start) */
        cifs_small_buf_release(cfile->srch_inf // free
    
                            cifs_readdir  ->iterate_shared()
                              /* file->private_data != NULL */
                              find_cifs_entry
                                /* in while (...) loop */
                                smb2_query_dir_next  ->query_dir_next()
                                  SMB2_query_directory
                                    SMB2_query_directory_init
                                    cifs_send_recv
                                      compound_send_recv
                                        smb_send_rqst
                                        __smb_send_rqst
                                          rc = -ERESTARTSYS;
                                          /* if (fatal_signal_pending()) */
                                          goto out;
                                          return rc
                                /* if (cfile->srch_inf.last_entry) */
                                cifs_save_resume_key()
                                  cifs_fill_dirent // UAF
                                /* if (rc) */
                                return -ENOENT;
    
    Fix this by ensuring the return code is checked before using pointers
    from the srch_inf.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220131 [1]
    Fixes: a364bc0b37f1 ("[CIFS] fix saving of resume key before CIFSFindNext")
    Cc: [email protected]
    Reviewed-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Wang Zhaolong <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Wang Zhaolong <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

smb: client: Reset all search buffer pointers when releasing buffer [+ + +]
Author: Wang Zhaolong <[email protected]>
Date:   Fri May 16 17:12:56 2025 +0800

    smb: client: Reset all search buffer pointers when releasing buffer
    
    commit e48f9d849bfdec276eebf782a84fd4dfbe1c14c0 upstream.
    
    Multiple pointers in struct cifs_search_info (ntwrk_buf_start,
    srch_entries_start, and last_entry) point to the same allocated buffer.
    However, when freeing this buffer, only ntwrk_buf_start was set to NULL,
    while the other pointers remained pointing to freed memory.
    
    This is defensive programming to prevent potential issues with stale
    pointers. While the active UAF vulnerability is fixed by the previous
    patch, this change ensures consistent pointer state and more robust error
    handling.
    
    Signed-off-by: Wang Zhaolong <[email protected]>
    Cc: [email protected]
    Reviewed-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Wang Zhaolong <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
soc: ti: k3-socinfo: Do not use syscon helper to build regmap [+ + +]
Author: Andrew Davis <[email protected]>
Date:   Thu Jan 23 12:17:26 2025 -0600

    soc: ti: k3-socinfo: Do not use syscon helper to build regmap
    
    [ Upstream commit a5caf03188e44388e8c618dcbe5fffad1a249385 ]
    
    The syscon helper device_node_to_regmap() is used to fetch a regmap
    registered to a device node. It also currently creates this regmap
    if the node did not already have a regmap associated with it. This
    should only be used on "syscon" nodes. This driver is not such a
    device and instead uses device_node_to_regmap() on its own node as
    a hacky way to create a regmap for itself.
    
    This will not work going forward and so we should create our regmap
    the normal way by defining our regmap_config, fetching our memory
    resource, then using the normal regmap_init_mmio() function.
    
    Signed-off-by: Andrew Davis <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Nishanth Menon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: spi-fsl-dspi: Halt the module after a new message transfer [+ + +]
Author: Bogdan-Gabriel Roman <[email protected]>
Date:   Thu May 22 15:51:31 2025 +0100

    spi: spi-fsl-dspi: Halt the module after a new message transfer
    
    [ Upstream commit 8a30a6d35a11ff5ccdede7d6740765685385a917 ]
    
    The XSPI mode implementation in this driver still uses the EOQ flag to
    signal the last word in a transmission and deassert the PCS signal.
    However, at speeds lower than ~200kHZ, the PCS signal seems to remain
    asserted even when SR[EOQF] = 1 indicates the end of a transmission.
    This is a problem for target devices which require the deassertation of
    the PCS signal between transfers.
    
    Hence, this commit 'forces' the deassertation of the PCS by stopping the
    module through MCR[HALT] after completing a new transfer. According to
    the reference manual, the module stops or transitions from the Running
    state to the Stopped state after the current frame, when any one of the
    following conditions exist:
    - The value of SR[EOQF] = 1.
    - The chip is in Debug mode and the value of MCR[FRZ] = 1.
    - The value of MCR[HALT] = 1.
    
    This shouldn't be done if the last transfer in the message has cs_change
    set.
    
    Fixes: ea93ed4c181b ("spi: spi-fsl-dspi: Use EOQ for last word in buffer even for XSPI mode")
    Signed-off-by: Bogdan-Gabriel Roman <[email protected]>
    Signed-off-by: Larisa Grigore <[email protected]>
    Signed-off-by: James Clark <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-fsl-dspi: Reset SR flags before sending a new message [+ + +]
Author: Larisa Grigore <[email protected]>
Date:   Thu May 22 15:51:32 2025 +0100

    spi: spi-fsl-dspi: Reset SR flags before sending a new message
    
    [ Upstream commit 7aba292eb15389073c7f3bd7847e3862dfdf604d ]
    
    If, in a previous transfer, the controller sends more data than expected
    by the DSPI target, SR.RFDF (RX FIFO is not empty) will remain asserted.
    When flushing the FIFOs at the beginning of a new transfer (writing 1
    into MCR.CLR_TXF and MCR.CLR_RXF), SR.RFDF should also be cleared.
    Otherwise, when running in target mode with DMA, if SR.RFDF remains
    asserted, the DMA callback will be fired before the controller sends any
    data.
    
    Take this opportunity to reset all Status Register fields.
    
    Fixes: 5ce3cc567471 ("spi: spi-fsl-dspi: Provide support for DSPI slave mode operation (Vybryd vf610)")
    Signed-off-by: Larisa Grigore <[email protected]>
    Signed-off-by: James Clark <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-fsl-dspi: restrict register range for regmap access [+ + +]
Author: Larisa Grigore <[email protected]>
Date:   Thu May 22 15:51:30 2025 +0100

    spi: spi-fsl-dspi: restrict register range for regmap access
    
    [ Upstream commit 283ae0c65e9c592f4a1ba4f31917f5e766da7f31 ]
    
    DSPI registers are NOT continuous, some registers are reserved and
    accessing them from userspace will trigger external abort, add regmap
    register access table to avoid below abort.
    
      For example on S32G:
    
      # cat /sys/kernel/debug/regmap/401d8000.spi/registers
    
      Internal error: synchronous external abort: 96000210 1 PREEMPT SMP
      ...
      Call trace:
      regmap_mmio_read32le+0x24/0x48
      regmap_mmio_read+0x48/0x70
      _regmap_bus_reg_read+0x38/0x48
      _regmap_read+0x68/0x1b0
      regmap_read+0x50/0x78
      regmap_read_debugfs+0x120/0x338
    
    Fixes: 1acbdeb92c87 ("spi/fsl-dspi: Convert to use regmap and add big-endian support")
    Co-developed-by: Xulin Sun <[email protected]>
    Signed-off-by: Xulin Sun <[email protected]>
    Signed-off-by: Larisa Grigore <[email protected]>
    Signed-off-by: James Clark <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-sun4i: fix early activation [+ + +]
Author: Alessandro Grassi <[email protected]>
Date:   Fri May 2 11:55:20 2025 +0200

    spi: spi-sun4i: fix early activation
    
    [ Upstream commit fb98bd0a13de2c9d96cb5c00c81b5ca118ac9d71 ]
    
    The SPI interface is activated before the CPOL setting is applied. In
    that moment, the clock idles high and CS goes low. After a short delay,
    CPOL and other settings are applied, which may cause the clock to change
    state and idle low. This transition is not part of a clock cycle, and it
    can confuse the receiving device.
    
    To prevent this unexpected transition, activate the interface while CPOL
    and the other settings are being applied.
    
    Signed-off-by: Alessandro Grassi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: zynqmp-gqspi: Always acknowledge interrupts [+ + +]
Author: Sean Anderson <[email protected]>
Date:   Thu Jan 16 17:41:30 2025 -0500

    spi: zynqmp-gqspi: Always acknowledge interrupts
    
    [ Upstream commit 89785306453ce6d949e783f6936821a0b7649ee2 ]
    
    RXEMPTY can cause an IRQ, even though we may not do anything about it
    (such as if we are waiting for more received data). We must still handle
    these IRQs because we can tell they were caused by the device.
    
    Signed-off-by: Sean Anderson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
SUNRPC: rpc_clnt_set_transport() must not change the autobind setting [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Mon Mar 24 19:35:01 2025 -0400

    SUNRPC: rpc_clnt_set_transport() must not change the autobind setting
    
    [ Upstream commit bf9be373b830a3e48117da5d89bb6145a575f880 ]
    
    The autobind setting was supposed to be determined in rpc_create(),
    since commit c2866763b402 ("SUNRPC: use sockaddr + size when creating
    remote transport endpoints").
    
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

SUNRPC: rpcbind should never reset the port to the value '0' [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Mon Mar 24 19:05:48 2025 -0400

    SUNRPC: rpcbind should never reset the port to the value '0'
    
    [ Upstream commit 214c13e380ad7636631279f426387f9c4e3c14d9 ]
    
    If we already had a valid port number for the RPC service, then we
    should not allow the rpcbind client to set it to the invalid value '0'.
    
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tcp: bring back NUMA dispersion in inet_ehash_locks_alloc() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Mar 5 13:05:50 2025 +0000

    tcp: bring back NUMA dispersion in inet_ehash_locks_alloc()
    
    [ Upstream commit f8ece40786c9342249aa0a1b55e148ee23b2a746 ]
    
    We have platforms with 6 NUMA nodes and 480 cpus.
    
    inet_ehash_locks_alloc() currently allocates a single 64KB page
    to hold all ehash spinlocks. This adds more pressure on a single node.
    
    Change inet_ehash_locks_alloc() to use vmalloc() to spread
    the spinlocks on all online nodes, driven by NUMA policies.
    
    At boot time, NUMA policy is interleave=all, meaning that
    tcp_hashinfo.ehash_locks gets hash dispersion on all nodes.
    
    Tested:
    
    lack5:~# grep inet_ehash_locks_alloc /proc/vmallocinfo
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    lack5:~# echo 8192 >/proc/sys/net/ipv4/tcp_child_ehash_entries
    lack5:~# numactl --interleave=all unshare -n bash -c "grep inet_ehash_locks_alloc /proc/vmallocinfo"
    0x000000004e99d30c-0x00000000763f3279   36864 inet_ehash_locks_alloc+0x90/0x100 pages=8 vmalloc N0=1 N1=2 N2=2 N3=1 N4=1 N5=1
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    lack5:~# numactl --interleave=0,5 unshare -n bash -c "grep inet_ehash_locks_alloc /proc/vmallocinfo"
    0x00000000fd73a33e-0x0000000004b9a177   36864 inet_ehash_locks_alloc+0x90/0x100 pages=8 vmalloc N0=4 N5=4
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    lack5:~# echo 1024 >/proc/sys/net/ipv4/tcp_child_ehash_entries
    lack5:~# numactl --interleave=all unshare -n bash -c "grep inet_ehash_locks_alloc /proc/vmallocinfo"
    0x00000000db07d7a2-0x00000000ad697d29    8192 inet_ehash_locks_alloc+0x90/0x100 pages=1 vmalloc N2=1
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Tested-by: Jason Xing <[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]>

tcp: reorganize tcp_in_ack_event() and tcp_count_delivered() [+ + +]
Author: Ilpo Järvinen <[email protected]>
Date:   Wed Mar 5 23:38:41 2025 +0100

    tcp: reorganize tcp_in_ack_event() and tcp_count_delivered()
    
    [ Upstream commit 149dfb31615e22271d2525f078c95ea49bc4db24 ]
    
    - Move tcp_count_delivered() earlier and split tcp_count_delivered_ce()
      out of it
    - Move tcp_in_ack_event() later
    - While at it, remove the inline from tcp_in_ack_event() and let
      the compiler to decide
    
    Accurate ECN's heuristics does not know if there is going
    to be ACE field based CE counter increase or not until after
    rtx queue has been processed. Only then the number of ACKed
    bytes/pkts is available. As CE or not affects presence of
    FLAG_ECE, that information for tcp_in_ack_event is not yet
    available in the old location of the call to tcp_in_ack_event().
    
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Chia-Yu Chang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/drivers/qoriq: Power down TMU on system suspend [+ + +]
Author: Alice Guo <[email protected]>
Date:   Mon Dec 9 11:48:59 2024 -0500

    thermal/drivers/qoriq: Power down TMU on system suspend
    
    [ Upstream commit 229f3feb4b0442835b27d519679168bea2de96c2 ]
    
    Enable power-down of TMU (Thermal Management Unit) for TMU version 2 during
    system suspend to save power. Save approximately 4.3mW on VDD_ANA_1P8 on
    i.MX93 platforms.
    
    Signed-off-by: Alice Guo <[email protected]>
    Signed-off-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
timer_list: Don't use %pK through printk() [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Tue Mar 11 10:54:47 2025 +0100

    timer_list: Don't use %pK through printk()
    
    [ Upstream commit a52067c24ccf6ee4c85acffa0f155e9714f9adce ]
    
    This reverts commit f590308536db ("timer debug: Hide kernel addresses via
    %pK in /proc/timer_list")
    
    The timer list helper SEQ_printf() uses either the real seq_printf() for
    procfs output or vprintk() to print to the kernel log, when invoked from
    SysRq-q. It uses %pK for printing pointers.
    
    In the past %pK was prefered over %p as it would not leak raw pointer
    values into the kernel log. Since commit ad67b74d2469 ("printk: hash
    addresses printed with %p") the regular %p has been improved to avoid this
    issue.
    
    Furthermore, restricted pointers ("%pK") were never meant to be used
    through printk(). They can still unintentionally leak raw pointers or
    acquire sleeping looks in atomic contexts.
    
    Switch to the regular pointer formatting which is safer, easier to reason
    about and sufficient here.
    
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/lkml/20250113171731-dc10e3c1-da64-4af0-b767-7c7070468023@linutronix.de/
    Link: https://lore.kernel.org/all/20250311-restricted-pointers-timer-v1-1-6626b91e54ab@linutronix.de
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/build: Don't pass test log files to linker [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Tue Mar 11 14:36:23 2025 -0700

    tools/build: Don't pass test log files to linker
    
    [ Upstream commit 935e7cb5bb80106ff4f2fe39640f430134ef8cd8 ]
    
    Separate test log files from object files. Depend on test log output
    but don't pass to the linker.
    
    Reviewed-by: James Clark <[email protected]>
    Signed-off-by: Ian Rogers <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Namhyung Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tpm: tis: Double the timeout B to 4s [+ + +]
Author: Michal Suchanek <[email protected]>
Date:   Fri Apr 4 10:23:14 2025 +0200

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

 
tracing: Mark binary printing functions with __printf() attribute [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Mar 21 16:40:49 2025 +0200

    tracing: Mark binary printing functions with __printf() attribute
    
    [ Upstream commit 196a062641fe68d9bfe0ad36b6cd7628c99ad22c ]
    
    Binary printing functions are using printf() type of format, and compiler
    is not happy about them as is:
    
    kernel/trace/trace.c:3292:9: error: function ‘trace_vbprintk’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
    kernel/trace/trace_seq.c:182:9: error: function ‘trace_seq_bprintf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
    
    Fix the compilation errors by adding __printf() attribute.
    
    While at it, move existing __printf() attributes from the implementations
    to the declarations. IT also fixes incorrect attribute parameters that are
    used for trace_array_printk().
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Reviewed-by: Petr Mladek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Petr Mladek <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
um: let 'make clean' properly clean underlying SUBARCH as well [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Wed May 7 16:49:33 2025 +0900

    um: let 'make clean' properly clean underlying SUBARCH as well
    
    [ Upstream commit ab09da75700e9d25c7dfbc7f7934920beb5e39b9 ]
    
    Building the kernel with O= is affected by stale in-tree build artifacts.
    
    So, if the source tree is not clean, Kbuild displays the following:
    
      $ make ARCH=um O=build defconfig
      make[1]: Entering directory '/.../linux/build'
      ***
      *** The source tree is not clean, please run 'make ARCH=um mrproper'
      *** in /.../linux
      ***
      make[2]: *** [/.../linux/Makefile:673: outputmakefile] Error 1
      make[1]: *** [/.../linux/Makefile:248: __sub-make] Error 2
      make[1]: Leaving directory '/.../linux/build'
      make: *** [Makefile:248: __sub-make] Error 2
    
    Usually, running 'make mrproper' is sufficient for cleaning the source
    tree for out-of-tree builds.
    
    However, building UML generates build artifacts not only in arch/um/,
    but also in the SUBARCH directory (i.e., arch/x86/). If in-tree stale
    files remain under arch/x86/, Kbuild will reuse them instead of creating
    new ones under the specified build directory.
    
    This commit makes 'make ARCH=um clean' recurse into the SUBARCH directory.
    
    Reported-by: Shuah Khan <[email protected]>
    Closes: https://lore.kernel.org/lkml/[email protected]/
    Signed-off-by: Masahiro Yamada <[email protected]>
    Acked-by: Johannes Berg <[email protected]>
    Reviewed-by: David Gow <[email protected]>
    Reviewed-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

um: Store full CSGSFS and SS register from mcontext [+ + +]
Author: Benjamin Berg <[email protected]>
Date:   Mon Feb 24 19:18:19 2025 +0100

    um: Store full CSGSFS and SS register from mcontext
    
    [ Upstream commit cef721e0d53d2b64f2ba177c63a0dfdd7c0daf17 ]
    
    Doing this allows using registers as retrieved from an mcontext to be
    pushed to a process using PTRACE_SETREGS.
    
    It is not entirely clear to me why CSGSFS was masked. Doing so creates
    issues when using the mcontext as process state in seccomp and simply
    copying the register appears to work perfectly fine for ptrace.
    
    Signed-off-by: Benjamin Berg <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

um: Update min_low_pfn to match changes in uml_reserved [+ + +]
Author: Tiwei Bie <[email protected]>
Date:   Fri Feb 21 12:18:55 2025 +0800

    um: Update min_low_pfn to match changes in uml_reserved
    
    [ Upstream commit e82cf3051e6193f61e03898f8dba035199064d36 ]
    
    When uml_reserved is updated, min_low_pfn must also be updated
    accordingly. Otherwise, min_low_pfn will not accurately reflect
    the lowest available PFN.
    
    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]>

 
vfio/pci: Handle INTx IRQ_NOTCONNECTED [+ + +]
Author: Alex Williamson <[email protected]>
Date:   Tue Mar 11 17:06:21 2025 -0600

    vfio/pci: Handle INTx IRQ_NOTCONNECTED
    
    [ Upstream commit 860be250fc32de9cb24154bf21b4e36f40925707 ]
    
    Some systems report INTx as not routed by setting pdev->irq to
    IRQ_NOTCONNECTED, resulting in a -ENOTCONN error when trying to
    setup eventfd signaling.  Include this in the set of conditions
    for which the PIN register is virtualized to zero.
    
    Additionally consolidate vfio_pci_get_irq_count() to use this
    virtualized value in reporting INTx support via ioctl and sanity
    checking ioctl paths since pdev->irq is re-used when the device
    is in MSI mode.
    
    The combination of these results in both the config space of the
    device and the ioctl interface behaving as if the device does not
    support INTx.
    
    Reviewed-by: Kevin Tian <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN [+ + +]
Author: Zhongqiu Han <[email protected]>
Date:   Wed Mar 12 21:04:12 2025 +0800

    virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN
    
    [ Upstream commit 2e2f925fe737576df2373931c95e1a2b66efdfef ]
    
    syzbot reports a data-race when accessing the event_triggered, here is the
    simplified stack when the issue occurred:
    
    ==================================================================
    BUG: KCSAN: data-race in virtqueue_disable_cb / virtqueue_enable_cb_delayed
    
    write to 0xffff8881025bc452 of 1 bytes by task 3288 on cpu 0:
     virtqueue_enable_cb_delayed+0x42/0x3c0 drivers/virtio/virtio_ring.c:2653
     start_xmit+0x230/0x1310 drivers/net/virtio_net.c:3264
     __netdev_start_xmit include/linux/netdevice.h:5151 [inline]
     netdev_start_xmit include/linux/netdevice.h:5160 [inline]
     xmit_one net/core/dev.c:3800 [inline]
    
    read to 0xffff8881025bc452 of 1 bytes by interrupt on cpu 1:
     virtqueue_disable_cb_split drivers/virtio/virtio_ring.c:880 [inline]
     virtqueue_disable_cb+0x92/0x180 drivers/virtio/virtio_ring.c:2566
     skb_xmit_done+0x5f/0x140 drivers/net/virtio_net.c:777
     vring_interrupt+0x161/0x190 drivers/virtio/virtio_ring.c:2715
     __handle_irq_event_percpu+0x95/0x490 kernel/irq/handle.c:158
     handle_irq_event_percpu kernel/irq/handle.c:193 [inline]
    
    value changed: 0x01 -> 0x00
    ==================================================================
    
    When the data race occurs, the function virtqueue_enable_cb_delayed() sets
    event_triggered to false, and virtqueue_disable_cb_split/packed() reads it
    as false due to the race condition. Since event_triggered is an unreliable
    hint used for optimization, this should only cause the driver temporarily
    suggest that the device not send an interrupt notification when the event
    index is used.
    
    Fix this KCSAN reported data-race issue by explicitly tagging the access as
    data_racy.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Zhongqiu Han <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vxlan: Annotate FDB data races [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Tue Feb 4 16:55:42 2025 +0200

    vxlan: Annotate FDB data races
    
    [ Upstream commit f6205f8215f12a96518ac9469ff76294ae7bd612 ]
    
    The 'used' and 'updated' fields in the FDB entry structure can be
    accessed concurrently by multiple threads, leading to reports such as
    [1]. Can be reproduced using [2].
    
    Suppress these reports by annotating these accesses using
    READ_ONCE() / WRITE_ONCE().
    
    [1]
    BUG: KCSAN: data-race in vxlan_xmit / vxlan_xmit
    
    write to 0xffff942604d263a8 of 8 bytes by task 286 on cpu 0:
     vxlan_xmit+0xb29/0x2380
     dev_hard_start_xmit+0x84/0x2f0
     __dev_queue_xmit+0x45a/0x1650
     packet_xmit+0x100/0x150
     packet_sendmsg+0x2114/0x2ac0
     __sys_sendto+0x318/0x330
     __x64_sys_sendto+0x76/0x90
     x64_sys_call+0x14e8/0x1c00
     do_syscall_64+0x9e/0x1a0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    read to 0xffff942604d263a8 of 8 bytes by task 287 on cpu 2:
     vxlan_xmit+0xadf/0x2380
     dev_hard_start_xmit+0x84/0x2f0
     __dev_queue_xmit+0x45a/0x1650
     packet_xmit+0x100/0x150
     packet_sendmsg+0x2114/0x2ac0
     __sys_sendto+0x318/0x330
     __x64_sys_sendto+0x76/0x90
     x64_sys_call+0x14e8/0x1c00
     do_syscall_64+0x9e/0x1a0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    value changed: 0x00000000fffbac6e -> 0x00000000fffbac6f
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 2 UID: 0 PID: 287 Comm: mausezahn Not tainted 6.13.0-rc7-01544-gb4b270f11a02 #5
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
    
    [2]
     #!/bin/bash
    
     set +H
     echo whitelist > /sys/kernel/debug/kcsan
     echo !vxlan_xmit > /sys/kernel/debug/kcsan
    
     ip link add name vx0 up type vxlan id 10010 dstport 4789 local 192.0.2.1
     bridge fdb add 00:11:22:33:44:55 dev vx0 self static dst 198.51.100.1
     taskset -c 0 mausezahn vx0 -a own -b 00:11:22:33:44:55 -c 0 -q &
     taskset -c 2 mausezahn vx0 -a own -b 00:11:22:33:44:55 -c 0 -q &
    
    Reviewed-by: Petr Machata <[email protected]>
    Signed-off-by: Ido Schimmel <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath9k: return by of_get_mac_address [+ + +]
Author: Rosen Penev <[email protected]>
Date:   Tue Nov 5 14:23:26 2024 -0800

    wifi: ath9k: return by of_get_mac_address
    
    [ Upstream commit dfffb317519f88534bb82797f055f0a2fd867e7b ]
    
    When using nvmem, ath9k could potentially be loaded before nvmem, which
    loads after mtd. This is an issue if DT contains an nvmem mac address.
    
    If nvmem is not ready in time for ath9k, -EPROBE_DEFER is returned. Pass
    it to _probe so that ath9k can properly grab a potentially present MAC
    address.
    
    Signed-off-by: Rosen Penev <[email protected]>
    Acked-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: don't unconditionally call drv_mgd_complete_tx() [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed Feb 5 11:39:22 2025 +0200

    wifi: mac80211: don't unconditionally call drv_mgd_complete_tx()
    
    [ Upstream commit 1798271b3604b902d45033ec569f2bf77e94ecc2 ]
    
    We might not have called drv_mgd_prepare_tx(), so only call
    drv_mgd_complete_tx() under the same conditions.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205110958.e091fc39a351.Ie6a3cdca070612a0aa4b3c6914ab9ed602d1f456@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: remove misplaced drv_mgd_complete_tx() call [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed Feb 5 11:39:21 2025 +0200

    wifi: mac80211: remove misplaced drv_mgd_complete_tx() call
    
    [ Upstream commit f4995cdc4d02d0abc8e9fcccad5c71ce676c1e3f ]
    
    In the original commit 15fae3410f1d ("mac80211: notify driver on
    mgd TX completion") I evidently made a mistake and placed the
    call in the "associated" if, rather than the "assoc_data". Later
    I noticed the missing call and placed it in commit c042600c17d8
    ("wifi: mac80211: adding missing drv_mgd_complete_tx() call"),
    but didn't remove the wrong one. Remove it now.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205110958.6ed954179bbf.Id8ef8835b7e6da3bf913c76f77d201017dc8a3c9@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: only mark tx-status-failed frames as ACKed on mt76x0/2 [+ + +]
Author: Felix Fietkau <[email protected]>
Date:   Tue Mar 11 11:36:43 2025 +0100

    wifi: mt76: only mark tx-status-failed frames as ACKed on mt76x0/2
    
    [ Upstream commit 0c5a89ceddc1728a40cb3313948401dd70e3c649 ]
    
    The interrupt status polling is unreliable, which can cause status events
    to get lost. On all newer chips, txs-timeout is an indication that the
    packet was either never sent, or never acked.
    Fixes issues with inactivity polling.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Sun Jan 26 16:03:11 2025 +0200

    wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate
    
    [ Upstream commit 00451eb3bec763f708e7e58326468c1e575e5a66 ]
    
    Some users want to plug two identical USB devices at the same time.
    This static variable could theoretically cause them to use incorrect
    TX power values.
    
    Move the variable to the caller and pass a pointer to it to
    rtw8822b_set_tx_power_index_by_rate().
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix download_firmware_validate() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 4 20:37:36 2025 +0200

    wifi: rtw88: Fix download_firmware_validate() for RTL8814AU
    
    [ Upstream commit 9e8243025cc06abc975c876dffda052073207ab3 ]
    
    After the firmware is uploaded, download_firmware_validate() checks some
    bits in REG_MCUFW_CTRL to see if everything went okay. The
    RTL8814AU power on sequence sets bits 13 and 12 to 2, which this
    function does not expect, so it thinks the firmware upload failed.
    
    Make download_firmware_validate() ignore bits 13 and 12.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31 [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 18 01:29:52 2025 +0200

    wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31
    
    [ Upstream commit 86d04f8f991a0509e318fe886d5a1cf795736c7d ]
    
    This function translates the rate number reported by the hardware into
    something mac80211 can understand. It was ignoring the 3SS and 4SS HT
    rates. Translate them too.
    
    Also set *nss to 0 for the HT rates, just to make sure it's
    initialised.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 18 01:30:22 2025 +0200

    wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU
    
    [ Upstream commit c7eea1ba05ca5b0dbf77a27cf2e1e6e2fb3c0043 ]
    
    Set the RX mask and the highest RX rate according to the number of
    spatial streams the chip can receive. For RTL8814AU that is 3.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 18 01:30:48 2025 +0200

    wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU
    
    [ Upstream commit 6be7544d19fcfcb729495e793bc6181f85bb8949 ]
    
    Set the MCS maps and the highest rates according to the number of
    spatial streams the chip has. For RTL8814AU that is 3.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2 [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Thu Oct 31 04:06:17 2024 -0700

    x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2
    
    [ Upstream commit 98fdaeb296f51ef08e727a7cc72e5b5c864c4f4d ]
    
    Change the default value of spectre v2 in user mode to respect the
    CONFIG_MITIGATION_SPECTRE_V2 config option.
    
    Currently, user mode spectre v2 is set to auto
    (SPECTRE_V2_USER_CMD_AUTO) by default, even if
    CONFIG_MITIGATION_SPECTRE_V2 is disabled.
    
    Set the spectre_v2 value to auto (SPECTRE_V2_USER_CMD_AUTO) if the
    Spectre v2 config (CONFIG_MITIGATION_SPECTRE_V2) is enabled, otherwise
    set the value to none (SPECTRE_V2_USER_CMD_NONE).
    
    Important to say the command line argument "spectre_v2_user" overwrites
    the default value in both cases.
    
    When CONFIG_MITIGATION_SPECTRE_V2 is not set, users have the flexibility
    to opt-in for specific mitigations independently. In this scenario,
    setting spectre_v2= will not enable spectre_v2_user=, and command line
    options spectre_v2_user and spectre_v2 are independent when
    CONFIG_MITIGATION_SPECTRE_V2=n.
    
    Signed-off-by: Breno Leitao <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Pawan Gupta <[email protected]>
    Acked-by: Josh Poimboeuf <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: David Kaplan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/build: Fix broken copy command in genimage.sh when making isoimage [+ + +]
Author: Nir Lichtman <[email protected]>
Date:   Fri Jan 10 12:05:00 2025 +0000

    x86/build: Fix broken copy command in genimage.sh when making isoimage
    
    [ Upstream commit e451630226bd09dc730eedb4e32cab1cc7155ae8 ]
    
    Problem: Currently when running the "make isoimage" command there is an
    error related to wrong parameters passed to the cp command:
    
      "cp: missing destination file operand after 'arch/x86/boot/isoimage/'"
    
    This is caused because FDINITRDS is an empty array.
    
    Solution: Check if FDINITRDS is empty before executing the "cp" command,
    similar to how it is done in the case of hdimage.
    
    Signed-off-by: Nir Lichtman <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Masahiro Yamada <[email protected]>
    Cc: Michal Marek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/its: Fix undefined reference to cpu_wants_rethunk_at() [+ + +]
Author: Pawan Gupta <[email protected]>
Date:   Thu May 29 23:01:54 2025 -0700

    x86/its: Fix undefined reference to cpu_wants_rethunk_at()
    
    Below error was reported in a 32-bit kernel build:
    
      static_call.c:(.ref.text+0x46): undefined reference to `cpu_wants_rethunk_at'
      make[1]: [Makefile:1234: vmlinux] Error
    
    This is because the definition of cpu_wants_rethunk_at() depends on
    CONFIG_STACK_VALIDATION which is only enabled in 64-bit mode.
    
    Define the empty function for CONFIG_STACK_VALIDATION=n, rethunk mitigation
    is anyways not supported without it.
    
    Reported-by: Guenter Roeck <[email protected]>
    Fixes: 5d19a0574b75 ("x86/its: Add support for ITS-safe return thunk")
    Signed-off-by: Pawan Gupta <[email protected]>
    Link: https://lore.kernel.org/stable/[email protected]/
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/kaslr: Reduce KASLR entropy on most x86 systems [+ + +]
Author: Balbir Singh <[email protected]>
Date:   Fri Feb 7 10:42:34 2025 +1100

    x86/kaslr: Reduce KASLR entropy on most x86 systems
    
    [ Upstream commit 7ffb791423c7c518269a9aad35039ef824a40adb ]
    
    When CONFIG_PCI_P2PDMA=y (which is basically enabled on all
    large x86 distros), it maps the PFN's via a ZONE_DEVICE
    mapping using devm_memremap_pages(). The mapped virtual
    address range corresponds to the pci_resource_start()
    of the BAR address and size corresponding to the BAR length.
    
    When KASLR is enabled, the direct map range of the kernel is
    reduced to the size of physical memory plus additional padding.
    If the BAR address is beyond this limit, PCI peer to peer DMA
    mappings fail.
    
    Fix this by not shrinking the size of the direct map when
    CONFIG_PCI_P2PDMA=y.
    
    This reduces the total available entropy, but it's better than
    the current work around of having to disable KASLR completely.
    
    [ mingo: Clarified the changelog to point out the broad impact ... ]
    
    Signed-off-by: Balbir Singh <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Acked-by: Bjorn Helgaas <[email protected]> # drivers/pci/Kconfig
    Cc: Linus Torvalds <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Link: https://lore.kernel.org/lkml/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    --
     arch/x86/mm/kaslr.c | 10 ++++++++--
     drivers/pci/Kconfig |  6 ++++++
     2 files changed, 14 insertions(+), 2 deletions(-)
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/nmi: Add an emergency handler in nmi_desc & use it in nmi_shootdown_cpus() [+ + +]
Author: Waiman Long <[email protected]>
Date:   Thu Feb 6 14:18:44 2025 -0500

    x86/nmi: Add an emergency handler in nmi_desc & use it in nmi_shootdown_cpus()
    
    [ Upstream commit fe37c699ae3eed6e02ee55fbf5cb9ceb7fcfd76c ]
    
    Depending on the type of panics, it was found that the
    __register_nmi_handler() function can be called in NMI context from
    nmi_shootdown_cpus() leading to a lockdep splat:
    
      WARNING: inconsistent lock state
      inconsistent {INITIAL USE} -> {IN-NMI} usage.
    
       lock(&nmi_desc[0].lock);
       <Interrupt>
         lock(&nmi_desc[0].lock);
    
      Call Trace:
        _raw_spin_lock_irqsave
        __register_nmi_handler
        nmi_shootdown_cpus
        kdump_nmi_shootdown_cpus
        native_machine_crash_shutdown
        __crash_kexec
    
    In this particular case, the following panic message was printed before:
    
      Kernel panic - not syncing: Fatal hardware error!
    
    This message seemed to be given out from __ghes_panic() running in
    NMI context.
    
    The __register_nmi_handler() function which takes the nmi_desc lock
    with irq disabled shouldn't be called from NMI context as this can
    lead to deadlock.
    
    The nmi_shootdown_cpus() function can only be invoked once. After the
    first invocation, all other CPUs should be stuck in the newly added
    crash_nmi_callback() and cannot respond to a second NMI.
    
    Fix it by adding a new emergency NMI handler to the nmi_desc
    structure and provide a new set_emergency_nmi_handler() helper to set
    crash_nmi_callback() in any context. The new emergency handler will
    preempt other handlers in the linked list. That will eliminate the need
    to take any lock and serve the panic in NMI use case.
    
    Signed-off-by: Waiman Long <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Rik van Riel <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
xen/swiotlb: relax alignment requirements [+ + +]
Author: Juergen Gross <[email protected]>
Date:   Mon Feb 10 08:43:39 2025 +0100

    xen/swiotlb: relax alignment requirements
    
    commit 85fcb57c983f423180ba6ec5d0034242da05cc54 upstream.
    
    When mapping a buffer for DMA via .map_page or .map_sg DMA operations,
    there is no need to check the machine frames to be aligned according
    to the mapped areas size. All what is needed in these cases is that the
    buffer is contiguous at machine level.
    
    So carve out the alignment check from range_straddles_page_boundary()
    and move it to a helper called by xen_swiotlb_alloc_coherent() and
    xen_swiotlb_free_coherent() directly.
    
    Fixes: 9f40ec84a797 ("xen/swiotlb: add alignment check for dma buffers")
    Reported-by: Jan Vejvalka <[email protected]>
    Tested-by: Jan Vejvalka <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Reviewed-by: Stefano Stabellini <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Harshvardhan Jha <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xen: Add support for XenServer 6.1 platform device [+ + +]
Author: Frediano Ziglio <[email protected]>
Date:   Thu Feb 27 14:50:15 2025 +0000

    xen: Add support for XenServer 6.1 platform device
    
    [ Upstream commit 2356f15caefc0cc63d9cc5122641754f76ef9b25 ]
    
    On XenServer on Windows machine a platform device with ID 2 instead of
    1 is used.
    
    This device is mainly identical to device 1 but due to some Windows
    update behaviour it was decided to use a device with a different ID.
    
    This causes compatibility issues with Linux which expects, if Xen
    is detected, to find a Xen platform device (5853:0001) otherwise code
    will crash due to some missing initialization (specifically grant
    tables). Specifically from dmesg
    
        RIP: 0010:gnttab_expand+0x29/0x210
        Code: 90 0f 1f 44 00 00 55 31 d2 48 89 e5 41 57 41 56 41 55 41 89 fd
              41 54 53 48 83 ec 10 48 8b 05 7e 9a 49 02 44 8b 35 a7 9a 49 02
              <8b> 48 04 8d 44 39 ff f7 f1 45 8d 24 06 89 c3 e8 43 fe ff ff
              44 39
        RSP: 0000:ffffba34c01fbc88 EFLAGS: 00010086
        ...
    
    The device 2 is presented by Xapi adding device specification to
    Qemu command line.
    
    Signed-off-by: Frediano Ziglio <[email protected]>
    Acked-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xenbus: Allow PVH dom0 a non-local xenstore [+ + +]
Author: Jason Andryuk <[email protected]>
Date:   Tue May 6 16:44:56 2025 -0400

    xenbus: Allow PVH dom0 a non-local xenstore
    
    [ Upstream commit 90989869baae47ee2aa3bcb6f6eb9fbbe4287958 ]
    
    Make xenbus_init() allow a non-local xenstore for a PVH dom0 - it is
    currently forced to XS_LOCAL.  With Hyperlaunch booting dom0 and a
    xenstore stubdom, dom0 can be handled as a regular XS_HVM following the
    late init path.
    
    Ideally we'd drop the use of xen_initial_domain() and just check for the
    event channel instead.  However, ARM has a xen,enhanced no-xenstore
    mode, where the event channel and PFN would both be 0.  Retain the
    xen_initial_domain() check, and use that for an additional check when
    the event channel is 0.
    
    Check the full 64bit HVM_PARAM_STORE_EVTCHN value to catch the off
    chance that high bits are set for the 32bit event channel.
    
    Signed-off-by: Jason Andryuk <[email protected]>
    Change-Id: I5506da42e4c6b8e85079fefb2f193c8de17c7437
    Reviewed-by: Stefano Stabellini <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm: Sanitize marks before insert [+ + +]
Author: Paul Chaignon <[email protected]>
Date:   Wed May 7 13:31:58 2025 +0200

    xfrm: Sanitize marks before insert
    
    [ Upstream commit 0b91fda3a1f044141e1e615456ff62508c32b202 ]
    
    Prior to this patch, the mark is sanitized (applying the state's mask to
    the state's value) only on inserts when checking if a conflicting XFRM
    state or policy exists.
    
    We discovered in Cilium that this same sanitization does not occur
    in the hot-path __xfrm_state_lookup. In the hot-path, the sk_buff's mark
    is simply compared to the state's value:
    
        if ((mark & x->mark.m) != x->mark.v)
            continue;
    
    Therefore, users can define unsanitized marks (ex. 0xf42/0xf00) which will
    never match any packet.
    
    This commit updates __xfrm_state_insert and xfrm_policy_insert to store
    the sanitized marks, thus removing this footgun.
    
    This has the side effect of changing the ip output, as the
    returned mark will have the mask applied to it when printed.
    
    Fixes: 3d6acfa7641f ("xfrm: SA lookups with mark")
    Signed-off-by: Paul Chaignon <[email protected]>
    Signed-off-by: Louis DeLosSantos <[email protected]>
    Co-developed-by: Louis DeLosSantos <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>