Changelog in Linux kernel 6.6.83

 
ALSA: hda/realtek - add supported Mic Mute LED for Lenovo platform [+ + +]
Author: Kailang Yang <kailang@realtek.com>
Date:   Mon Mar 3 14:56:10 2025 +0800

    ALSA: hda/realtek - add supported Mic Mute LED for Lenovo platform
    
    commit f603b159231b0c58f0c27ab39348534063d38223 upstream.
    
    Support Mic Mute LED for ThinkCentre M series.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/c211a2702f1f411e86bd7420d7eebc03@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: update ALC222 depop optimize [+ + +]
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Mar 5 13:54:34 2025 +0800

    ALSA: hda/realtek: update ALC222 depop optimize
    
    commit ca0dedaff92307591f66c9206933fbdfe87add10 upstream.
    
    Add ALC222 its own depop functions for alc_init and alc_shutup.
    
    [note: this fixes pop noise issues on the models with two headphone
     jacks -- tiwai ]
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: intel: Add Dell ALC3271 to power_save denylist [+ + +]
Author: Hoku Ishibe <me@hokuishi.be>
Date:   Sun Feb 23 21:05:17 2025 -0500

    ALSA: hda: intel: Add Dell ALC3271 to power_save denylist
    
    commit 1ee5aa765c22a0577ec552d460bf2035300b4b51 upstream.
    
    Dell XPS 13 7390 with the Realtek ALC3271 codec experiences
    persistent humming noise when the power_save mode is enabled.
    This issue occurs when the codec enters power saving mode,
    leading to unwanted noise from the speakers.
    
    This patch adds the affected model (PCI ID 0x1028:0x0962) to the
    power_save denylist to ensure power_save is disabled by default,
    preventing power-off related noise issues.
    
    Steps to Reproduce
    1. Boot the system with `snd_hda_intel` loaded.
    2. Verify that `power_save` mode is enabled:
    ```sh
    cat /sys/module/snd_hda_intel/parameters/power_save
    ````
    output: 10 (default power save timeout)
    3. Wait for the power save timeout
    4. Observe a persistent humming noise from the speakers
    5. Disable `power_save` manually:
    ```sh
    echo 0 | sudo tee /sys/module/snd_hda_intel/parameters/power_save
    ````
    6. Confirm that the noise disappears immediately.
    
    This issue has been observed on my system, and this patch
    successfully eliminates the unwanted noise. If other users
    experience similar issues, additional reports would be helpful.
    
    Signed-off-by: Hoku Ishibe <me@hokuishi.be>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250224020517.51035-1-me@hokuishi.be
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: realtek: fix incorrect IS_REACHABLE() usage [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Mar 4 15:25:55 2025 +0100

    ALSA: hda: realtek: fix incorrect IS_REACHABLE() usage
    
    commit d0bbe332669c5db32c8c92bc967f8e7f8d460ddf upstream.
    
    The alternative path leads to a build error after a recent change:
    
    sound/pci/hda/patch_realtek.c: In function 'alc233_fixup_lenovo_low_en_micmute_led':
    include/linux/stddef.h:9:14: error: called object is not a function or function pointer
        9 | #define NULL ((void *)0)
          |              ^
    sound/pci/hda/patch_realtek.c:5041:49: note: in expansion of macro 'NULL'
     5041 | #define alc233_fixup_lenovo_line2_mic_hotkey    NULL
          |                                                 ^~~~
    sound/pci/hda/patch_realtek.c:5063:9: note: in expansion of macro 'alc233_fixup_lenovo_line2_mic_hotkey'
     5063 |         alc233_fixup_lenovo_line2_mic_hotkey(codec, fix, action);
    
    Using IS_REACHABLE() is somewhat questionable here anyway since it
    leads to the input code not working when the HDA driver is builtin
    but input is in a loadable module. Replace this with a hard compile-time
    dependency on CONFIG_INPUT. In practice this won't chance much
    other than solve the compiler error because it is rare to require
    sound output but no input support.
    
    Fixes: f603b159231b ("ALSA: hda/realtek - add supported Mic Mute LED for Lenovo platform")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://patch.msgid.link/20250304142620.582191-1-arnd@kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: seq: Avoid module auto-load handling at event delivery [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Mar 1 12:45:29 2025 +0100

    ALSA: seq: Avoid module auto-load handling at event delivery
    
    commit c9ce148ea753bef66686460fa3cec6641cdfbb9f upstream.
    
    snd_seq_client_use_ptr() is supposed to return the snd_seq_client
    object for the given client ID, and it tries to handle the module
    auto-loading when no matching object is found.  Although the module
    handling is performed only conditionally with "!in_interrupt()", this
    condition may be fragile, e.g. when the code is called from the ALSA
    timer callback where the spinlock is temporarily disabled while the
    irq is disabled.  Then his doesn't fit well and spews the error about
    sleep from invalid context, as complained recently by syzbot.
    
    Also, in general, handling the module-loading at each time if no
    matching object is found is really an overkill.  It can be still
    useful when performed at the top-level ioctl or proc reads, but it
    shouldn't be done at event delivery at all.
    
    For addressing the issues above, this patch disables the module
    handling in snd_seq_client_use_ptr() in normal cases like event
    deliveries, but allow only in limited and safe situations.
    A new function client_load_and_use_ptr() is used for the cases where
    the module loading can be done safely, instead.
    
    Reported-by: syzbot+4cb9fad083898f54c517@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/67c272e5.050a0220.dc10f.0159.GAE@google.com
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250301114530.8975-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usx2y: validate nrpacks module parameter on probe [+ + +]
Author: Murad Masimov <m.masimov@mt-integration.ru>
Date:   Mon Mar 3 13:04:13 2025 +0300

    ALSA: usx2y: validate nrpacks module parameter on probe
    
    [ Upstream commit 172a0f509723fe4741d4b8e9190cf434b18320d8 ]
    
    The module parameter defines number of iso packets per one URB. User is
    allowed to set any value to the parameter of type int, which can lead to
    various kinds of weird and incorrect behavior like integer overflows,
    truncations, etc. Number of packets should be a small non-negative number.
    
    Since this parameter is read-only, its value can be validated on driver
    probe.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Murad Masimov <m.masimov@mt-integration.ru>
    Link: https://patch.msgid.link/20250303100413.835-1-m.masimov@mt-integration.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: dts: rockchip: add rs485 support on uart5 of px30-ringneck-haikou [+ + +]
Author: Farouk Bouabid <farouk.bouabid@theobroma-systems.com>
Date:   Thu Feb 8 16:39:56 2024 +0100

    arm64: dts: rockchip: add rs485 support on uart5 of px30-ringneck-haikou
    
    [ Upstream commit 5963d97aa780619ffb66cf4886c0ca1175ccbd3e ]
    
    A hardware switch can set the rs485 transceiver into half or full duplex
    mode.
    
    Switching to the half-duplex mode requires the user to enable em485 on
    uart5 using ioctl, DE/RE are both connected to GPIO0_B5 which is the
    RTS signal for uart0. Implement GPIO0_B5 as rts-gpios with RTS_ON_SEND
    option enabled (default) so that driver mode gets enabled while sending
    (RTS high) and receiver mode gets enabled while not sending (RTS low).
    
    In full-duplex mode (em485 is disabled), DE is connected to GPIO0_B5 and
    RE is grounded (enabled). Since GPIO0_B5 is implemented as rts-gpios, the
    driver mode gets enabled whenever we want to send something and RE is not
    affected (always enabled) in this case by the state of RTS.
    
    Signed-off-by: Farouk Bouabid <farouk.bouabid@theobroma-systems.com>
    Link: https://lore.kernel.org/r/20240208-dev-rx-enable-v6-2-39e68e17a339@theobroma-systems.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Stable-dep-of: 5ae4dca718ea ("arm64: dts: rockchip: Disable DMA for uart5 on px30-ringneck")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: hugetlb: Fix huge_ptep_get_and_clear() for non-present ptes [+ + +]
Author: Ryan Roberts <ryan.roberts@arm.com>
Date:   Wed Feb 26 12:06:52 2025 +0000

    arm64: hugetlb: Fix huge_ptep_get_and_clear() for non-present ptes
    
    commit 49c87f7677746f3c5bd16c81b23700bb6b88bfd4 upstream.
    
    arm64 supports multiple huge_pte sizes. Some of the sizes are covered by
    a single pte entry at a particular level (PMD_SIZE, PUD_SIZE), and some
    are covered by multiple ptes at a particular level (CONT_PTE_SIZE,
    CONT_PMD_SIZE). So the function has to figure out the size from the
    huge_pte pointer. This was previously done by walking the pgtable to
    determine the level and by using the PTE_CONT bit to determine the
    number of ptes at the level.
    
    But the PTE_CONT bit is only valid when the pte is present. For
    non-present pte values (e.g. markers, migration entries), the previous
    implementation was therefore erroneously determining the size. There is
    at least one known caller in core-mm, move_huge_pte(), which may call
    huge_ptep_get_and_clear() for a non-present pte. So we must be robust to
    this case. Additionally the "regular" ptep_get_and_clear() is robust to
    being called for non-present ptes so it makes sense to follow the
    behavior.
    
    Fix this by using the new sz parameter which is now provided to the
    function. Additionally when clearing each pte in a contig range, don't
    gather the access and dirty bits if the pte is not present.
    
    An alternative approach that would not require API changes would be to
    store the PTE_CONT bit in a spare bit in the swap entry pte for the
    non-present case. But it felt cleaner to follow other APIs' lead and
    just pass in the size.
    
    As an aside, PTE_CONT is bit 52, which corresponds to bit 40 in the swap
    entry offset field (layout of non-present pte). Since hugetlb is never
    swapped to disk, this field will only be populated for markers, which
    always set this bit to 0 and hwpoison swap entries, which set the offset
    field to a PFN; So it would only ever be 1 for a 52-bit PVA system where
    memory in that high half was poisoned (I think!). So in practice, this
    bit would almost always be zero for non-present ptes and we would only
    clear the first entry if it was actually a contiguous block. That's
    probably a less severe symptom than if it was always interpreted as 1
    and cleared out potentially-present neighboring PTEs.
    
    Cc: stable@vger.kernel.org
    Fixes: 66b3923a1a0f ("arm64: hugetlb: add support for PTE contiguous bit")
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Link: https://lore.kernel.org/r/20250226120656.2400136-3-ryan.roberts@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
be2net: fix sleeping while atomic bugs in be_ndo_bridge_getlink [+ + +]
Author: Nikolay Aleksandrov <razor@blackwall.org>
Date:   Thu Feb 27 18:41:29 2025 +0200

    be2net: fix sleeping while atomic bugs in be_ndo_bridge_getlink
    
    [ Upstream commit 1a82d19ca2d6835904ee71e2d40fd331098f94a0 ]
    
    Partially revert commit b71724147e73 ("be2net: replace polling with
    sleeping in the FW completion path") w.r.t mcc mutex it introduces and the
    use of usleep_range. The be2net be_ndo_bridge_getlink() callback is
    called with rcu_read_lock, so this code has been broken for a long time.
    Both the mutex_lock and the usleep_range can cause the issue Ian Kumlien
    reported[1]. The call path is:
    be_ndo_bridge_getlink -> be_cmd_get_hsw_config -> be_mcc_notify_wait ->
    be_mcc_wait_compl -> usleep_range()
    
    [1] https://lore.kernel.org/netdev/CAA85sZveppNgEVa_FD+qhOMtG_AavK9_mFiU+jWrMtXmwqefGA@mail.gmail.com/
    
    Tested-by: Ian Kumlien <ian.kumlien@gmail.com>
    Fixes: b71724147e73 ("be2net: replace polling with sleeping in the FW completion path")
    Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
    Link: https://patch.msgid.link/20250227164129.1201164-1-razor@blackwall.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
block: fix conversion of GPT partition name to 7-bit [+ + +]
Author: Olivier Gayot <olivier.gayot@canonical.com>
Date:   Wed Mar 5 10:21:54 2025 +0800

    block: fix conversion of GPT partition name to 7-bit
    
    commit e06472bab2a5393430cc2fbc3211cd3602422c1e upstream.
    
    The utf16_le_to_7bit function claims to, naively, convert a UTF-16
    string to a 7-bit ASCII string. By naively, we mean that it:
     * drops the first byte of every character in the original UTF-16 string
     * checks if all characters are printable, and otherwise replaces them
       by exclamation mark "!".
    
    This means that theoretically, all characters outside the 7-bit ASCII
    range should be replaced by another character. Examples:
    
     * lower-case alpha (ɒ) 0x0252 becomes 0x52 (R)
     * ligature OE (œ) 0x0153 becomes 0x53 (S)
     * hangul letter pieup (ㅂ) 0x3142 becomes 0x42 (B)
     * upper-case gamma (Ɣ) 0x0194 becomes 0x94 (not printable) so gets
       replaced by "!"
    
    The result of this conversion for the GPT partition name is passed to
    user-space as PARTNAME via udev, which is confusing and feels questionable.
    
    However, there is a flaw in the conversion function itself. By dropping
    one byte of each character and using isprint() to check if the remaining
    byte corresponds to a printable character, we do not actually guarantee
    that the resulting character is 7-bit ASCII.
    
    This happens because we pass 8-bit characters to isprint(), which
    in the kernel returns 1 for many values > 0x7f - as defined in ctype.c.
    
    This results in many values which should be replaced by "!" to be kept
    as-is, despite not being valid 7-bit ASCII. Examples:
    
     * e with acute accent (é) 0x00E9 becomes 0xE9 - kept as-is because
       isprint(0xE9) returns 1.
     * euro sign (€) 0x20AC becomes 0xAC - kept as-is because isprint(0xAC)
       returns 1.
    
    This way has broken pyudev utility[1], fixes it by using a mask of 7 bits
    instead of 8 bits before calling isprint.
    
    Link: https://github.com/pyudev/pyudev/issues/490#issuecomment-2685794648 [1]
    Link: https://lore.kernel.org/linux-block/4cac90c2-e414-4ebb-ae62-2a4589d9dc6e@canonical.com/
    Cc: Mulhern <amulhern@redhat.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20250305022154.3903128-1-ming.lei@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Bluetooth: Add check for mgmt_alloc_skb() in mgmt_device_connected() [+ + +]
Author: Haoxiang Li <haoxiang_li2024@163.com>
Date:   Fri Feb 21 16:58:01 2025 +0800

    Bluetooth: Add check for mgmt_alloc_skb() in mgmt_device_connected()
    
    commit d8df010f72b8a32aaea393e36121738bb53ed905 upstream.
    
    Add check for the return value of mgmt_alloc_skb() in
    mgmt_device_connected() to prevent null pointer dereference.
    
    Fixes: e96741437ef0 ("Bluetooth: mgmt: Make use of mgmt_send_event_skb in MGMT_EV_DEVICE_CONNECTED")
    Cc: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bluetooth: Add check for mgmt_alloc_skb() in mgmt_remote_name() [+ + +]
Author: Haoxiang Li <haoxiang_li2024@163.com>
Date:   Fri Feb 21 16:49:47 2025 +0800

    Bluetooth: Add check for mgmt_alloc_skb() in mgmt_remote_name()
    
    commit f2176a07e7b19f73e05c805cf3d130a2999154cb upstream.
    
    Add check for the return value of mgmt_alloc_skb() in
    mgmt_remote_name() to prevent null pointer dereference.
    
    Fixes: ba17bb62ce41 ("Bluetooth: Fix skb allocation in mgmt_remote_name() & mgmt_device_connected()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
bluetooth: btusb: Initialize .owner field of force_poll_sync_fops [+ + +]
Author: Salah Triki <salah.triki@gmail.com>
Date:   Fri Feb 21 22:32:59 2025 +0100

    bluetooth: btusb: Initialize .owner field of force_poll_sync_fops
    
    [ Upstream commit cbf85b9cb80bec6345ffe0368dfff98386f4714f ]
    
    Initialize .owner field of force_poll_sync_fops to THIS_MODULE in order to
    prevent btusb from being unloaded while its operations are in use.
    
    Fixes: 800fe5ec302e ("Bluetooth: btusb: Add support for queuing during polling interval")
    Signed-off-by: Salah Triki <salah.triki@gmail.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bus: mhi: host: pci_generic: Use pci_try_reset_function() to avoid deadlock [+ + +]
Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Date:   Wed Jan 8 19:09:27 2025 +0530

    bus: mhi: host: pci_generic: Use pci_try_reset_function() to avoid deadlock
    
    commit a321d163de3d8aa38a6449ab2becf4b1581aed96 upstream.
    
    There are multiple places from where the recovery work gets scheduled
    asynchronously. Also, there are multiple places where the caller waits
    synchronously for the recovery to be completed. One such place is during
    the PM shutdown() callback.
    
    If the device is not alive during recovery_work, it will try to reset the
    device using pci_reset_function(). This function internally will take the
    device_lock() first before resetting the device. By this time, if the lock
    has already been acquired, then recovery_work will get stalled while
    waiting for the lock. And if the lock was already acquired by the caller
    which waits for the recovery_work to be completed, it will lead to
    deadlock.
    
    This is what happened on the X1E80100 CRD device when the device died
    before shutdown() callback. Driver core calls the driver's shutdown()
    callback while holding the device_lock() leading to deadlock.
    
    And this deadlock scenario can occur on other paths as well, like during
    the PM suspend() callback, where the driver core would hold the
    device_lock() before calling driver's suspend() callback. And if the
    recovery_work was already started, it could lead to deadlock. This is also
    observed on the X1E80100 CRD.
    
    So to fix both issues, use pci_try_reset_function() in recovery_work. This
    function first checks for the availability of the device_lock() before
    trying to reset the device. If the lock is available, it will acquire it
    and reset the device. Otherwise, it will return -EAGAIN. If that happens,
    recovery_work will fail with the error message "Recovery failed" as not
    much could be done.
    
    Cc: stable@vger.kernel.org # 5.12
    Reported-by: Johan Hovold <johan@kernel.org>
    Closes: https://lore.kernel.org/mhi/Z1me8iaK7cwgjL92@hovoldconsulting.com
    Fixes: 7389337f0a78 ("mhi: pci_generic: Add suspend/resume/recovery procedure")
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Analyzed-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/mhi/Z2KKjWY2mPen6GPL@hovoldconsulting.com/
    Reviewed-by: Loic Poulain <loic.poulain@linaro.org>
    Link: https://lore.kernel.org/r/20250108-mhi_recovery_fix-v1-1-a0a00a17da46@linaro.org
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
caif_virtio: fix wrong pointer check in cfv_probe() [+ + +]
Author: Vitaliy Shevtsov <v.shevtsov@mt-integration.ru>
Date:   Thu Feb 27 23:46:27 2025 +0500

    caif_virtio: fix wrong pointer check in cfv_probe()
    
    [ Upstream commit a466fd7e9fafd975949e5945e2f70c33a94b1a70 ]
    
    del_vqs() frees virtqueues, therefore cfv->vq_tx pointer should be checked
    for NULL before calling it, not cfv->vdev. Also the current implementation
    is redundant because the pointer cfv->vdev is dereferenced before it is
    checked for NULL.
    
    Fix this by checking cfv->vq_tx for NULL instead of cfv->vdev before
    calling del_vqs().
    
    Fixes: 0d2e1a2926b1 ("caif_virtio: Introduce caif over virtio")
    Signed-off-by: Vitaliy Shevtsov <v.shevtsov@mt-integration.ru>
    Reviewed-by: Gerhard Engleder <gerhard@engleder-embedded.com>
    Link: https://patch.msgid.link/20250227184716.4715-1-v.shevtsov@mt-integration.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cdx: Fix possible UAF error in driver_override_show() [+ + +]
Author: Qiu-ji Chen <chenqiuji666@gmail.com>
Date:   Sat Jan 18 15:08:33 2025 +0800

    cdx: Fix possible UAF error in driver_override_show()
    
    commit 91d44c1afc61a2fec37a9c7a3485368309391e0b upstream.
    
    Fixed a possible UAF problem in driver_override_show() in drivers/cdx/cdx.c
    
    This function driver_override_show() is part of DEVICE_ATTR_RW, which
    includes both driver_override_show() and driver_override_store().
    These functions can be executed concurrently in sysfs.
    
    The driver_override_store() function uses driver_set_override() to
    update the driver_override value, and driver_set_override() internally
    locks the device (device_lock(dev)). If driver_override_show() reads
    cdx_dev->driver_override without locking, it could potentially access
    a freed pointer if driver_override_store() frees the string
    concurrently. This could lead to printing a kernel address, which is a
    security risk since DEVICE_ATTR can be read by all users.
    
    Additionally, a similar pattern is used in drivers/amba/bus.c, as well
    as many other bus drivers, where device_lock() is taken in the show
    function, and it has been working without issues.
    
    This potential bug was detected by our experimental static analysis
    tool, which analyzes locking APIs and paired functions to identify
    data races and atomicity violations.
    
    Fixes: 1f86a00c1159 ("bus/fsl-mc: add support for 'driver_override' in the mc-bus")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Qiu-ji Chen <chenqiuji666@gmail.com>
    Link: https://lore.kernel.org/r/20250118070833.27201-1-chenqiuji666@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
char: misc: deallocate static minor in error path [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date:   Thu Jan 23 09:32:49 2025 -0300

    char: misc: deallocate static minor in error path
    
    commit 6d991f569c5ef6eaeadf1238df2c36e3975233ad upstream.
    
    When creating sysfs files fail, the allocated minor must be freed such that
    it can be later reused. That is specially harmful for static minor numbers,
    since those would always fail to register later on.
    
    Fixes: 6d04d2b554b1 ("misc: misc_minor_alloc to use ida for all dynamic/misc dynamic minors")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Link: https://lore.kernel.org/r/20250123123249.4081674-5-cascardo@igalia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dma: kmsan: export kmsan_handle_dma() for modules [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Tue Feb 18 10:14:11 2025 +0100

    dma: kmsan: export kmsan_handle_dma() for modules
    
    commit 19fac3c93991502a22c5132824c40b6a2e64b136 upstream.
    
    kmsan_handle_dma() is used by virtio_ring() which can be built as a
    module.  kmsan_handle_dma() needs to be exported otherwise building the
    virtio_ring fails.
    
    Export kmsan_handle_dma for modules.
    
    Link: https://lkml.kernel.org/r/20250218091411.MMS3wBN9@linutronix.de
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202502150634.qjxwSeJR-lkp@intel.com/
    Fixes: 7ade4f10779c ("dma: kmsan: unpoison DMA mappings")
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Macro Elver <elver@google.com>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drivers: core: fix device leak in __fw_devlink_relax_cycles() [+ + +]
Author: Luca Ceresoli <luca.ceresoli@bootlin.com>
Date:   Thu Feb 13 15:05:13 2025 +0100

    drivers: core: fix device leak in __fw_devlink_relax_cycles()
    
    commit 78eb41f518f414378643ab022241df2a9dcd008b upstream.
    
    Commit bac3b10b78e5 ("driver core: fw_devlink: Stop trying to optimize
    cycle detection logic") introduced a new struct device *con_dev and a
    get_dev_from_fwnode() call to get it, but without adding a corresponding
    put_device().
    
    Closes: https://lore.kernel.org/all/20241204124826.2e055091@booty/
    Fixes: bac3b10b78e5 ("driver core: fw_devlink: Stop trying to optimize cycle detection logic")
    Cc: stable@vger.kernel.org
    Reviewed-by: Saravana Kannan <saravanak@google.com>
    Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
    Link: https://lore.kernel.org/r/20250213-fix__fw_devlink_relax_cycles_missing_device_put-v2-1-8cd3b03e6a3f@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drivers: virt: acrn: hsm: Use kzalloc to avoid info leak in pmcmd_ioctl [+ + +]
Author: Haoyu Li <lihaoyu499@gmail.com>
Date:   Thu Jan 30 19:58:11 2025 +0800

    drivers: virt: acrn: hsm: Use kzalloc to avoid info leak in pmcmd_ioctl
    
    commit 819cec1dc47cdeac8f5dd6ba81c1dbee2a68c3bb upstream.
    
    In the "pmcmd_ioctl" function, three memory objects allocated by
    kmalloc are initialized by "hcall_get_cpu_state", which are then
    copied to user space. The initializer is indeed implemented in
    "acrn_hypercall2" (arch/x86/include/asm/acrn.h). There is a risk of
    information leakage due to uninitialized bytes.
    
    Fixes: 3d679d5aec64 ("virt: acrn: Introduce interfaces to query C-states and P-states allowed by hypervisor")
    Signed-off-by: Haoyu Li <lihaoyu499@gmail.com>
    Cc: stable <stable@kernel.org>
    Acked-by: Fei Li <fei1.li@intel.com>
    Link: https://lore.kernel.org/r/20250130115811.92424-1-lihaoyu499@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/display: Fix null check for pipe_ctx->plane_state in resource_build_scaling_params [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Wed Feb 26 16:37:31 2025 +0800

    drm/amd/display: Fix null check for pipe_ctx->plane_state in resource_build_scaling_params
    
    commit 374c9faac5a763a05bc3f68ad9f73dab3c6aec90 upstream.
    
    Null pointer dereference issue could occur when pipe_ctx->plane_state
    is null. The fix adds a check to ensure 'pipe_ctx->plane_state' is not
    null before accessing. This prevents a null pointer dereference.
    
    Found by code review.
    
    Fixes: 3be5262e353b ("drm/amd/display: Rename more dc_surface stuff to plane_state")
    Reviewed-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 63e6a77ccf239337baa9b1e7787cde9fa0462092)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: Check extended configuration space register when system uses large bar [+ + +]
Author: Ma Jun <Jun.Ma2@amd.com>
Date:   Mon Dec 18 11:32:06 2023 +0800

    drm/amdgpu: Check extended configuration space register when system uses large bar
    
    [ Upstream commit e372baeb3d336b20fd9463784c577fd8824497cd ]
    
    Some customer platforms do not enable mmconfig for various reasons,
    such as bios bug, and therefore cannot access the GPU extend configuration
    space through mmio.
    
    When the system enters the d3cold state and resumes, the amdgpu driver
    fails to resume because the extend configuration space registers of
    GPU can't be restored. At this point, Usually we only see some failure
    dmesg log printed by amdgpu driver, it is difficult to find the root
    cause.
    
    Therefor print a warnning message if the system can't access the
    extended configuration space register when using large bar.
    
    Signed-off-by: Ma Jun <Jun.Ma2@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 099bffc7cadf ("drm/amdgpu: disable BAR resize on Dell G5 SE")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: disable BAR resize on Dell G5 SE [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Feb 17 10:55:05 2025 -0500

    drm/amdgpu: disable BAR resize on Dell G5 SE
    
    [ Upstream commit 099bffc7cadff40bfab1517c3461c53a7a38a0d7 ]
    
    There was a quirk added to add a workaround for a Sapphire
    RX 5600 XT Pulse that didn't allow BAR resizing.  However,
    the quirk caused a regression with runtime pm on Dell laptops
    using those chips, rather than narrowing the scope of the
    resizing quirk, add a quirk to prevent amdgpu from resizing
    the BAR on those Dell platforms unless runtime pm is disabled.
    
    v2: update commit message, add runpm check
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
    Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 5235053f443cef4210606e5fb71f99b915a9723d)
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/ddi: Fix HDMI port width programming in DDI_BUF_CTL [+ + +]
Author: Imre Deak <imre.deak@intel.com>
Date:   Fri Feb 14 16:19:52 2025 +0200

    drm/i915/ddi: Fix HDMI port width programming in DDI_BUF_CTL
    
    [ Upstream commit 166ce267ae3f96e439d8ccc838e8ec4d8b4dab73 ]
    
    Fix the port width programming in the DDI_BUF_CTL register on MTLP+,
    where this had an off-by-one error.
    
    Cc: <stable@vger.kernel.org> # v6.5+
    Fixes: b66a8abaa48a ("drm/i915/display/mtl: Fill port width in DDI_BUF_/TRANS_DDI_FUNC_/PORT_BUF_CTL for HDMI")
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250214142001.552916-3-imre.deak@intel.com
    (cherry picked from commit b2ecdabe46d23db275f94cd7c46ca414a144818b)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/dsi: Use TRANS_DDI_FUNC_CTL's own port width macro [+ + +]
Author: Imre Deak <imre.deak@intel.com>
Date:   Fri Feb 14 16:19:51 2025 +0200

    drm/i915/dsi: Use TRANS_DDI_FUNC_CTL's own port width macro
    
    commit 879f70382ff3e92fc854589ada3453e3f5f5b601 upstream.
    
    The format of the port width field in the DDI_BUF_CTL and the
    TRANS_DDI_FUNC_CTL registers are different starting with MTL, where the
    x3 lane mode for HDMI FRL has a different encoding in the two registers.
    To account for this use the TRANS_DDI_FUNC_CTL's own port width macro.
    
    Cc: <stable@vger.kernel.org> # v6.5+
    Fixes: b66a8abaa48a ("drm/i915/display/mtl: Fill port width in DDI_BUF_/TRANS_DDI_FUNC_/PORT_BUF_CTL for HDMI")
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250214142001.552916-2-imre.deak@intel.com
    (cherry picked from commit 76120b3a304aec28fef4910204b81a12db8974da)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    [Imre: Rebased on v6.6.y, due to upstream API changes for intel_de_read(),
     TRANS_DDI_FUNC_CTL()]
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/i915/xe2lpd: Move D2D enable/disable [+ + +]
Author: Lucas De Marchi <lucas.demarchi@intel.com>
Date:   Fri Jan 26 14:46:36 2024 -0800

    drm/i915/xe2lpd: Move D2D enable/disable
    
    [ Upstream commit d5c7854b50e634097da5dd6d221997ecf31ec8c1 ]
    
    Bits to enable/disable and check state for D2D moved from
    XELPDP_PORT_BUF_CTL1 to DDI_BUF_CTL (now named DDI_CTL_DE in the spec).
    Make the functions mtl_ddi_disable_d2d() and mtl_ddi_enable_d2d generic
    to work with multiple reg location and bitfield layout.
    
    v2: Set/Clear XE2LPD_DDI_BUF_D2D_LINK_ENABLE in saved_port_bits when
        enabling/disabling D2D so DDI_BUF_CTL is correctly programmed in
        other places without overriding these bits (Clint)
    v3: Leave saved_port_bits alone as those bits are not meant to be
        modified outside of the port initialization. Rather propagate the
        additional bit in DDI_BUF_CTL to be set when that register is
        written again after D2D is enabled.
    
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240126224638.4132016-2-lucas.demarchi@intel.com
    Stable-dep-of: 166ce267ae3f ("drm/i915/ddi: Fix HDMI port width programming in DDI_BUF_CTL")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/radeon: Fix rs400_gpu_init for ATI mobility radeon Xpress 200M [+ + +]
Author: Richard Thier <u9vata@gmail.com>
Date:   Mon Jun 17 23:46:27 2019 +0200

    drm/radeon: Fix rs400_gpu_init for ATI mobility radeon Xpress 200M
    
    commit 29ffeb73b216ce3eff10229eb077cf9b7812119d upstream.
    
    num_gb_pipes was set to a wrong value using r420_pipe_config
    
    This have lead to HyperZ glitches on fast Z clearing.
    
    Closes: https://bugs.freedesktop.org/show_bug.cgi?id=110897
    Reviewed-by: Marek Olšák <marek.olsak@amd.com>
    Signed-off-by: Richard Thier <u9vata@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 044e59a85c4d84e3c8d004c486e5c479640563a6)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/sched: Fix preprocessor guard [+ + +]
Author: Philipp Stanner <phasta@kernel.org>
Date:   Tue Feb 18 13:41:50 2025 +0100

    drm/sched: Fix preprocessor guard
    
    [ Upstream commit 23e0832d6d7be2d3c713f9390c060b6f1c48bf36 ]
    
    When writing the header guard for gpu_scheduler_trace.h, a typo,
    apparently, occurred.
    
    Fix the typo and document the scope of the guard.
    
    Fixes: 353da3c520b4 ("drm/amdgpu: add tracepoint for scheduler (v2)")
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
    Signed-off-by: Philipp Stanner <phasta@kernel.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250218124149.118002-2-phasta@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
eeprom: digsy_mtc: Make GPIO lookup table match the device [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Fri Feb 7 00:03:11 2025 +0200

    eeprom: digsy_mtc: Make GPIO lookup table match the device
    
    commit 038ef0754aae76f79b147b8867f9250e6a976872 upstream.
    
    The dev_id value in the GPIO lookup table must match to
    the device instance name, which in this case is combined
    of name and platform device ID, i.e. "spi_gpio.1". But
    the table assumed that there was no platform device ID
    defined, which is wrong. Fix the dev_id value accordingly.
    
    Fixes: 9b00bc7b901f ("spi: spi-gpio: Rewrite to use GPIO descriptors")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20250206220311.1554075-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
efi: Don't map the entire mokvar table to determine its size [+ + +]
Author: Peter Jones <pjones@redhat.com>
Date:   Wed Feb 26 15:18:39 2025 -0500

    efi: Don't map the entire mokvar table to determine its size
    
    commit 2b90e7ace79774a3540ce569e000388f8d22c9e0 upstream.
    
    Currently, when validating the mokvar table, we (re)map the entire table
    on each iteration of the loop, adding space as we discover new entries.
    If the table grows over a certain size, this fails due to limitations of
    early_memmap(), and we get a failure and traceback:
    
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:139 __early_ioremap+0xef/0x220
      ...
      Call Trace:
       <TASK>
       ? __early_ioremap+0xef/0x220
       ? __warn.cold+0x93/0xfa
       ? __early_ioremap+0xef/0x220
       ? report_bug+0xff/0x140
       ? early_fixup_exception+0x5d/0xb0
       ? early_idt_handler_common+0x2f/0x3a
       ? __early_ioremap+0xef/0x220
       ? efi_mokvar_table_init+0xce/0x1d0
       ? setup_arch+0x864/0xc10
       ? start_kernel+0x6b/0xa10
       ? x86_64_start_reservations+0x24/0x30
       ? x86_64_start_kernel+0xed/0xf0
       ? common_startup_64+0x13e/0x141
       </TASK>
      ---[ end trace 0000000000000000 ]---
      mokvar: Failed to map EFI MOKvar config table pa=0x7c4c3000, size=265187.
    
    Mapping the entire structure isn't actually necessary, as we don't ever
    need more than one entry header mapped at once.
    
    Changes efi_mokvar_table_init() to only map each entry header, not the
    entire table, when determining the table size.  Since we're not mapping
    any data past the variable name, it also changes the code to enforce
    that each variable name is NUL terminated, rather than attempting to
    verify it in place.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Peter Jones <pjones@redhat.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
exfat: fix soft lockup in exfat_clear_bitmap [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Fri Jan 31 12:55:55 2025 +0900

    exfat: fix soft lockup in exfat_clear_bitmap
    
    [ Upstream commit 9da33619e0ca53627641bc97d1b93ec741299111 ]
    
    bitmap clear loop will take long time in __exfat_free_cluster()
    if data size of file/dir enty is invalid.
    If cluster bit in bitmap is already clear, stop clearing bitmap go to
    out of loop.
    
    Fixes: 31023864e67a ("exfat: add fat entry operations")
    Reported-by: Kun Hu <huk23@m.fudan.edu.cn>, Jiaji Qin <jjtan24@m.fudan.edu.cn>
    Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: aggregator: protect driver attr handlers against module unload [+ + +]
Author: Koichiro Den <koichiro.den@canonical.com>
Date:   Mon Feb 24 23:31:26 2025 +0900

    gpio: aggregator: protect driver attr handlers against module unload
    
    commit 12f65d1203507f7db3ba59930fe29a3b8eee9945 upstream.
    
    Both new_device_store and delete_device_store touch module global
    resources (e.g. gpio_aggregator_lock). To prevent race conditions with
    module unload, a reference needs to be held.
    
    Add try_module_get() in these handlers.
    
    For new_device_store, this eliminates what appears to be the most dangerous
    scenario: if an id is allocated from gpio_aggregator_idr but
    platform_device_register has not yet been called or completed, a concurrent
    module unload could fail to unregister/delete the device, leaving behind a
    dangling platform device/GPIO forwarder. This can result in various issues.
    The following simple reproducer demonstrates these problems:
    
      #!/bin/bash
      while :; do
        # note: whether 'gpiochip0 0' exists or not does not matter.
        echo 'gpiochip0 0' > /sys/bus/platform/drivers/gpio-aggregator/new_device
      done &
      while :; do
        modprobe gpio-aggregator
        modprobe -r gpio-aggregator
      done &
      wait
    
      Starting with the following warning, several kinds of warnings will appear
      and the system may become unstable:
    
      ------------[ cut here ]------------
      list_del corruption, ffff888103e2e980->next is LIST_POISON1 (dead000000000100)
      WARNING: CPU: 1 PID: 1327 at lib/list_debug.c:56 __list_del_entry_valid_or_report+0xa3/0x120
      [...]
      RIP: 0010:__list_del_entry_valid_or_report+0xa3/0x120
      [...]
      Call Trace:
       <TASK>
       ? __list_del_entry_valid_or_report+0xa3/0x120
       ? __warn.cold+0x93/0xf2
       ? __list_del_entry_valid_or_report+0xa3/0x120
       ? report_bug+0xe6/0x170
       ? __irq_work_queue_local+0x39/0xe0
       ? handle_bug+0x58/0x90
       ? exc_invalid_op+0x13/0x60
       ? asm_exc_invalid_op+0x16/0x20
       ? __list_del_entry_valid_or_report+0xa3/0x120
       gpiod_remove_lookup_table+0x22/0x60
       new_device_store+0x315/0x350 [gpio_aggregator]
       kernfs_fop_write_iter+0x137/0x1f0
       vfs_write+0x262/0x430
       ksys_write+0x60/0xd0
       do_syscall_64+0x6c/0x180
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
       [...]
       </TASK>
      ---[ end trace 0000000000000000 ]---
    
    Fixes: 828546e24280 ("gpio: Add GPIO Aggregator")
    Cc: stable@vger.kernel.org
    Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
    Link: https://lore.kernel.org/r/20250224143134.3024598-2-koichiro.den@canonical.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: rcar: Fix missing of_node_put() call [+ + +]
Author: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
Date:   Wed Mar 5 16:37:50 2025 +0000

    gpio: rcar: Fix missing of_node_put() call
    
    [ Upstream commit 391b41f983bf7ff853de44704d8e14e7cc648a9b ]
    
    of_parse_phandle_with_fixed_args() requires its caller to
    call into of_node_put() on the node pointer from the output
    structure, but such a call is currently missing.
    
    Call into of_node_put() to rectify that.
    
    Fixes: 159f8a0209af ("gpio-rcar: Add DT support")
    Signed-off-by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
    Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20250305163753.34913-2-fabrizio.castro.jz@renesas.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gpio: rcar: Use raw_spinlock to protect register access [+ + +]
Author: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Date:   Tue Jan 21 14:58:33 2025 +0100

    gpio: rcar: Use raw_spinlock to protect register access
    
    commit f02c41f87cfe61440c18bf77d1ef0a884b9ee2b5 upstream.
    
    Use raw_spinlock in order to fix spurious messages about invalid context
    when spinlock debugging is enabled. The lock is only used to serialize
    register access.
    
        [    4.239592] =============================
        [    4.239595] [ BUG: Invalid wait context ]
        [    4.239599] 6.13.0-rc7-arm64-renesas-05496-gd088502a519f #35 Not tainted
        [    4.239603] -----------------------------
        [    4.239606] kworker/u8:5/76 is trying to lock:
        [    4.239609] ffff0000091898a0 (&p->lock){....}-{3:3}, at: gpio_rcar_config_interrupt_input_mode+0x34/0x164
        [    4.239641] other info that might help us debug this:
        [    4.239643] context-{5:5}
        [    4.239646] 5 locks held by kworker/u8:5/76:
        [    4.239651]  #0: ffff0000080fb148 ((wq_completion)async){+.+.}-{0:0}, at: process_one_work+0x190/0x62c
        [    4.250180] OF: /soc/sound@ec500000/ports/port@0/endpoint: Read of boolean property 'frame-master' with a value.
        [    4.254094]  #1: ffff80008299bd80 ((work_completion)(&entry->work)){+.+.}-{0:0}, at: process_one_work+0x1b8/0x62c
        [    4.254109]  #2: ffff00000920c8f8
        [    4.258345] OF: /soc/sound@ec500000/ports/port@1/endpoint: Read of boolean property 'bitclock-master' with a value.
        [    4.264803]  (&dev->mutex){....}-{4:4}, at: __device_attach_async_helper+0x3c/0xdc
        [    4.264820]  #3: ffff00000a50ca40 (request_class#2){+.+.}-{4:4}, at: __setup_irq+0xa0/0x690
        [    4.264840]  #4:
        [    4.268872] OF: /soc/sound@ec500000/ports/port@1/endpoint: Read of boolean property 'frame-master' with a value.
        [    4.273275] ffff00000a50c8c8 (lock_class){....}-{2:2}, at: __setup_irq+0xc4/0x690
        [    4.296130] renesas_sdhi_internal_dmac ee100000.mmc: mmc1 base at 0x00000000ee100000, max clock rate 200 MHz
        [    4.304082] stack backtrace:
        [    4.304086] CPU: 1 UID: 0 PID: 76 Comm: kworker/u8:5 Not tainted 6.13.0-rc7-arm64-renesas-05496-gd088502a519f #35
        [    4.304092] Hardware name: Renesas Salvator-X 2nd version board based on r8a77965 (DT)
        [    4.304097] Workqueue: async async_run_entry_fn
        [    4.304106] Call trace:
        [    4.304110]  show_stack+0x14/0x20 (C)
        [    4.304122]  dump_stack_lvl+0x6c/0x90
        [    4.304131]  dump_stack+0x14/0x1c
        [    4.304138]  __lock_acquire+0xdfc/0x1584
        [    4.426274]  lock_acquire+0x1c4/0x33c
        [    4.429942]  _raw_spin_lock_irqsave+0x5c/0x80
        [    4.434307]  gpio_rcar_config_interrupt_input_mode+0x34/0x164
        [    4.440061]  gpio_rcar_irq_set_type+0xd4/0xd8
        [    4.444422]  __irq_set_trigger+0x5c/0x178
        [    4.448435]  __setup_irq+0x2e4/0x690
        [    4.452012]  request_threaded_irq+0xc4/0x190
        [    4.456285]  devm_request_threaded_irq+0x7c/0xf4
        [    4.459398] ata1: link resume succeeded after 1 retries
        [    4.460902]  mmc_gpiod_request_cd_irq+0x68/0xe0
        [    4.470660]  mmc_start_host+0x50/0xac
        [    4.474327]  mmc_add_host+0x80/0xe4
        [    4.477817]  tmio_mmc_host_probe+0x2b0/0x440
        [    4.482094]  renesas_sdhi_probe+0x488/0x6f4
        [    4.486281]  renesas_sdhi_internal_dmac_probe+0x60/0x78
        [    4.491509]  platform_probe+0x64/0xd8
        [    4.495178]  really_probe+0xb8/0x2a8
        [    4.498756]  __driver_probe_device+0x74/0x118
        [    4.503116]  driver_probe_device+0x3c/0x154
        [    4.507303]  __device_attach_driver+0xd4/0x160
        [    4.511750]  bus_for_each_drv+0x84/0xe0
        [    4.515588]  __device_attach_async_helper+0xb0/0xdc
        [    4.520470]  async_run_entry_fn+0x30/0xd8
        [    4.524481]  process_one_work+0x210/0x62c
        [    4.528494]  worker_thread+0x1ac/0x340
        [    4.532245]  kthread+0x10c/0x110
        [    4.535476]  ret_from_fork+0x10/0x20
    
    Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250121135833.3769310-1-niklas.soderlund+renesas@ragnatech.se
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: appleir: Fix potential NULL dereference at raw event handle [+ + +]
Author: Daniil Dulov <d.dulov@aladdin.ru>
Date:   Mon Feb 24 20:30:30 2025 +0300

    HID: appleir: Fix potential NULL dereference at raw event handle
    
    commit 2ff5baa9b5275e3acafdf7f2089f74cccb2f38d1 upstream.
    
    Syzkaller reports a NULL pointer dereference issue in input_event().
    
    BUG: KASAN: null-ptr-deref in instrument_atomic_read include/linux/instrumented.h:68 [inline]
    BUG: KASAN: null-ptr-deref in _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [inline]
    BUG: KASAN: null-ptr-deref in is_event_supported drivers/input/input.c:67 [inline]
    BUG: KASAN: null-ptr-deref in input_event+0x42/0xa0 drivers/input/input.c:395
    Read of size 8 at addr 0000000000000028 by task syz-executor199/2949
    
    CPU: 0 UID: 0 PID: 2949 Comm: syz-executor199 Not tainted 6.13.0-rc4-syzkaller-00076-gf097a36ef88d #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
     kasan_report+0xd9/0x110 mm/kasan/report.c:602
     check_region_inline mm/kasan/generic.c:183 [inline]
     kasan_check_range+0xef/0x1a0 mm/kasan/generic.c:189
     instrument_atomic_read include/linux/instrumented.h:68 [inline]
     _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [inline]
     is_event_supported drivers/input/input.c:67 [inline]
     input_event+0x42/0xa0 drivers/input/input.c:395
     input_report_key include/linux/input.h:439 [inline]
     key_down drivers/hid/hid-appleir.c:159 [inline]
     appleir_raw_event+0x3e5/0x5e0 drivers/hid/hid-appleir.c:232
     __hid_input_report.constprop.0+0x312/0x440 drivers/hid/hid-core.c:2111
     hid_ctrl+0x49f/0x550 drivers/hid/usbhid/hid-core.c:484
     __usb_hcd_giveback_urb+0x389/0x6e0 drivers/usb/core/hcd.c:1650
     usb_hcd_giveback_urb+0x396/0x450 drivers/usb/core/hcd.c:1734
     dummy_timer+0x17f7/0x3960 drivers/usb/gadget/udc/dummy_hcd.c:1993
     __run_hrtimer kernel/time/hrtimer.c:1739 [inline]
     __hrtimer_run_queues+0x20a/0xae0 kernel/time/hrtimer.c:1803
     hrtimer_run_softirq+0x17d/0x350 kernel/time/hrtimer.c:1820
     handle_softirqs+0x206/0x8d0 kernel/softirq.c:561
     __do_softirq kernel/softirq.c:595 [inline]
     invoke_softirq kernel/softirq.c:435 [inline]
     __irq_exit_rcu+0xfa/0x160 kernel/softirq.c:662
     irq_exit_rcu+0x9/0x30 kernel/softirq.c:678
     instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline]
     sysvec_apic_timer_interrupt+0x90/0xb0 arch/x86/kernel/apic/apic.c:1049
     </IRQ>
     <TASK>
     asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
     __mod_timer+0x8f6/0xdc0 kernel/time/timer.c:1185
     add_timer+0x62/0x90 kernel/time/timer.c:1295
     schedule_timeout+0x11f/0x280 kernel/time/sleep_timeout.c:98
     usbhid_wait_io+0x1c7/0x380 drivers/hid/usbhid/hid-core.c:645
     usbhid_init_reports+0x19f/0x390 drivers/hid/usbhid/hid-core.c:784
     hiddev_ioctl+0x1133/0x15b0 drivers/hid/usbhid/hiddev.c:794
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:906 [inline]
     __se_sys_ioctl fs/ioctl.c:892 [inline]
     __x64_sys_ioctl+0x190/0x200 fs/ioctl.c:892
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
     </TASK>
    
    This happens due to the malformed report items sent by the emulated device
    which results in a report, that has no fields, being added to the report list.
    Due to this appleir_input_configured() is never called, hidinput_connect()
    fails which results in the HID_CLAIMED_INPUT flag is not being set. However,
    it  does not make appleir_probe() fail and lets the event callback to be
    called without the associated input device.
    
    Thus, add a check for the HID_CLAIMED_INPUT flag and leave the event hook
    early if the driver didn't claim any input_dev for some reason. Moreover,
    some other hid drivers accessing input_dev in their event callbacks do have
    similar checks, too.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 9a4a5574ce42 ("HID: appleir: add support for Apple ir devices")
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniil Dulov <d.dulov@aladdin.ru>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

HID: google: fix unused variable warning under !CONFIG_ACPI [+ + +]
Author: Yu-Chun Lin <eleanor15x@gmail.com>
Date:   Tue Feb 18 00:50:13 2025 +0800

    HID: google: fix unused variable warning under !CONFIG_ACPI
    
    [ Upstream commit 4bd0725c09f377ffaf22b834241f6c050742e4fc ]
    
    As reported by the kernel test robot, the following warning occurs:
    
    >> drivers/hid/hid-google-hammer.c:261:36: warning: 'cbas_ec_acpi_ids' defined but not used [-Wunused-const-variable=]
         261 | static const struct acpi_device_id cbas_ec_acpi_ids[] = {
             |                                    ^~~~~~~~~~~~~~~~
    
    The 'cbas_ec_acpi_ids' array is only used when CONFIG_ACPI is enabled.
    Wrapping its definition and 'MODULE_DEVICE_TABLE' in '#ifdef CONFIG_ACPI'
    prevents a compiler warning when ACPI is disabled.
    
    Fixes: eb1aac4c8744f75 ("HID: google: add support tablet mode switch for Whiskers")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501201141.jctFH5eB-lkp@intel.com/
    Signed-off-by: Yu-Chun Lin <eleanor15x@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: hid-steam: Fix use-after-free when detaching device [+ + +]
Author: Vicki Pfau <vi@endrift.com>
Date:   Thu Feb 27 15:41:33 2025 -0800

    HID: hid-steam: Fix use-after-free when detaching device
    
    [ Upstream commit e53fc232a65f7488ab75d03a5b95f06aaada7262 ]
    
    When a hid-steam device is removed it must clean up the client_hdev used for
    intercepting hidraw access. This can lead to scheduling deferred work to
    reattach the input device. Though the cleanup cancels the deferred work, this
    was done before the client_hdev itself is cleaned up, so it gets rescheduled.
    This patch fixes the ordering to make sure the deferred work is properly
    canceled.
    
    Reported-by: syzbot+0154da2d403396b2bd59@syzkaller.appspotmail.com
    Fixes: 79504249d7e2 ("HID: hid-steam: Move hidraw input (un)registering to work")
    Signed-off-by: Vicki Pfau <vi@endrift.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: intel-ish-hid: Fix use-after-free issue in ishtp_hid_remove() [+ + +]
Author: Zhang Lixu <lixu.zhang@intel.com>
Date:   Tue Feb 18 14:37:30 2025 +0800

    HID: intel-ish-hid: Fix use-after-free issue in ishtp_hid_remove()
    
    [ Upstream commit 07583a0010696a17fb0942e0b499a62785c5fc9f ]
    
    The system can experience a random crash a few minutes after the driver is
    removed. This issue occurs due to improper handling of memory freeing in
    the ishtp_hid_remove() function.
    
    The function currently frees the `driver_data` directly within the loop
    that destroys the HID devices, which can lead to accessing freed memory.
    Specifically, `hid_destroy_device()` uses `driver_data` when it calls
    `hid_ishtp_set_feature()` to power off the sensor, so freeing
    `driver_data` beforehand can result in accessing invalid memory.
    
    This patch resolves the issue by storing the `driver_data` in a temporary
    variable before calling `hid_destroy_device()`, and then freeing the
    `driver_data` after the device is destroyed.
    
    Fixes: 0b28cb4bcb17 ("HID: intel-ish-hid: ISH HID client driver")
    Signed-off-by: Zhang Lixu <lixu.zhang@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hwmon: (ad7314) Validate leading zero bits and return error [+ + +]
Author: Erik Schumacher <erik.schumacher@iris-sensing.com>
Date:   Mon Feb 24 09:19:04 2025 +0000

    hwmon: (ad7314) Validate leading zero bits and return error
    
    [ Upstream commit e278d5e8aef4c0a1d9a9fa8b8910d713a89aa800 ]
    
    Leading zero bits are sent on the bus before the temperature value is
    transmitted. If any of these bits are high, the connection might be
    unstable or there could be no AD7314 / ADT730x (or compatible) at all.
    Return -EIO in that case.
    
    Signed-off-by: Erik Schumacher <erik.schumacher@iris-sensing.com>
    Fixes: 4f3a659581cab ("hwmon: AD7314 driver (ported from IIO)")
    Link: https://lore.kernel.org/r/24a50c2981a318580aca8f50d23be7987b69ea00.camel@iris-sensing.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: (ntc_thermistor) Fix the ncpXXxh103 sensor table [+ + +]
Author: Maud Spierings <maudspierings@gocontroll.com>
Date:   Thu Feb 27 13:57:53 2025 +0100

    hwmon: (ntc_thermistor) Fix the ncpXXxh103 sensor table
    
    [ Upstream commit 1c7932d5ae0f5c22fa52ac811b4c427bbca5aff5 ]
    
    I could not find a single table that has the values currently present in
    the table, change it to the actual values that can be found in [1]/[2]
    and [3] (page 15 column 2)
    
    [1]: https://www.murata.com/products/productdetail?partno=NCP15XH103F03RC
    [2]: https://www.murata.com/products/productdata/8796836626462/NTHCG83.txt?1437969843000
    [3]: https://nl.mouser.com/datasheet/2/281/r44e-522712.pdf
    
    Fixes: 54ce3a0d8011 ("hwmon: (ntc_thermistor) Add support for ncpXXxh103")
    Signed-off-by: Maud Spierings <maudspierings@gocontroll.com>
    Link: https://lore.kernel.org/r/20250227-ntc_thermistor_fixes-v1-3-70fa73200b52@gocontroll.com
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: (peci/dimmtemp) Do not provide fake thresholds data [+ + +]
Author: Paul Fertser <fercerpav@gmail.com>
Date:   Thu Jan 23 15:20:02 2025 +0300

    hwmon: (peci/dimmtemp) Do not provide fake thresholds data
    
    commit 5797c04400ee117bfe459ff1e468d0ea38054ab4 upstream.
    
    When an Icelake or Sapphire Rapids CPU isn't providing the maximum and
    critical thresholds for particular DIMM the driver should return an
    error to the userspace instead of giving it stale (best case) or wrong
    (the structure contains all zeros after kzalloc() call) data.
    
    The issue can be reproduced by binding the peci driver while the host is
    fully booted and idle, this makes PECI interaction unreliable enough.
    
    Fixes: 73bc1b885dae ("hwmon: peci: Add dimmtemp driver")
    Fixes: 621995b6d795 ("hwmon: (peci/dimmtemp) Add Sapphire Rapids support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Paul Fertser <fercerpav@gmail.com>
    Reviewed-by: Iwona Winiarska <iwona.winiarska@intel.com>
    Link: https://lore.kernel.org/r/20250123122003.6010-1-fercerpav@gmail.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

hwmon: (pmbus) Initialise page count in pmbus_identify() [+ + +]
Author: Titus Rwantare <titusr@google.com>
Date:   Thu Feb 27 22:24:55 2025 +0000

    hwmon: (pmbus) Initialise page count in pmbus_identify()
    
    [ Upstream commit 6b6e2e8fd0de3fa7c6f4f8fe6841b01770b2e7bc ]
    
    The `pmbus_identify()` function fails to correctly determine the number
    of supported pages on PMBus devices. This occurs because `info->pages`
    is implicitly zero-initialised, and `pmbus_set_page()` does not perform
    writes to the page register if `info->pages` is not yet initialised.
    Without this patch, `info->pages` is always set to the maximum after
    scanning.
    
    This patch initialises `info->pages` to `PMBUS_PAGES` before the probing
    loop, enabling `pmbus_set_page()` writes to make it out onto the bus
    correctly identifying the number of pages. `PMBUS_PAGES` seemed like a
    reasonable non-zero number because that's the current result of the
    identification process.
    
    Testing was done with a PMBus device in QEMU.
    
    Signed-off-by: Titus Rwantare <titusr@google.com>
    Fixes: 442aba78728e7 ("hwmon: PMBus device driver")
    Link: https://lore.kernel.org/r/20250227222455.2583468-1-titusr@google.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hwmon: fix a NULL vs IS_ERR_OR_NULL() check in xgene_hwmon_probe() [+ + +]
Author: Xinghuo Chen <xinghuo.chen@foxmail.com>
Date:   Mon Mar 3 07:57:33 2025 -0500

    hwmon: fix a NULL vs IS_ERR_OR_NULL() check in xgene_hwmon_probe()
    
    [ Upstream commit 10fce7ebe888fa8c97eee7e317a47e7603e5e78d ]
    
    The devm_memremap() function returns error pointers on error,
    it doesn't return NULL.
    
    Fixes: c7cefce03e69 ("hwmon: (xgene) access mailbox as RAM")
    Signed-off-by: Xinghuo Chen <xinghuo.chen@foxmail.com>
    Link: https://lore.kernel.org/r/tencent_9AD8E7683EC29CAC97496B44F3F865BA070A@qq.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ibmvnic: Inspect header requirements before using scrq direct [+ + +]
Author: Nick Child <nnac123@linux.ibm.com>
Date:   Tue Oct 1 11:32:00 2024 -0500

    ibmvnic: Inspect header requirements before using scrq direct
    
    [ Upstream commit de390657b5d6f7deb9d1d36aaf45f02ba51ec9dc ]
    
    Previously, the TX header requirement for standard frames was ignored.
    This requirement is a bitstring sent from the VIOS which maps to the
    type of header information needed during TX. If no header information,
    is needed then send subcrq direct can be used (which can be more
    performant).
    
    This bitstring was previously ignored for standard packets (AKA non LSO,
    non CSO) due to the belief that the bitstring was over-cautionary. It
    turns out that there are some configurations where the backing device
    does need header information for transmission of standard packets. If
    the information is not supplied then this causes continuous "Adapter
    error" transport events. Therefore, this bitstring should be respected
    and observed before considering the use of send subcrq direct.
    
    Fixes: 74839f7a8268 ("ibmvnic: Introduce send sub-crq direct")
    Signed-off-by: Nick Child <nnac123@linux.ibm.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20241001163200.1802522-2-nnac123@linux.ibm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ibmvnic: Perform tx CSO during send scrq direct [+ + +]
Author: Nick Child <nnac123@linux.ibm.com>
Date:   Wed Aug 7 16:18:09 2024 -0500

    ibmvnic: Perform tx CSO during send scrq direct
    
    [ Upstream commit e633e32b60fd6701bed73599b273a2a03621ea54 ]
    
    During initialization with the vnic server, a bitstring is communicated
    to the client regarding header info needed during CSO (See "VNIC
    Capabilities" in PAPR). Most of the time, to be safe, vnic server
    requests header info for CSO. When header info is needed, multiple TX
    descriptors are required per skb; This limits the driver to use
    send_subcrq_indirect instead of send_subcrq_direct.
    
    Previously, the vnic server request for header info was ignored. This
    allowed the use of send_sub_crq_direct. Transmissions were successful
    because the bitstring returned by vnic server is broad and over
    cautionary. It was observed that mlx backing devices could actually
    transmit and handle CSO packets without the vnic server receiving
    header info (despite the fact that the bitstring requested it).
    
    There was a trust issue: The bitstring was overcautionary. This extra
    precaution (requesting header info when the backing device may not use
    it) comes at the cost of performance (using direct vs indirect hcalls
    has a 30% delta in small packet RR transaction rate). So it has been
    requested that the vnic server team tries to ensure that the bitstring
    is more exact. In the meantime, disable CSO when it is possible to use
    the skb in the send_subcrq_direct path. In other words, calculate the
    checksum before handing the packet to FW when the packet is not
    segmented and xmit_more is false.
    
    Since the code path is only possible if the skb is non GSO and xmit_more
    is false, the cost of doing checksum in the send_subcrq_direct path is
    minimal. Any large segmented skb will have xmit_more set to true more
    frequently and it is inexpensive to do checksumming on a small skb.
    The worst-case workload would be a 9000 MTU TCP_RR test with close
    to MTU sized packets (and TSO off). This allows xmit_more to be false
    more frequently and open the code path up to use send_subcrq_direct.
    Observing trace data (graph-time = 1) and packet rate with this workload
    shows minimal performance degradation:
    
    1. NIC does checksum w headers, safely use send_subcrq_indirect:
      - Packet rate: 631k txs
      - Trace data:
        ibmvnic_xmit = 44344685.87 us / 6234576 hits = AVG 7.11 us
          skb_checksum_help = 4.07 us / 2 hits = AVG 2.04 us
           ^ Notice hits, tracing this just for reassurance
          ibmvnic_tx_scrq_flush = 33040649.69 us / 5638441 hits = AVG 5.86 us
            send_subcrq_indirect = 37438922.24 us / 6030859 hits = AVG 6.21 us
    
    2. NIC does checksum w/o headers, dangerously use send_subcrq_direct:
      - Packet rate: 831k txs
      - Trace data:
        ibmvnic_xmit = 48940092.29 us / 8187630 hits = AVG 5.98 us
          skb_checksum_help = 2.03 us / 1 hits = AVG 2.03
          ibmvnic_tx_scrq_flush = 31141879.57 us / 7948960 hits = AVG 3.92 us
            send_subcrq_indirect = 8412506.03 us / 728781 hits = AVG 11.54
             ^ notice hits is much lower b/c send_subcrq_direct was called
                                                ^ wasn't traceable
    
    3. driver does checksum, safely use send_subcrq_direct (THIS PATCH):
      - Packet rate: 829k txs
      - Trace data:
        ibmvnic_xmit = 56696077.63 us / 8066168 hits = AVG 7.03 us
          skb_checksum_help = 8587456.16 us / 7526072 hits = AVG 1.14 us
          ibmvnic_tx_scrq_flush = 30219545.55 us / 7782409 hits = AVG 3.88 us
            send_subcrq_indirect = 8638326.44 us / 763693 hits = AVG 11.31 us
    
    When the bitstring ever specifies that CSO does not require headers
    (dependent on VIOS vnic server changes), then this patch should be
    removed and replaced with one that investigates the bitstring before
    using send_subcrq_direct.
    
    Signed-off-by: Nick Child <nnac123@linux.ibm.com>
    Link: https://patch.msgid.link/20240807211809.1259563-8-nnac123@linux.ibm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: de390657b5d6 ("ibmvnic: Inspect header requirements before using scrq direct")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iio: adc: at91-sama5d2_adc: fix sama7g5 realbits value [+ + +]
Author: Nayab Sayed <nayabbasha.sayed@microchip.com>
Date:   Wed Jan 15 11:37:04 2025 +0530

    iio: adc: at91-sama5d2_adc: fix sama7g5 realbits value
    
    commit aa5119c36d19639397d29ef305aa53a5ecd72b27 upstream.
    
    The number of valid bits in SAMA7G5 ADC channel data register are 16.
    Hence changing the realbits value to 16
    
    Fixes: 840bf6cb983f ("iio: adc: at91-sama5d2_adc: add support for sama7g5 device")
    Signed-off-by: Nayab Sayed <nayabbasha.sayed@microchip.com>
    Link: https://patch.msgid.link/20250115-fix-sama7g5-adc-realbits-v2-1-58a6e4087584@microchip.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: dac: ad3552r: clear reset status flag [+ + +]
Author: Angelo Dureghello <adureghello@baylibre.com>
Date:   Sat Jan 25 17:24:32 2025 +0100

    iio: dac: ad3552r: clear reset status flag
    
    commit e17b9f20da7d2bc1f48878ab2230523b2512d965 upstream.
    
    Clear reset status flag, to keep error status register clean after reset
    (ad3552r manual, rev B table 38).
    
    Reset error flag was left to 1, so debugging registers, the "Error
    Status Register" was dirty (0x01). It is important to clear this bit, so
    if there is any reset event over normal working mode, it is possible to
    detect it.
    
    Fixes: 8f2b54824b28 ("drivers:iio:dac: Add AD3552R driver support")
    Signed-off-by: Angelo Dureghello <adureghello@baylibre.com>
    Link: https://patch.msgid.link/20250125-wip-bl-ad3552r-clear-reset-v2-1-aa3a27f3ff8c@baylibre.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: filter: admv8818: Force initialization of SDO [+ + +]
Author: Sam Winchenbach <swinchenbach@arka.org>
Date:   Mon Feb 3 13:34:34 2025 +0000

    iio: filter: admv8818: Force initialization of SDO
    
    commit cc2c3540d9477a9931fb0fd851fcaeba524a5b35 upstream.
    
    When a weak pull-up is present on the SDO line, regmap_update_bits fails
    to write both the SOFTRESET and SDOACTIVE bits because it incorrectly
    reads them as already set.
    
    Since the soft reset disables the SDO line, performing a
    read-modify-write operation on ADI_SPI_CONFIG_A to enable the SDO line
    doesn't make sense. This change directly writes to the register instead
    of using regmap_update_bits.
    
    Fixes: f34fe888ad05 ("iio:filter:admv8818: add support for ADMV8818")
    Signed-off-by: Sam Winchenbach <swinchenbach@arka.org>
    Link: https://patch.msgid.link/SA1P110MB106904C961B0F3FAFFED74C0BCF5A@SA1P110MB1069.NAMP110.PROD.OUTLOOK.COM
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ima: Reset IMA_NONACTION_RULE_FLAGS after post_setattr [+ + +]
Author: Roberto Sassu <roberto.sassu@huawei.com>
Date:   Tue Feb 4 13:57:20 2025 +0100

    ima: Reset IMA_NONACTION_RULE_FLAGS after post_setattr
    
    commit 57a0ef02fefafc4b9603e33a18b669ba5ce59ba3 upstream.
    
    Commit 0d73a55208e9 ("ima: re-introduce own integrity cache lock")
    mistakenly reverted the performance improvement introduced in commit
    42a4c603198f0 ("ima: fix ima_inode_post_setattr"). The unused bit mask was
    subsequently removed by commit 11c60f23ed13 ("integrity: Remove unused
    macro IMA_ACTION_RULE_FLAGS").
    
    Restore the performance improvement by introducing the new mask
    IMA_NONACTION_RULE_FLAGS, equal to IMA_NONACTION_FLAGS without
    IMA_NEW_FILE, which is not a rule-specific flag.
    
    Finally, reset IMA_NONACTION_RULE_FLAGS instead of IMA_NONACTION_FLAGS in
    process_measurement(), if the IMA_CHANGE_ATTR atomic flag is set (after
    file metadata modification).
    
    With this patch, new files for which metadata were modified while they are
    still open, can be reopened before the last file close (when security.ima
    is written), since the IMA_NEW_FILE flag is not cleared anymore. Otherwise,
    appraisal fails because security.ima is missing (files with IMA_NEW_FILE
    set are an exception).
    
    Cc: stable@vger.kernel.org # v4.16.x
    Fixes: 0d73a55208e9 ("ima: re-introduce own integrity cache lock")
    Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
    Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
intel_th: pci: Add Arrow Lake support [+ + +]
Author: Pawel Chmielewski <pawel.chmielewski@intel.com>
Date:   Tue Feb 11 20:50:15 2025 +0200

    intel_th: pci: Add Arrow Lake support
    
    commit b5edccae9f447a92d475267d94c33f4926963eec upstream.
    
    Add support for the Trace Hub in Arrow Lake.
    
    Signed-off-by: Pawel Chmielewski <pawel.chmielewski@intel.com>
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20250211185017.1759193-4-alexander.shishkin@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

intel_th: pci: Add Panther Lake-H support [+ + +]
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Tue Feb 11 20:50:16 2025 +0200

    intel_th: pci: Add Panther Lake-H support
    
    commit a70034d6c0d5f3cdee40bb00a578e17fd2ebe426 upstream.
    
    Add support for the Trace Hub in Panther Lake-H.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20250211185017.1759193-5-alexander.shishkin@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

intel_th: pci: Add Panther Lake-P/U support [+ + +]
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Tue Feb 11 20:50:17 2025 +0200

    intel_th: pci: Add Panther Lake-P/U support
    
    commit 49114ff05770264ae233f50023fc64a719a9dcf9 upstream.
    
    Add support for the Trace Hub in Panther Lake-P/U.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20250211185017.1759193-6-alexander.shishkin@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
kbuild: hdrcheck: fix cross build with clang [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 25 11:00:31 2025 +0100

    kbuild: hdrcheck: fix cross build with clang
    
    [ Upstream commit 02e9a22ceef0227175e391902d8760425fa072c6 ]
    
    The headercheck tries to call clang with a mix of compiler arguments
    that don't include the target architecture. When building e.g. x86
    headers on arm64, this produces a warning like
    
       clang: warning: unknown platform, assuming -mfloat-abi=soft
    
    Add in the KBUILD_CPPFLAGS, which contain the target, in order to make it
    build properly.
    
    See also 1b71c2fb04e7 ("kbuild: userprogs: fix bitsize and target
    detection on clang").
    
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Fixes: feb843a469fb ("kbuild: add $(CLANG_FLAGS) to KBUILD_CPPFLAGS")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kbuild: userprogs: use correct lld when linking through clang [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Date:   Mon Feb 17 08:27:54 2025 +0100

    kbuild: userprogs: use correct lld when linking through clang
    
    commit dfc1b168a8c4b376fa222b27b97c2c4ad4b786e1 upstream.
    
    The userprog infrastructure links objects files through $(CC).
    Either explicitly by manually calling $(CC) on multiple object files or
    implicitly by directly compiling a source file to an executable.
    The documentation at Documentation/kbuild/llvm.rst indicates that ld.lld
    would be used for linking if LLVM=1 is specified.
    However clang instead will use either a globally installed cross linker
    from $PATH called ${target}-ld or fall back to the system linker, which
    probably does not support crosslinking.
    For the normal kernel build this is not an issue because the linker is
    always executed directly, without the compiler being involved.
    
    Explicitly pass --ld-path to clang so $(LD) is respected.
    As clang 13.0.1 is required to build the kernel, this option is available.
    
    Fixes: 7f3a59db274c ("kbuild: add infrastructure to build userspace programs")
    Cc: stable@vger.kernel.org # needs wrapping in $(cc-option) for < 6.9
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    [nathan: use cc-option for 6.6 and older, as those trees support back to
             clang-11]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ksmbd: fix bug on trap in smb2_lock [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Thu Feb 27 15:49:10 2025 +0900

    ksmbd: fix bug on trap in smb2_lock
    
    commit e26e2d2e15daf1ab33e0135caf2304a0cfa2744b upstream.
    
    If lock count is greater than 1, flags could be old value.
    It should be checked with flags of smb_lock, not flags.
    It will cause bug-on trap from locks_free_lock in error handling
    routine.
    
    Cc: stable@vger.kernel.org
    Reported-by: Norbert Szetei <norbert@doyensec.com>
    Tested-by: Norbert Szetei <norbert@doyensec.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: fix out-of-bounds in parse_sec_desc() [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Tue Feb 18 22:49:50 2025 +0900

    ksmbd: fix out-of-bounds in parse_sec_desc()
    
    commit d6e13e19063db24f94b690159d0633aaf72a0f03 upstream.
    
    If osidoffset, gsidoffset and dacloffset could be greater than smb_ntsd
    struct size. If it is smaller, It could cause slab-out-of-bounds.
    And when validating sid, It need to check it included subauth array size.
    
    Cc: stable@vger.kernel.org
    Reported-by: Norbert Szetei <norbert@doyensec.com>
    Tested-by: Norbert Szetei <norbert@doyensec.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: fix type confusion via race condition when using ipc_msg_send_request [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Fri Feb 21 14:16:23 2025 +0900

    ksmbd: fix type confusion via race condition when using ipc_msg_send_request
    
    commit e2ff19f0b7a30e03516e6eb73b948e27a55bc9d2 upstream.
    
    req->handle is allocated using ksmbd_acquire_id(&ipc_ida), based on
    ida_alloc. req->handle from ksmbd_ipc_login_request and
    FSCTL_PIPE_TRANSCEIVE ioctl can be same and it could lead to type confusion
    between messages, resulting in access to unexpected parts of memory after
    an incorrect delivery. ksmbd check type of ipc response but missing add
    continue to check next ipc reponse.
    
    Cc: stable@vger.kernel.org
    Reported-by: Norbert Szetei <norbert@doyensec.com>
    Tested-by: Norbert Szetei <norbert@doyensec.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ksmbd: fix use-after-free in smb2_lock [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Wed Feb 26 15:44:02 2025 +0900

    ksmbd: fix use-after-free in smb2_lock
    
    commit 84d2d1641b71dec326e8736a749b7ee76a9599fc upstream.
    
    If smb_lock->zero_len has value, ->llist of smb_lock is not delete and
    flock is old one. It will cause use-after-free on error handling
    routine.
    
    Cc: stable@vger.kernel.org
    Reported-by: Norbert Szetei <norbert@doyensec.com>
    Tested-by: Norbert Szetei <norbert@doyensec.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
KVM: SVM: Drop DEBUGCTL[5:2] from guest's effective value [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Thu Feb 27 14:24:06 2025 -0800

    KVM: SVM: Drop DEBUGCTL[5:2] from guest's effective value
    
    commit ee89e8013383d50a27ea9bf3c8a69eed6799856f upstream.
    
    Drop bits 5:2 from the guest's effective DEBUGCTL value, as AMD changed
    the architectural behavior of the bits and broke backwards compatibility.
    On CPUs without BusLockTrap (or at least, in APMs from before ~2023),
    bits 5:2 controlled the behavior of external pins:
    
      Performance-Monitoring/Breakpoint Pin-Control (PBi)—Bits 5:2, read/write.
      Software uses thesebits to control the type of information reported by
      the four external performance-monitoring/breakpoint pins on the
      processor. When a PBi bit is cleared to 0, the corresponding external pin
      (BPi) reports performance-monitor information. When a PBi bit is set to
      1, the corresponding external pin (BPi) reports breakpoint information.
    
    With the introduction of BusLockTrap, presumably to be compatible with
    Intel CPUs, AMD redefined bit 2 to be BLCKDB:
    
      Bus Lock #DB Trap (BLCKDB)—Bit 2, read/write. Software sets this bit to
      enable generation of a #DB trap following successful execution of a bus
      lock when CPL is > 0.
    
    and redefined bits 5:3 (and bit 6) as "6:3 Reserved MBZ".
    
    Ideally, KVM would treat bits 5:2 as reserved.  Defer that change to a
    feature cleanup to avoid breaking existing guest in LTS kernels.  For now,
    drop the bits to retain backwards compatibility (of a sort).
    
    Note, dropping bits 5:2 is still a guest-visible change, e.g. if the guest
    is enabling LBRs *and* the legacy PBi bits, then the state of the PBi bits
    is visible to the guest, whereas now the guest will always see '0'.
    
    Reported-by: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-and-tested-by: Ravi Bangoria <ravi.bangoria@amd.com>
    Link: https://lore.kernel.org/r/20250227222411.3490595-2-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: SVM: Suppress DEBUGCTL.BTF on AMD [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Thu Feb 27 14:24:07 2025 -0800

    KVM: SVM: Suppress DEBUGCTL.BTF on AMD
    
    commit d0eac42f5cecce009d315655bee341304fbe075e upstream.
    
    Mark BTF as reserved in DEBUGCTL on AMD, as KVM doesn't actually support
    BTF, and fully enabling BTF virtualization is non-trivial due to
    interactions with the emulator, guest_debug, #DB interception, nested SVM,
    etc.
    
    Don't inject #GP if the guest attempts to set BTF, as there's no way to
    communicate lack of support to the guest, and instead suppress the flag
    and treat the WRMSR as (partially) unsupported.
    
    In short, make KVM behave the same on AMD and Intel (VMX already squashes
    BTF).
    
    Note, due to other bugs in KVM's handling of DEBUGCTL, the only way BTF
    has "worked" in any capacity is if the guest simultaneously enables LBRs.
    
    Reported-by: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: stable@vger.kernel.org
    Reviewed-and-tested-by: Ravi Bangoria <ravi.bangoria@amd.com>
    Link: https://lore.kernel.org/r/20250227222411.3490595-3-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

KVM: x86: Explicitly zero EAX and EBX when PERFMON_V2 isn't supported by KVM [+ + +]
Author: Xiaoyao Li <xiaoyao.li@intel.com>
Date:   Tue Mar 4 03:23:14 2025 -0500

    KVM: x86: Explicitly zero EAX and EBX when PERFMON_V2 isn't supported by KVM
    
    commit f9dc8fb3afc968042bdaf4b6e445a9272071c9f3 upstream.
    
    Fix a goof where KVM sets CPUID.0x80000022.EAX to CPUID.0x80000022.EBX
    instead of zeroing both when PERFMON_V2 isn't supported by KVM.  In
    practice, barring a buggy CPU (or vCPU model when running nested) only the
    !enable_pmu case is affected, as KVM always supports PERFMON_V2 if it's
    available in hardware, i.e. CPUID.0x80000022.EBX will be '0' if PERFMON_V2
    is unsupported.
    
    For the !enable_pmu case, the bug is relatively benign as KVM will refuse
    to enable PMU capabilities, but a VMM that reflects KVM's supported CPUID
    into the guest could inadvertently induce #GPs in the guest due to
    advertising support for MSRs that KVM refuses to emulate.
    
    Fixes: 94cdeebd8211 ("KVM: x86/cpuid: Add AMD CPUID ExtPerfMonAndDbg leaf 0x80000022")
    Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
    Link: https://lore.kernel.org/r/20250304082314.472202-3-xiaoyao.li@intel.com
    [sean: massage shortlog and changelog, tag for stable]
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.6.83 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Mar 13 12:58:41 2025 +0100

    Linux 6.6.83
    
    Link: https://lore.kernel.org/r/20250310170434.733307314@linuxfoundation.org
    Tested-by: SeongJae Park <sj@kernel.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Link: https://lore.kernel.org/r/20250311135648.989667520@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
llc: do not use skb_get() before dev_queue_xmit() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Feb 27 08:26:42 2025 +0000

    llc: do not use skb_get() before dev_queue_xmit()
    
    [ Upstream commit 64e6a754d33d31aa844b3ee66fb93ac84ca1565e ]
    
    syzbot is able to crash hosts [1], using llc and devices
    not supporting IFF_TX_SKB_SHARING.
    
    In this case, e1000 driver calls eth_skb_pad(), while
    the skb is shared.
    
    Simply replace skb_get() by skb_clone() in net/llc/llc_s_ac.c
    
    Note that e1000 driver might have an issue with pktgen,
    because it does not clear IFF_TX_SKB_SHARING, this is an
    orthogonal change.
    
    We need to audit other skb_get() uses in net/llc.
    
    [1]
    
    kernel BUG at net/core/skbuff.c:2178 !
    Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 16371 Comm: syz.2.2764 Not tainted 6.14.0-rc4-syzkaller-00052-gac9c34d1e45a #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
     RIP: 0010:pskb_expand_head+0x6ce/0x1240 net/core/skbuff.c:2178
    Call Trace:
     <TASK>
      __skb_pad+0x18a/0x610 net/core/skbuff.c:2466
      __skb_put_padto include/linux/skbuff.h:3843 [inline]
      skb_put_padto include/linux/skbuff.h:3862 [inline]
      eth_skb_pad include/linux/etherdevice.h:656 [inline]
      e1000_xmit_frame+0x2d99/0x5800 drivers/net/ethernet/intel/e1000/e1000_main.c:3128
      __netdev_start_xmit include/linux/netdevice.h:5151 [inline]
      netdev_start_xmit include/linux/netdevice.h:5160 [inline]
      xmit_one net/core/dev.c:3806 [inline]
      dev_hard_start_xmit+0x9a/0x7b0 net/core/dev.c:3822
      sch_direct_xmit+0x1ae/0xc30 net/sched/sch_generic.c:343
      __dev_xmit_skb net/core/dev.c:4045 [inline]
      __dev_queue_xmit+0x13d4/0x43e0 net/core/dev.c:4621
      dev_queue_xmit include/linux/netdevice.h:3313 [inline]
      llc_sap_action_send_test_c+0x268/0x320 net/llc/llc_s_ac.c:144
      llc_exec_sap_trans_actions net/llc/llc_sap.c:153 [inline]
      llc_sap_next_state net/llc/llc_sap.c:182 [inline]
      llc_sap_state_process+0x239/0x510 net/llc/llc_sap.c:209
      llc_ui_sendmsg+0xd0d/0x14e0 net/llc/af_llc.c:993
      sock_sendmsg_nosec net/socket.c:718 [inline]
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot+da65c993ae113742a25f@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/67c020c0.050a0220.222324.0011.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
LoongArch: Convert unreachable() to BUG() [+ + +]
Author: Tiezhu Yang <yangtiezhu@loongson.cn>
Date:   Sat Mar 8 13:50:45 2025 +0800

    LoongArch: Convert unreachable() to BUG()
    
    commit da64a2359092ceec4f9dea5b329d0aef20104217 upstream.
    
    When compiling on LoongArch, there exists the following objtool warning
    in arch/loongarch/kernel/machine_kexec.o:
    
      kexec_reboot() falls through to next function crash_shutdown_secondary()
    
    Avoid using unreachable() as it can (and will in the absence of UBSAN)
    generate fall-through code. Use BUG() so we get a "break BRK_BUG" trap
    (with unreachable annotation).
    
    Cc: stable@vger.kernel.org  # 6.12+
    Acked-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Set max_pfn with the PFN of the last page [+ + +]
Author: Bibo Mao <maobibo@loongson.cn>
Date:   Sat Mar 8 13:51:32 2025 +0800

    LoongArch: Set max_pfn with the PFN of the last page
    
    commit c8477bb0a8e7f6b2e47952b403c5cb67a6929e55 upstream.
    
    The current max_pfn equals to zero. In this case, it causes user cannot
    get some page information through /proc filesystem such as kpagecount.
    The following message is displayed by stress-ng test suite with command
    "stress-ng --verbose --physpage 1 -t 1".
    
     # stress-ng --verbose --physpage 1 -t 1
     stress-ng: error: [1691] physpage: cannot read page count for address 0x134ac000 in /proc/kpagecount, errno=22 (Invalid argument)
     stress-ng: error: [1691] physpage: cannot read page count for address 0x7ffff207c3a8 in /proc/kpagecount, errno=22 (Invalid argument)
     stress-ng: error: [1691] physpage: cannot read page count for address 0x134b0000 in /proc/kpagecount, errno=22 (Invalid argument)
     ...
    
    After applying this patch, the kernel can pass the test.
    
     # stress-ng --verbose --physpage 1 -t 1
     stress-ng: debug: [1701] physpage: [1701] started (instance 0 on CPU 3)
     stress-ng: debug: [1701] physpage: [1701] exited (instance 0 on CPU 3)
     stress-ng: debug: [1700] physpage: [1701] terminated (success)
    
    Cc: stable@vger.kernel.org  # 6.8+
    Fixes: ff6c3d81f2e8 ("NUMA: optimize detection of memory with no node id assigned by firmware")
    Signed-off-by: Bibo Mao <maobibo@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Use polling play_dead() when resuming from hibernation [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Sat Mar 8 13:51:32 2025 +0800

    LoongArch: Use polling play_dead() when resuming from hibernation
    
    commit c9117434c8f7523f0b77db4c5766f5011cc94677 upstream.
    
    When CONFIG_RANDOM_KMALLOC_CACHES or other randomization infrastructrue
    enabled, the idle_task's stack may different between the booting kernel
    and target kernel. So when resuming from hibernation, an ACTION_BOOT_CPU
    IPI wakeup the idle instruction in arch_cpu_idle_dead() and jump to the
    interrupt handler. But since the stack pointer is changed, the interrupt
    handler cannot restore correct context.
    
    So rename the current arch_cpu_idle_dead() to idle_play_dead(), make it
    as the default version of play_dead(), and the new arch_cpu_idle_dead()
    call play_dead() directly. For hibernation, implement an arch-specific
    hibernate_resume_nonboot_cpu_disable() to use the polling version (idle
    instruction is replace by nop, and irq is disabled) of play_dead(), i.e.
    poll_play_dead(), to avoid IPI handler corrupting the idle_task's stack
    when resuming from hibernation.
    
    This solution is a little similar to commit 406f992e4a372dafbe3c ("x86 /
    hibernate: Use hlt_play_dead() when resuming from hibernation").
    
    Cc: stable@vger.kernel.org
    Tested-by: Erpeng Xu <xuerpeng@uniontech.com>
    Tested-by: Yuli Wang <wangyuli@uniontech.com>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mei: me: add panther lake P DID [+ + +]
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Sun Feb 9 13:05:50 2025 +0200

    mei: me: add panther lake P DID
    
    commit a8e8ffcc3afce2ee5fb70162aeaef3f03573ee1e upstream.
    
    Add Panther Lake P device id.
    
    Cc: stable <stable@kernel.org>
    Co-developed-by: Tomas Winkler <tomasw@gmail.com>
    Signed-off-by: Tomas Winkler <tomasw@gmail.com>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Link: https://lore.kernel.org/r/20250209110550.1582982-1-alexander.usyskin@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/page_alloc: fix uninitialized variable [+ + +]
Author: Hao Zhang <zhanghao1@kylinos.cn>
Date:   Thu Feb 27 11:41:29 2025 +0800

    mm/page_alloc: fix uninitialized variable
    
    commit 8fe9ed44dc29fba0786b7e956d2e87179e407582 upstream.
    
    The variable "compact_result" is not initialized in function
    __alloc_pages_slowpath().  It causes should_compact_retry() to use an
    uninitialized value.
    
    Initialize variable "compact_result" with the value COMPACT_SKIPPED.
    
    BUG: KMSAN: uninit-value in __alloc_pages_slowpath+0xee8/0x16c0 mm/page_alloc.c:4416
     __alloc_pages_slowpath+0xee8/0x16c0 mm/page_alloc.c:4416
     __alloc_frozen_pages_noprof+0xa4c/0xe00 mm/page_alloc.c:4752
     alloc_pages_mpol+0x4cd/0x890 mm/mempolicy.c:2270
     alloc_frozen_pages_noprof mm/mempolicy.c:2341 [inline]
     alloc_pages_noprof mm/mempolicy.c:2361 [inline]
     folio_alloc_noprof+0x1dc/0x350 mm/mempolicy.c:2371
     filemap_alloc_folio_noprof+0xa6/0x440 mm/filemap.c:1019
     __filemap_get_folio+0xb9a/0x1840 mm/filemap.c:1970
     grow_dev_folio fs/buffer.c:1039 [inline]
     grow_buffers fs/buffer.c:1105 [inline]
     __getblk_slow fs/buffer.c:1131 [inline]
     bdev_getblk+0x2c9/0xab0 fs/buffer.c:1431
     getblk_unmovable include/linux/buffer_head.h:369 [inline]
     ext4_getblk+0x3b7/0xe50 fs/ext4/inode.c:864
     ext4_bread_batch+0x9f/0x7d0 fs/ext4/inode.c:933
     __ext4_find_entry+0x1ebb/0x36c0 fs/ext4/namei.c:1627
     ext4_lookup_entry fs/ext4/namei.c:1729 [inline]
     ext4_lookup+0x189/0xb40 fs/ext4/namei.c:1797
     __lookup_slow+0x538/0x710 fs/namei.c:1793
     lookup_slow+0x6a/0xd0 fs/namei.c:1810
     walk_component fs/namei.c:2114 [inline]
     link_path_walk+0xf29/0x1420 fs/namei.c:2479
     path_openat+0x30f/0x6250 fs/namei.c:3985
     do_filp_open+0x268/0x600 fs/namei.c:4016
     do_sys_openat2+0x1bf/0x2f0 fs/open.c:1428
     do_sys_open fs/open.c:1443 [inline]
     __do_sys_openat fs/open.c:1459 [inline]
     __se_sys_openat fs/open.c:1454 [inline]
     __x64_sys_openat+0x2a1/0x310 fs/open.c:1454
     x64_sys_call+0x36f5/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:258
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Local variable compact_result created at:
     __alloc_pages_slowpath+0x66/0x16c0 mm/page_alloc.c:4218
     __alloc_frozen_pages_noprof+0xa4c/0xe00 mm/page_alloc.c:4752
    
    Link: https://lkml.kernel.org/r/tencent_ED1032321D6510B145CDBA8CBA0093178E09@qq.com
    Reported-by: syzbot+0cfd5e38e96a5596f2b6@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=0cfd5e38e96a5596f2b6
    Signed-off-by: Hao Zhang <zhanghao1@kylinos.cn>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm: don't skip arch_sync_kernel_mappings() in error paths [+ + +]
Author: Ryan Roberts <ryan.roberts@arm.com>
Date:   Wed Feb 26 12:16:09 2025 +0000

    mm: don't skip arch_sync_kernel_mappings() in error paths
    
    commit 3685024edd270f7c791f993157d65d3c928f3d6e upstream.
    
    Fix callers that previously skipped calling arch_sync_kernel_mappings() if
    an error occurred during a pgtable update.  The call is still required to
    sync any pgtable updates that may have occurred prior to hitting the error
    condition.
    
    These are theoretical bugs discovered during code review.
    
    Link: https://lkml.kernel.org/r/20250226121610.2401743-1-ryan.roberts@arm.com
    Fixes: 2ba3e6947aed ("mm/vmalloc: track which page-table levels were modified")
    Fixes: 0c95cba49255 ("mm: apply_to_pte_range warn and fail if a large pte is encountered")
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christop Hellwig <hch@infradead.org>
    Cc: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm: hugetlb: Add huge page size param to huge_ptep_get_and_clear() [+ + +]
Author: Ryan Roberts <ryan.roberts@arm.com>
Date:   Wed Feb 26 12:06:51 2025 +0000

    mm: hugetlb: Add huge page size param to huge_ptep_get_and_clear()
    
    commit 02410ac72ac3707936c07ede66e94360d0d65319 upstream.
    
    In order to fix a bug, arm64 needs to be told the size of the huge page
    for which the huge_pte is being cleared in huge_ptep_get_and_clear().
    Provide for this by adding an `unsigned long sz` parameter to the
    function. This follows the same pattern as huge_pte_clear() and
    set_huge_pte_at().
    
    This commit makes the required interface modifications to the core mm as
    well as all arches that implement this function (arm64, loongarch, mips,
    parisc, powerpc, riscv, s390, sparc). The actual arm64 bug will be fixed
    in a separate commit.
    
    Cc: stable@vger.kernel.org
    Fixes: 66b3923a1a0f ("arm64: hugetlb: add support for PTE contiguous bit")
    Acked-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com> # riscv
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Acked-by: Alexander Gordeev <agordeev@linux.ibm.com> # s390
    Link: https://lore.kernel.org/r/20250226120656.2400136-2-ryan.roberts@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mptcp: fix 'scheduling while atomic' in mptcp_pm_nl_append_new_local_addr [+ + +]
Author: Krister Johansen <kjlx@templeofstupid.com>
Date:   Mon Mar 3 18:10:13 2025 +0100

    mptcp: fix 'scheduling while atomic' in mptcp_pm_nl_append_new_local_addr
    
    commit 022bfe24aad8937705704ff2e414b100cf0f2e1a upstream.
    
    If multiple connection requests attempt to create an implicit mptcp
    endpoint in parallel, more than one caller may end up in
    mptcp_pm_nl_append_new_local_addr because none found the address in
    local_addr_list during their call to mptcp_pm_nl_get_local_id.  In this
    case, the concurrent new_local_addr calls may delete the address entry
    created by the previous caller.  These deletes use synchronize_rcu, but
    this is not permitted in some of the contexts where this function may be
    called.  During packet recv, the caller may be in a rcu read critical
    section and have preemption disabled.
    
    An example stack:
    
       BUG: scheduling while atomic: swapper/2/0/0x00000302
    
       Call Trace:
       <IRQ>
       dump_stack_lvl (lib/dump_stack.c:117 (discriminator 1))
       dump_stack (lib/dump_stack.c:124)
       __schedule_bug (kernel/sched/core.c:5943)
       schedule_debug.constprop.0 (arch/x86/include/asm/preempt.h:33 kernel/sched/core.c:5970)
       __schedule (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:207 kernel/sched/features.h:29 kernel/sched/core.c:6621)
       schedule (arch/x86/include/asm/preempt.h:84 kernel/sched/core.c:6804 kernel/sched/core.c:6818)
       schedule_timeout (kernel/time/timer.c:2160)
       wait_for_completion (kernel/sched/completion.c:96 kernel/sched/completion.c:116 kernel/sched/completion.c:127 kernel/sched/completion.c:148)
       __wait_rcu_gp (include/linux/rcupdate.h:311 kernel/rcu/update.c:444)
       synchronize_rcu (kernel/rcu/tree.c:3609)
       mptcp_pm_nl_append_new_local_addr (net/mptcp/pm_netlink.c:966 net/mptcp/pm_netlink.c:1061)
       mptcp_pm_nl_get_local_id (net/mptcp/pm_netlink.c:1164)
       mptcp_pm_get_local_id (net/mptcp/pm.c:420)
       subflow_check_req (net/mptcp/subflow.c:98 net/mptcp/subflow.c:213)
       subflow_v4_route_req (net/mptcp/subflow.c:305)
       tcp_conn_request (net/ipv4/tcp_input.c:7216)
       subflow_v4_conn_request (net/mptcp/subflow.c:651)
       tcp_rcv_state_process (net/ipv4/tcp_input.c:6709)
       tcp_v4_do_rcv (net/ipv4/tcp_ipv4.c:1934)
       tcp_v4_rcv (net/ipv4/tcp_ipv4.c:2334)
       ip_protocol_deliver_rcu (net/ipv4/ip_input.c:205 (discriminator 1))
       ip_local_deliver_finish (include/linux/rcupdate.h:813 net/ipv4/ip_input.c:234)
       ip_local_deliver (include/linux/netfilter.h:314 include/linux/netfilter.h:308 net/ipv4/ip_input.c:254)
       ip_sublist_rcv_finish (include/net/dst.h:461 net/ipv4/ip_input.c:580)
       ip_sublist_rcv (net/ipv4/ip_input.c:640)
       ip_list_rcv (net/ipv4/ip_input.c:675)
       __netif_receive_skb_list_core (net/core/dev.c:5583 net/core/dev.c:5631)
       netif_receive_skb_list_internal (net/core/dev.c:5685 net/core/dev.c:5774)
       napi_complete_done (include/linux/list.h:37 include/net/gro.h:449 include/net/gro.h:444 net/core/dev.c:6114)
       igb_poll (drivers/net/ethernet/intel/igb/igb_main.c:8244) igb
       __napi_poll (net/core/dev.c:6582)
       net_rx_action (net/core/dev.c:6653 net/core/dev.c:6787)
       handle_softirqs (kernel/softirq.c:553)
       __irq_exit_rcu (kernel/softirq.c:588 kernel/softirq.c:427 kernel/softirq.c:636)
       irq_exit_rcu (kernel/softirq.c:651)
       common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14))
       </IRQ>
    
    This problem seems particularly prevalent if the user advertises an
    endpoint that has a different external vs internal address.  In the case
    where the external address is advertised and multiple connections
    already exist, multiple subflow SYNs arrive in parallel which tends to
    trigger the race during creation of the first local_addr_list entries
    which have the internal address instead.
    
    Fix by skipping the replacement of an existing implicit local address if
    called via mptcp_pm_nl_get_local_id.
    
    Fixes: d045b9eb95a9 ("mptcp: introduce implicit endpoints")
    Cc: stable@vger.kernel.org
    Suggested-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Krister Johansen <kjlx@templeofstupid.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20250303-net-mptcp-fix-sched-while-atomic-v1-1-f6a216c5a74c@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net-timestamp: support TCP GSO case for a few missing flags [+ + +]
Author: Jason Xing <kerneljasonxing@gmail.com>
Date:   Tue Mar 4 08:44:29 2025 +0800

    net-timestamp: support TCP GSO case for a few missing flags
    
    [ Upstream commit 3c9231ea6497dfc50ac0ef69fff484da27d0df66 ]
    
    When I read through the TSO codes, I found out that we probably
    miss initializing the tx_flags of last seg when TSO is turned
    off, which means at the following points no more timestamp
    (for this last one) will be generated. There are three flags
    to be handled in this patch:
    1. SKBTX_HW_TSTAMP
    2. SKBTX_BPF
    3. SKBTX_SCHED_TSTAMP
    Note that SKBTX_BPF[1] was added in 6.14.0-rc2 by commit
    6b98ec7e882af ("bpf: Add BPF_SOCK_OPS_TSTAMP_SCHED_CB callback")
    and only belongs to net-next branch material for now. The common
    issue of the above three flags can be fixed by this single patch.
    
    This patch initializes the tx_flags to SKBTX_ANY_TSTAMP like what
    the UDP GSO does to make the newly segmented last skb inherit the
    tx_flags so that requested timestamp will be generated in each
    certain layer, or else that last one has zero value of tx_flags
    which leads to no timestamp at all.
    
    Fixes: 4ed2d765dfacc ("net-timestamp: TCP timestamping")
    Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: dsa: mt7530: Fix traffic flooding for MMIO devices [+ + +]
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Tue Mar 4 09:50:23 2025 +0100

    net: dsa: mt7530: Fix traffic flooding for MMIO devices
    
    [ Upstream commit ccc2f5a436fbb0ae1fb598932a9b8e48423c1959 ]
    
    On MMIO devices (e.g. MT7988 or EN7581) unicast traffic received on lanX
    port is flooded on all other user ports if the DSA switch is configured
    without VLAN support since PORT_MATRIX in PCR regs contains all user
    ports. Similar to MDIO devices (e.g. MT7530 and MT7531) fix the issue
    defining default VLAN-ID 0 for MT7530 MMIO devices.
    
    Fixes: 110c18bfed414 ("net: dsa: mt7530: introduce driver for MT7988 built-in switch")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Reviewed-by: Chester A. Unal <chester.a.unal@arinc9.com>
    Link: https://patch.msgid.link/20250304-mt7988-flooding-fix-v1-1-905523ae83e9@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: Remove setting of RX software timestamp [+ + +]
Author: Gal Pressman <gal@nvidia.com>
Date:   Sun Sep 1 14:28:00 2024 +0300

    net: enetc: Remove setting of RX software timestamp
    
    [ Upstream commit 3dd261ca7f84c65af40f37825bf1cbb0cf3d5583 ]
    
    The responsibility for reporting of RX software timestamp has moved to
    the core layer (see __ethtool_get_ts_info()), remove usage from the
    device drivers.
    
    Reviewed-by: Carolina Jubran <cjubran@nvidia.com>
    Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
    Signed-off-by: Gal Pressman <gal@nvidia.com>
    Reviewed-by: Wei Fang <wei.fang@nxp.com>
    Link: https://patch.msgid.link/20240901112803.212753-13-gal@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: a562d0c4a893 ("net: enetc: VFs do not support HWTSTAMP_TX_ONESTEP_SYNC")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: Replace ifdef with IS_ENABLED [+ + +]
Author: Martyn Welch <martyn.welch@collabora.com>
Date:   Thu Sep 12 18:37:40 2024 +0100

    net: enetc: Replace ifdef with IS_ENABLED
    
    [ Upstream commit 9c699a8f3b273c62f7b364ff999e873501a1e834 ]
    
    The enetc driver uses ifdefs when checking whether
    CONFIG_FSL_ENETC_PTP_CLOCK is enabled in a number of places. This works
    if the driver is built-in but fails if the driver is available as a
    kernel module. Replace the instances of ifdef with use of the IS_ENABLED
    macro, that will evaluate as true when this feature is built as a kernel
    module and follows the kernel's coding style.
    
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Signed-off-by: Martyn Welch <martyn.welch@collabora.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20240912173742.484549-1-martyn.welch@collabora.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: a562d0c4a893 ("net: enetc: VFs do not support HWTSTAMP_TX_ONESTEP_SYNC")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: VFs do not support HWTSTAMP_TX_ONESTEP_SYNC [+ + +]
Author: Wei Fang <wei.fang@nxp.com>
Date:   Mon Feb 24 19:12:47 2025 +0800

    net: enetc: VFs do not support HWTSTAMP_TX_ONESTEP_SYNC
    
    [ Upstream commit a562d0c4a893eae3ea51d512c4d90ab858a6b7ec ]
    
    Actually ENETC VFs do not support HWTSTAMP_TX_ONESTEP_SYNC because only
    ENETC PF can access PMa_SINGLE_STEP registers. And there will be a crash
    if VFs are used to test one-step timestamp, the crash log as follows.
    
    [  129.110909] Unable to handle kernel paging request at virtual address 00000000000080c0
    [  129.287769] Call trace:
    [  129.290219]  enetc_port_mac_wr+0x30/0xec (P)
    [  129.294504]  enetc_start_xmit+0xda4/0xe74
    [  129.298525]  enetc_xmit+0x70/0xec
    [  129.301848]  dev_hard_start_xmit+0x98/0x118
    
    Fixes: 41514737ecaa ("enetc: add get_ts_info interface for ethtool")
    Cc: stable@vger.kernel.org
    Signed-off-by: Wei Fang <wei.fang@nxp.com>
    Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://patch.msgid.link/20250224111251.1061098-5-wei.fang@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: gso: fix ownership in __udp_gso_segment [+ + +]
Author: Antoine Tenart <atenart@kernel.org>
Date:   Wed Feb 26 18:13:42 2025 +0100

    net: gso: fix ownership in __udp_gso_segment
    
    [ Upstream commit ee01b2f2d7d0010787c2343463965bbc283a497f ]
    
    In __udp_gso_segment the skb destructor is removed before segmenting the
    skb but the socket reference is kept as-is. This is an issue if the
    original skb is later orphaned as we can hit the following bug:
    
      kernel BUG at ./include/linux/skbuff.h:3312!  (skb_orphan)
      RIP: 0010:ip_rcv_core+0x8b2/0xca0
      Call Trace:
       ip_rcv+0xab/0x6e0
       __netif_receive_skb_one_core+0x168/0x1b0
       process_backlog+0x384/0x1100
       __napi_poll.constprop.0+0xa1/0x370
       net_rx_action+0x925/0xe50
    
    The above can happen following a sequence of events when using
    OpenVSwitch, when an OVS_ACTION_ATTR_USERSPACE action precedes an
    OVS_ACTION_ATTR_OUTPUT action:
    
    1. OVS_ACTION_ATTR_USERSPACE is handled (in do_execute_actions): the skb
       goes through queue_gso_packets and then __udp_gso_segment, where its
       destructor is removed.
    2. The segments' data are copied and sent to userspace.
    3. OVS_ACTION_ATTR_OUTPUT is handled (in do_execute_actions) and the
       same original skb is sent to its path.
    4. If it later hits skb_orphan, we hit the bug.
    
    Fix this by also removing the reference to the socket in
    __udp_gso_segment.
    
    Fixes: ad405857b174 ("udp: better wmem accounting on gso")
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Link: https://patch.msgid.link/20250226171352.258045-1-atenart@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: hns3: make sure ptp clock is unregister and freed if hclge_ptp_get_cycle returns an error [+ + +]
Author: Peiyang Wang <wangpeiyang1@huawei.com>
Date:   Fri Feb 28 18:52:58 2025 +0800

    net: hns3: make sure ptp clock is unregister and freed if hclge_ptp_get_cycle returns an error
    
    [ Upstream commit b7365eab39831487a84e63a9638209b68dc54008 ]
    
    During the initialization of ptp, hclge_ptp_get_cycle might return an error
    and returned directly without unregister clock and free it. To avoid that,
    call hclge_ptp_destroy_clock to unregist and free clock if
    hclge_ptp_get_cycle failed.
    
    Fixes: 8373cd38a888 ("net: hns3: change the method of obtaining default ptp cycle")
    Signed-off-by: Peiyang Wang <wangpeiyang1@huawei.com>
    Signed-off-by: Jijie Shao <shaojijie@huawei.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250228105258.1243461-1-shaojijie@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipa: Enable checksum for IPA_ENDPOINT_AP_MODEM_{RX,TX} for v4.7 [+ + +]
Author: Luca Weiss <luca.weiss@fairphone.com>
Date:   Thu Feb 27 11:33:42 2025 +0100

    net: ipa: Enable checksum for IPA_ENDPOINT_AP_MODEM_{RX,TX} for v4.7
    
    [ Upstream commit 934e69669e32eb653234898424ae007bae2f636e ]
    
    Enable the checksum option for these two endpoints in order to allow
    mobile data to actually work. Without this, no packets seem to make it
    through the IPA.
    
    Fixes: b310de784bac ("net: ipa: add IPA v4.7 support")
    Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
    Reviewed-by: Alex Elder <elder@riscstar.com>
    Link: https://patch.msgid.link/20250227-ipa-v4-7-fixes-v1-3-a88dd8249d8a@fairphone.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipa: Fix QSB data for v4.7 [+ + +]
Author: Luca Weiss <luca.weiss@fairphone.com>
Date:   Thu Feb 27 11:33:41 2025 +0100

    net: ipa: Fix QSB data for v4.7
    
    [ Upstream commit 6a2843aaf551d87beb92d774f7d5b8ae007fe774 ]
    
    As per downstream reference, max_writes should be 12 and max_reads
    should be 13.
    
    Fixes: b310de784bac ("net: ipa: add IPA v4.7 support")
    Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
    Reviewed-by: Alex Elder <elder@riscstar.com>
    Link: https://patch.msgid.link/20250227-ipa-v4-7-fixes-v1-2-a88dd8249d8a@fairphone.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipa: Fix v4.7 resource group names [+ + +]
Author: Luca Weiss <luca.weiss@fairphone.com>
Date:   Thu Feb 27 11:33:40 2025 +0100

    net: ipa: Fix v4.7 resource group names
    
    [ Upstream commit 5eb3dc1396aa7e315486b24df80df782912334b7 ]
    
    In the downstream IPA driver there's only one group defined for source
    and destination, and the destination group doesn't have a _DPL suffix.
    
    Fixes: b310de784bac ("net: ipa: add IPA v4.7 support")
    Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
    Reviewed-by: Alex Elder <elder@riscstar.com>
    Link: https://patch.msgid.link/20250227-ipa-v4-7-fixes-v1-1-a88dd8249d8a@fairphone.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipv6: fix dst ref loop in ila lwtunnel [+ + +]
Author: Justin Iurman <justin.iurman@uliege.be>
Date:   Tue Mar 4 19:10:39 2025 +0100

    net: ipv6: fix dst ref loop in ila lwtunnel
    
    [ Upstream commit 0e7633d7b95b67f1758aea19f8e85621c5f506a3 ]
    
    This patch follows commit 92191dd10730 ("net: ipv6: fix dst ref loops in
    rpl, seg6 and ioam6 lwtunnels") and, on a second thought, the same patch
    is also needed for ila (even though the config that triggered the issue
    was pathological, but still, we don't want that to happen).
    
    Fixes: 79ff2fc31e0f ("ila: Cache a route to translated address")
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Justin Iurman <justin.iurman@uliege.be>
    Link: https://patch.msgid.link/20250304181039.35951-1-justin.iurman@uliege.be
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipv6: fix missing dst ref drop in ila lwtunnel [+ + +]
Author: Justin Iurman <justin.iurman@uliege.be>
Date:   Wed Mar 5 09:16:55 2025 +0100

    net: ipv6: fix missing dst ref drop in ila lwtunnel
    
    [ Upstream commit 5da15a9c11c1c47ef573e6805b60a7d8a1687a2a ]
    
    Add missing skb_dst_drop() to drop reference to the old dst before
    adding the new dst to the skb.
    
    Fixes: 79ff2fc31e0f ("ila: Cache a route to translated address")
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Justin Iurman <justin.iurman@uliege.be>
    Link: https://patch.msgid.link/20250305081655.19032-1-justin.iurman@uliege.be
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback [+ + +]
Author: Mike Snitzer <snitzer@kernel.org>
Date:   Mon Feb 24 21:20:02 2025 -0500

    NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback
    
    commit ce6d9c1c2b5cc785016faa11b48b6cd317eb367e upstream.
    
    Add PF_KCOMPACTD flag and current_is_kcompactd() helper to check for it so
    nfs_release_folio() can skip calling nfs_wb_folio() from kcompactd.
    
    Otherwise NFS can deadlock waiting for kcompactd enduced writeback which
    recurses back to NFS (which triggers writeback to NFSD via NFS loopback
    mount on the same host, NFSD blocks waiting for XFS's call to
    __filemap_get_folio):
    
    6070.550357] INFO: task kcompactd0:58 blocked for more than 4435 seconds.
    
    {---
    [58] "kcompactd0"
    [<0>] folio_wait_bit+0xe8/0x200
    [<0>] folio_wait_writeback+0x2b/0x80
    [<0>] nfs_wb_folio+0x80/0x1b0 [nfs]
    [<0>] nfs_release_folio+0x68/0x130 [nfs]
    [<0>] split_huge_page_to_list_to_order+0x362/0x840
    [<0>] migrate_pages_batch+0x43d/0xb90
    [<0>] migrate_pages_sync+0x9a/0x240
    [<0>] migrate_pages+0x93c/0x9f0
    [<0>] compact_zone+0x8e2/0x1030
    [<0>] compact_node+0xdb/0x120
    [<0>] kcompactd+0x121/0x2e0
    [<0>] kthread+0xcf/0x100
    [<0>] ret_from_fork+0x31/0x40
    [<0>] ret_from_fork_asm+0x1a/0x30
    ---}
    
    [akpm@linux-foundation.org: fix build]
    Link: https://lkml.kernel.org/r/20250225022002.26141-1-snitzer@kernel.org
    Fixes: 96780ca55e3c ("NFS: fix up nfs_release_folio() to try to release the page")
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Cc: Anna Schumaker <anna.schumaker@oracle.com>
    Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

NFS: O_DIRECT writes must check and adjust the file length [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sat Feb 1 14:59:02 2025 -0500

    NFS: O_DIRECT writes must check and adjust the file length
    
    [ Upstream commit fcf857ee1958e9247298251f7615d0c76f1e9b38 ]
    
    While it is uncommon for delegations to be held while O_DIRECT writes
    are in progress, it is possible. The xfstests generic/647 and
    generic/729 both end up triggering that state, and end up failing due to
    the fact that the file size is not adjusted.
    
    Reported-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=219738
    Cc: stable@vger.kernel.org
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvmet-tcp: Fix a possible sporadic response drops in weakly ordered arch [+ + +]
Author: Meir Elisha <meir.elisha@volumez.com>
Date:   Wed Feb 26 09:28:12 2025 +0200

    nvmet-tcp: Fix a possible sporadic response drops in weakly ordered arch
    
    [ Upstream commit a16f88964c647103dad7743a484b216d488a6352 ]
    
    The order in which queue->cmd and rcv_state are updated is crucial.
    If these assignments are reordered by the compiler, the worker might not
    get queued in nvmet_tcp_queue_response(), hanging the IO. to enforce the
    the correct reordering, set rcv_state using smp_store_release().
    
    Fixes: bdaf13279192 ("nvmet-tcp: fix a segmentation fault during io parsing error")
    
    Signed-off-by: Meir Elisha <meir.elisha@volumez.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf/core: Fix pmus_lock vs. pmus_srcu ordering [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Nov 4 14:39:11 2024 +0100

    perf/core: Fix pmus_lock vs. pmus_srcu ordering
    
    [ Upstream commit 2565e42539b120b81a68a58da961ce5d1e34eac8 ]
    
    Commit a63fbed776c7 ("perf/tracing/cpuhotplug: Fix locking order")
    placed pmus_lock inside pmus_srcu, this makes perf_pmu_unregister()
    trip lockdep.
    
    Move the locking about such that only pmu_idr and pmus (list) are
    modified while holding pmus_lock. This avoids doing synchronize_srcu()
    while holding pmus_lock and all is well again.
    
    Fixes: a63fbed776c7 ("perf/tracing/cpuhotplug: Fix locking order")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20241104135517.679556858@infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pfifo_tail_enqueue: Drop new packet when sch->limit == 0 [+ + +]
Author: Quang Le <quanglex97@gmail.com>
Date:   Mon Feb 3 16:58:38 2025 -0800

    pfifo_tail_enqueue: Drop new packet when sch->limit == 0
    
    commit 647cef20e649c576dff271e018d5d15d998b629d upstream.
    
    Expected behaviour:
    In case we reach scheduler's limit, pfifo_tail_enqueue() will drop a
    packet in scheduler's queue and decrease scheduler's qlen by one.
    Then, pfifo_tail_enqueue() enqueue new packet and increase
    scheduler's qlen by one. Finally, pfifo_tail_enqueue() return
    `NET_XMIT_CN` status code.
    
    Weird behaviour:
    In case we set `sch->limit == 0` and trigger pfifo_tail_enqueue() on a
    scheduler that has no packet, the 'drop a packet' step will do nothing.
    This means the scheduler's qlen still has value equal 0.
    Then, we continue to enqueue new packet and increase scheduler's qlen by
    one. In summary, we can leverage pfifo_tail_enqueue() to increase qlen by
    one and return `NET_XMIT_CN` status code.
    
    The problem is:
    Let's say we have two qdiscs: Qdisc_A and Qdisc_B.
     - Qdisc_A's type must have '->graft()' function to create parent/child relationship.
       Let's say Qdisc_A's type is `hfsc`. Enqueue packet to this qdisc will trigger `hfsc_enqueue`.
     - Qdisc_B's type is pfifo_head_drop. Enqueue packet to this qdisc will trigger `pfifo_tail_enqueue`.
     - Qdisc_B is configured to have `sch->limit == 0`.
     - Qdisc_A is configured to route the enqueued's packet to Qdisc_B.
    
    Enqueue packet through Qdisc_A will lead to:
     - hfsc_enqueue(Qdisc_A) -> pfifo_tail_enqueue(Qdisc_B)
     - Qdisc_B->q.qlen += 1
     - pfifo_tail_enqueue() return `NET_XMIT_CN`
     - hfsc_enqueue() check for `NET_XMIT_SUCCESS` and see `NET_XMIT_CN` => hfsc_enqueue() don't increase qlen of Qdisc_A.
    
    The whole process lead to a situation where Qdisc_A->q.qlen == 0 and Qdisc_B->q.qlen == 1.
    Replace 'hfsc' with other type (for example: 'drr') still lead to the same problem.
    This violate the design where parent's qlen should equal to the sum of its childrens'qlen.
    
    Bug impact: This issue can be used for user->kernel privilege escalation when it is reachable.
    
    Fixes: 57dbb2d83d10 ("sched: add head drop fifo queue")
    Reported-by: Quang Le <quanglex97@gmail.com>
    Signed-off-by: Quang Le <quanglex97@gmail.com>
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://patch.msgid.link/20250204005841.223511-2-xiyou.wangcong@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86: thinkpad_acpi: Add battery quirk for ThinkPad X131e [+ + +]
Author: Mingcong Bai <jeffbai@aosc.io>
Date:   Sat Feb 22 00:48:24 2025 +0800

    platform/x86: thinkpad_acpi: Add battery quirk for ThinkPad X131e
    
    commit d0d10eaedcb53740883d7e5d53c5e15c879b48fb upstream.
    
    Based on the dmesg messages from the original reporter:
    
    [    4.964073] ACPI: \_SB_.PCI0.LPCB.EC__.HKEY: BCTG evaluated but flagged as error
    [    4.964083] thinkpad_acpi: Error probing battery 2
    
    Lenovo ThinkPad X131e also needs this battery quirk.
    
    Reported-by: Fan Yang <804284660@qq.com>
    Tested-by: Fan Yang <804284660@qq.com>
    Co-developed-by: Xi Ruoyao <xry111@xry111.site>
    Signed-off-by: Xi Ruoyao <xry111@xry111.site>
    Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250221164825.77315-1-jeffbai@aosc.io
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ppp: Fix KMSAN uninit-value warning with bpf [+ + +]
Author: Jiayuan Chen <jiayuan.chen@linux.dev>
Date:   Fri Feb 28 22:14:08 2025 +0800

    ppp: Fix KMSAN uninit-value warning with bpf
    
    [ Upstream commit 4c2d14c40a68678d885eab4008a0129646805bae ]
    
    Syzbot caught an "KMSAN: uninit-value" warning [1], which is caused by the
    ppp driver not initializing a 2-byte header when using socket filter.
    
    The following code can generate a PPP filter BPF program:
    '''
    struct bpf_program fp;
    pcap_t *handle;
    handle = pcap_open_dead(DLT_PPP_PPPD, 65535);
    pcap_compile(handle, &fp, "ip and outbound", 0, 0);
    bpf_dump(&fp, 1);
    '''
    Its output is:
    '''
    (000) ldh [2]
    (001) jeq #0x21 jt 2 jf 5
    (002) ldb [0]
    (003) jeq #0x1 jt 4 jf 5
    (004) ret #65535
    (005) ret #0
    '''
    Wen can find similar code at the following link:
    https://github.com/ppp-project/ppp/blob/master/pppd/options.c#L1680
    The maintainer of this code repository is also the original maintainer
    of the ppp driver.
    
    As you can see the BPF program skips 2 bytes of data and then reads the
    'Protocol' field to determine if it's an IP packet. Then it read the first
    byte of the first 2 bytes to determine the direction.
    
    The issue is that only the first byte indicating direction is initialized
    in current ppp driver code while the second byte is not initialized.
    
    For normal BPF programs generated by libpcap, uninitialized data won't be
    used, so it's not a problem. However, for carefully crafted BPF programs,
    such as those generated by syzkaller [2], which start reading from offset
    0, the uninitialized data will be used and caught by KMSAN.
    
    [1] https://syzkaller.appspot.com/bug?extid=853242d9c9917165d791
    [2] https://syzkaller.appspot.com/text?tag=ReproC&x=11994913980000
    
    Cc: Paul Mackerras <paulus@samba.org>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot+853242d9c9917165d791@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/bpf/000000000000dea025060d6bc3bc@google.com/
    Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250228141408.393864-1-jiayuan.chen@linux.dev
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rapidio: add check for rio_add_net() in rio_scan_alloc_net() [+ + +]
Author: Haoxiang Li <haoxiang_li2024@163.com>
Date:   Thu Feb 27 12:11:31 2025 +0800

    rapidio: add check for rio_add_net() in rio_scan_alloc_net()
    
    commit e842f9a1edf306bf36fe2a4d847a0b0d458770de upstream.
    
    The return value of rio_add_net() should be checked.  If it fails,
    put_device() should be called to free the memory and give up the reference
    initialized in rio_add_net().
    
    Link: https://lkml.kernel.org/r/20250227041131.3680761-1-haoxiang_li2024@163.com
    Fixes: e6b585ca6e81 ("rapidio: move net allocation into core code")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
    Cc: Alexandre Bounine <alex.bou9@gmail.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Dan Carpenter <dan.carpenter@linaro.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rapidio: fix an API misues when rio_add_net() fails [+ + +]
Author: Haoxiang Li <haoxiang_li2024@163.com>
Date:   Thu Feb 27 15:34:09 2025 +0800

    rapidio: fix an API misues when rio_add_net() fails
    
    commit b2ef51c74b0171fde7eb69b6152d3d2f743ef269 upstream.
    
    rio_add_net() calls device_register() and fails when device_register()
    fails.  Thus, put_device() should be used rather than kfree().  Add
    "mport->net = NULL;" to avoid a use after free issue.
    
    Link: https://lkml.kernel.org/r/20250227073409.3696854-1-haoxiang_li2024@163.com
    Fixes: e8de370188d0 ("rapidio: add mport char device driver")
    Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Cc: Alexandre Bounine <alex.bou9@gmail.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Yang Yingliang <yangyingliang@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "drivers/card_reader/rtsx_usb: Restore interrupt based detection" [+ + +]
Author: Christian Heusel <christian@heusel.eu>
Date:   Mon Feb 24 09:32:59 2025 +0100

    Revert "drivers/card_reader/rtsx_usb: Restore interrupt based detection"
    
    commit 2397d61ee45cddb8f3bd3a3a9840ef0f0b5aa843 upstream.
    
    This reverts commit 235b630eda072d7e7b102ab346d6b8a2c028a772.
    
    This commit was found responsible for issues with SD card recognition,
    as users had to re-insert their cards in the readers and wait for a
    while. As for some people the SD card was involved in the boot process
    it also caused boot failures.
    
    Cc: stable@vger.kernel.org
    Link: https://bbs.archlinux.org/viewtopic.php?id=303321
    Fixes: 235b630eda07 ("drivers/card_reader/rtsx_usb: Restore interrupt based detection")
    Reported-by: qf <quintafeira@tutanota.com>
    Closes: https://lore.kernel.org/all/1de87dfa-1e81-45b7-8dcb-ad86c21d5352@heusel.eu
    Signed-off-by: Christian Heusel <christian@heusel.eu>
    Link: https://lore.kernel.org/r/20250224-revert-sdcard-patch-v1-1-d1a457fbb796@heusel.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "KVM: e500: always restore irqs" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Mar 10 16:47:34 2025 +0100

    Revert "KVM: e500: always restore irqs"
    
    This reverts commit b9d93eda1214985d1b3d00a0f9d4306282a5b189 which is
    commit 87ecfdbc699cc95fac73291b52650283ddcf929d upstream.
    
    It should not have been applied.
    
    Link: https://lore.kernel.org/r/CABgObfb5U9zwTQBPkPB=mKu-vMrRspPCm4wfxoQpB+SyAnb5WQ@mail.gmail.com
    Reported-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Revert "KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map()" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Mar 10 16:52:25 2025 +0100

    Revert "KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map()"
    
    This reverts commit 15d60c13b704f770ba45c58477380d4577cebfa3 which is
    commit c9be85dabb376299504e0d391d15662c0edf8273 upstream.
    
    It should not have been applied.
    
    Link: https://lore.kernel.org/r/CABgObfb5U9zwTQBPkPB=mKu-vMrRspPCm4wfxoQpB+SyAnb5WQ@mail.gmail.com
    Reported-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Revert "KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Mar 10 16:52:03 2025 +0100

    Revert "KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock"
    
    This reverts commit 59e21c4613b0a46f46eb124984928df46d88ad57 which is
    commit 84cf78dcd9d65c45ab73998d4ad50f433d53fb93 upstream.
    
    It should not have been applied.
    
    Link: https://lore.kernel.org/r/CABgObfb5U9zwTQBPkPB=mKu-vMrRspPCm4wfxoQpB+SyAnb5WQ@mail.gmail.com
    Reported-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Revert "KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Mar 10 16:51:47 2025 +0100

    Revert "KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults"
    
    This reverts commit ba3cf83f4a5063edb6ee150633e641954ce30478 which is
    commit 419cfb983ca93e75e905794521afefcfa07988bb upstream.
    
    It should not have been applied.
    
    Link: https://lore.kernel.org/r/CABgObfb5U9zwTQBPkPB=mKu-vMrRspPCm4wfxoQpB+SyAnb5WQ@mail.gmail.com
    Reported-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "of: reserved-memory: Fix using wrong number of cells to get property 'alignment'" [+ + +]
Author: Rob Herring (Arm) <robh@kernel.org>
Date:   Wed Feb 26 13:38:19 2025 -0600

    Revert "of: reserved-memory: Fix using wrong number of cells to get property 'alignment'"
    
    commit 75f1f311d883dfaffb98be3c1da208d6ed5d4df9 upstream.
    
    This reverts commit 267b21d0bef8e67dbe6c591c9991444e58237ec9.
    
    Turns out some DTs do depend on this behavior. Specifically, a
    downstream Pixel 6 DT. Revert the change at least until we can decide if
    the DT spec can be changed instead.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RISC-V: Enable cbo.zero in usermode [+ + +]
Author: Andrew Jones <ajones@ventanamicro.com>
Date:   Mon Sep 18 15:15:21 2023 +0200

    RISC-V: Enable cbo.zero in usermode
    
    [ Upstream commit 43c16d51a19b0ba2ed66978d5924d486ec1e42bc ]
    
    When Zicboz is present, enable its instruction (cbo.zero) in
    usermode by setting its respective senvcfg bit. We don't bother
    trying to set this bit per-task, which would also require an
    interface for tasks to request enabling and/or disabling. Instead,
    permanently set the bit for each hart which has the extension when
    bringing it online.
    
    This patch also introduces riscv_cpu_has_extension_[un]likely()
    functions to check a specific hart's ISA bitmap for extensions.
    Prior to checking the specific hart's bitmap in these functions
    we try the bitmap which represents the LCD of extensions, but only
    when we know it will use its optimized, alternatives path by gating
    its call on CONFIG_RISCV_ALTERNATIVE. When alternatives are used, the
    compiler ensures that the invocation of the LCD search becomes a
    constant true or false. When it's true, even the new functions will
    completely vanish from their callsites. OTOH, when the LCD check is
    false, we need to do a search of the hart's ISA bitmap. Had we also
    checked the LCD bitmap without the use of alternatives, then we would
    have ended up with two bitmap searches instead of one.
    
    Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/20230918131518.56803-10-ajones@ventanamicro.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Stable-dep-of: 564fc8eb6f78 ("riscv: signal: fix signal_minsigstksz")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
riscv: cacheinfo: initialize cacheinfo's level and type from ACPI PPTT [+ + +]
Author: Yunhui Cui <cuiyunhui@bytedance.com>
Date:   Mon Jun 17 21:14:24 2024 +0800

    riscv: cacheinfo: initialize cacheinfo's level and type from ACPI PPTT
    
    [ Upstream commit 604f32ea6909b0ebb8ab0bf1ab7dc66ee3dc8955 ]
    
    Before cacheinfo can be built correctly, we need to initialize level
    and type. Since RISC-V currently does not have a register group that
    describes cache-related attributes like ARM64, we cannot obtain them
    directly, so now we obtain cache leaves from the ACPI PPTT table
    (acpi_get_cache_info()) and set the cache type through split_levels.
    
    Suggested-by: Jeremy Linton <jeremy.linton@arm.com>
    Suggested-by: Sudeep Holla <sudeep.holla@arm.com>
    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
    Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com>
    Link: https://lore.kernel.org/r/20240617131425.7526-2-cuiyunhui@bytedance.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Stable-dep-of: fb8179ce2996 ("riscv: cacheinfo: Use of_property_present() for non-boolean properties")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

riscv: cacheinfo: remove the useless input parameter (node) of ci_leaf_init() [+ + +]
Author: Yunhui Cui <cuiyunhui@bytedance.com>
Date:   Mon Jun 17 21:14:23 2024 +0800

    riscv: cacheinfo: remove the useless input parameter (node) of ci_leaf_init()
    
    [ Upstream commit ee3fab10cb1566562aa683f319066eaeecccf918 ]
    
    ci_leaf_init() is a declared static function. The implementation of the
    function body and the caller do not use the parameter (struct device_node
    *node) input parameter, so remove it.
    
    Fixes: 6a24915145c9 ("Revert "riscv: Set more data to cacheinfo"")
    Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com>
    Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Link: https://lore.kernel.org/r/20240617131425.7526-1-cuiyunhui@bytedance.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Stable-dep-of: fb8179ce2996 ("riscv: cacheinfo: Use of_property_present() for non-boolean properties")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

riscv: cacheinfo: Use of_property_present() for non-boolean properties [+ + +]
Author: Rob Herring <robh@kernel.org>
Date:   Mon Nov 4 13:03:13 2024 -0600

    riscv: cacheinfo: Use of_property_present() for non-boolean properties
    
    [ Upstream commit fb8179ce2996bffaa36a04e2b6262843b01b7565 ]
    
    The use of of_property_read_bool() for non-boolean properties is
    deprecated in favor of of_property_present() when testing for property
    presence.
    
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Reviewed-by: Clément Léger <cleger@rivosinc.com>
    Cc: stable@vger.kernel.org
    Fixes: 76d2a0493a17 ("RISC-V: Init and Halt Code")
    Link: https://lore.kernel.org/r/20241104190314.270095-1-robh@kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

riscv: Fix enabling cbo.zero when running in M-mode [+ + +]
Author: Samuel Holland <samuel.holland@sifive.com>
Date:   Tue Feb 27 22:55:33 2024 -0800

    riscv: Fix enabling cbo.zero when running in M-mode
    
    commit 3fb3f7164edc467450e650dca51dbe4823315a56 upstream.
    
    When the kernel is running in M-mode, the CBZE bit must be set in the
    menvcfg CSR, not in senvcfg.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 43c16d51a19b ("RISC-V: Enable cbo.zero in usermode")
    Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
    Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/20240228065559.3434837-2-samuel.holland@sifive.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

riscv: Prevent a bad reference count on CPU nodes [+ + +]
Author: Miquel Sabaté Solà <mikisabate@gmail.com>
Date:   Fri Sep 13 10:00:52 2024 +0200

    riscv: Prevent a bad reference count on CPU nodes
    
    [ Upstream commit 37233169a6ea912020c572f870075a63293b786a ]
    
    When populating cache leaves we previously fetched the CPU device node
    at the very beginning. But when ACPI is enabled we go through a
    specific branch which returns early and does not call 'of_node_put' for
    the node that was acquired.
    
    Since we are not using a CPU device node for the ACPI code anyways, we
    can simply move the initialization of it just passed the ACPI block, and
    we are guaranteed to have an 'of_node_put' call for the acquired node.
    This prevents a bad reference count of the CPU device node.
    
    Moreover, the previous function did not check for errors when acquiring
    the device node, so a return -ENOENT has been added for that case.
    
    Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
    Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Fixes: 604f32ea6909 ("riscv: cacheinfo: initialize cacheinfo's level and  type from ACPI PPTT")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240913080053.36636-1-mikisabate@gmail.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Stable-dep-of: fb8179ce2996 ("riscv: cacheinfo: Use of_property_present() for non-boolean properties")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

riscv: signal: fix signal_minsigstksz [+ + +]
Author: Yong-Xuan Wang <yongxuan.wang@sifive.com>
Date:   Fri Dec 20 16:39:24 2024 +0800

    riscv: signal: fix signal_minsigstksz
    
    [ Upstream commit 564fc8eb6f78e01292ff10801f318feae6153fdd ]
    
    The init_rt_signal_env() funciton is called before the alternative patch
    is applied, so using the alternative-related API to check the availability
    of an extension within this function doesn't have the intended effect.
    This patch reorders the init_rt_signal_env() and apply_boot_alternatives()
    to get the correct signal_minsigstksz.
    
    Fixes: e92f469b0771 ("riscv: signal: Report signal frame size to userspace via auxv")
    Signed-off-by: Yong-Xuan Wang <yongxuan.wang@sifive.com>
    Reviewed-by: Zong Li <zong.li@sifive.com>
    Reviewed-by: Andy Chiu <andybnac@gmail.com>
    Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20241220083926.19453-3-yongxuan.wang@sifive.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/traps: Fix test_monitor_call() inline assembly [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Tue Feb 25 10:53:10 2025 +0100

    s390/traps: Fix test_monitor_call() inline assembly
    
    commit 5623bc23a1cb9f9a9470fa73b3a20321dc4c4870 upstream.
    
    The test_monitor_call() inline assembly uses the xgr instruction, which
    also modifies the condition code, to clear a register. However the clobber
    list of the inline assembly does not specify that the condition code is
    modified, which may lead to incorrect code generation.
    
    Use the lhi instruction instead to clear the register without that the
    condition code is modified. Furthermore this limits clearing to the lower
    32 bits of val, since its type is int.
    
    Fixes: 17248ea03674 ("s390: fix __EMIT_BUG() macro")
    Cc: stable@vger.kernel.org
    Reviewed-by: Juergen Christ <jchrist@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sched/fair: Fix potential memory corruption in child_cfs_rq_on_list [+ + +]
Author: Zecheng Li <zecheng@google.com>
Date:   Tue Mar 4 21:40:31 2025 +0000

    sched/fair: Fix potential memory corruption in child_cfs_rq_on_list
    
    [ Upstream commit 3b4035ddbfc8e4521f85569998a7569668cccf51 ]
    
    child_cfs_rq_on_list attempts to convert a 'prev' pointer to a cfs_rq.
    This 'prev' pointer can originate from struct rq's leaf_cfs_rq_list,
    making the conversion invalid and potentially leading to memory
    corruption. Depending on the relative positions of leaf_cfs_rq_list and
    the task group (tg) pointer within the struct, this can cause a memory
    fault or access garbage data.
    
    The issue arises in list_add_leaf_cfs_rq, where both
    cfs_rq->leaf_cfs_rq_list and rq->leaf_cfs_rq_list are added to the same
    leaf list. Also, rq->tmp_alone_branch can be set to rq->leaf_cfs_rq_list.
    
    This adds a check `if (prev == &rq->leaf_cfs_rq_list)` after the main
    conditional in child_cfs_rq_on_list. This ensures that the container_of
    operation will convert a correct cfs_rq struct.
    
    This check is sufficient because only cfs_rqs on the same CPU are added
    to the list, so verifying the 'prev' pointer against the current rq's list
    head is enough.
    
    Fixes a potential memory corruption issue that due to current struct
    layout might not be manifesting as a crash but could lead to unpredictable
    behavior when the layout changes.
    
    Fixes: fdaba61ef8a2 ("sched/fair: Ensure that the CFS parent is added after unthrottling")
    Signed-off-by: Zecheng Li <zecheng@google.com>
    Reviewed-and-tested-by: K Prateek Nayak <kprateek.nayak@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
    Link: https://lore.kernel.org/r/20250304214031.2882646-1-zecheng@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
slimbus: messaging: Free transaction ID in delayed interrupt scenario [+ + +]
Author: Visweswara Tanuku <quic_vtanuku@quicinc.com>
Date:   Fri Jan 24 04:57:40 2025 -0800

    slimbus: messaging: Free transaction ID in delayed interrupt scenario
    
    commit dcb0d43ba8eb9517e70b1a0e4b0ae0ab657a0e5a upstream.
    
    In case of interrupt delay for any reason, slim_do_transfer()
    returns timeout error but the transaction ID (TID) is not freed.
    This results into invalid memory access inside
    qcom_slim_ngd_rx_msgq_cb() due to invalid TID.
    
    Fix the issue by freeing the TID in slim_do_transfer() before
    returning timeout error to avoid invalid memory access.
    
    Call trace:
    __memcpy_fromio+0x20/0x190
    qcom_slim_ngd_rx_msgq_cb+0x130/0x290 [slim_qcom_ngd_ctrl]
    vchan_complete+0x2a0/0x4a0
    tasklet_action_common+0x274/0x700
    tasklet_action+0x28/0x3c
    _stext+0x188/0x620
    run_ksoftirqd+0x34/0x74
    smpboot_thread_fn+0x1d8/0x464
    kthread+0x178/0x238
    ret_from_fork+0x10/0x20
    Code: aa0003e8 91000429 f100044a 3940002b (3800150b)
    ---[ end trace 0fe00bec2b975c99 ]---
    Kernel panic - not syncing: Oops: Fatal exception in interrupt.
    
    Fixes: afbdcc7c384b ("slimbus: Add messaging APIs to slimbus framework")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Visweswara Tanuku <quic_vtanuku@quicinc.com>
    Link: https://lore.kernel.org/r/20250124125740.16897-1-quic_vtanuku@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: fix chmod(2) regression with ATTR_READONLY [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Sun Feb 16 18:02:47 2025 -0300

    smb: client: fix chmod(2) regression with ATTR_READONLY
    
    [ Upstream commit 654292a0b264e9b8c51b98394146218a21612aa1 ]
    
    When the user sets a file or directory as read-only (e.g. ~S_IWUGO),
    the client will set the ATTR_READONLY attribute by sending an
    SMB2_SET_INFO request to the server in cifs_setattr_{,nounix}(), but
    cifsInodeInfo::cifsAttrs will be left unchanged as the client will
    only update the new file attributes in the next call to
    {smb311_posix,cifs}_get_inode_info() with the new metadata filled in
    @data parameter.
    
    Commit a18280e7fdea ("smb: cilent: set reparse mount points as
    automounts") mistakenly removed the @data NULL check when calling
    is_inode_cache_good(), which broke the above case as the new
    ATTR_READONLY attribute would end up not being updated on files with a
    read lease.
    
    Fix this by updating the inode whenever we have cached metadata in
    @data parameter.
    
    Reported-by: Horst Reiterer <horst.reiterer@fabasoft.com>
    Closes: https://lore.kernel.org/r/85a16504e09147a195ac0aac1c801280@fabasoft.com
    Fixes: a18280e7fdea ("smb: cilent: set reparse mount points as automounts")
    Cc: stable@vger.kernel.org
    Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi-mxs: Fix chipselect glitch [+ + +]
Author: Ralf Schlatterbeck <rsc@runtux.com>
Date:   Fri Feb 2 12:53:30 2024 +0100

    spi-mxs: Fix chipselect glitch
    
    commit 269e31aecdd0b70f53a05def79480f15cbcc0fd6 upstream.
    
    There was a change in the mxs-dma engine that uses a new custom flag.
    The change was not applied to the mxs spi driver.
    This results in chipselect being deasserted too early.
    This fixes the chipselect problem by using the new flag in the mxs-spi
    driver.
    
    Fixes: ceeeb99cd821 ("dmaengine: mxs: rename custom flag")
    Signed-off-by: Ralf Schlatterbeck <rsc@runtux.com>
    Link: https://msgid.link/r/20240202115330.wxkbfmvd76sy3a6a@runtux.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Stefan Wahren <wahrenst@gmx.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tracing: probe-events: Remove unused MAX_ARG_BUF_LEN macro [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Wed Feb 26 15:19:18 2025 +0900

    tracing: probe-events: Remove unused MAX_ARG_BUF_LEN macro
    
    [ Upstream commit fd5ba38390c59e1c147480ae49b6133c4ac24001 ]
    
    Commit 18b1e870a496 ("tracing/probes: Add $arg* meta argument for all
    function args") introduced MAX_ARG_BUF_LEN but it is not used.
    Remove it.
    
    Link: https://lore.kernel.org/all/174055075876.4079315.8805416872155957588.stgit@mhiramat.tok.corp.google.com/
    
    Fixes: 18b1e870a496 ("tracing/probes: Add $arg* meta argument for all function args")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tracing: tprobe-events: Fix a memory leak when tprobe with $retval [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Wed Feb 26 15:18:46 2025 +0900

    tracing: tprobe-events: Fix a memory leak when tprobe with $retval
    
    commit ac965d7d88fc36fb42e3d50225c0a44dd8326da4 upstream.
    
    Fix a memory leak when a tprobe is defined with $retval. This
    combination is not allowed, but the parse_symbol_and_return() does
    not free the *symbol which should not be used if it returns the error.
    Thus, it leaks the *symbol memory in that error path.
    
    Link: https://lore.kernel.org/all/174055072650.4079315.3063014346697447838.stgit@mhiramat.tok.corp.google.com/
    
    Fixes: ce51e6153f77 ("tracing: fprobe-event: Fix to check tracepoint event and return")
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ublk: set_params: properly check if parameters can be applied [+ + +]
Author: Uday Shankar <ushankar@purestorage.com>
Date:   Tue Mar 4 14:34:26 2025 -0700

    ublk: set_params: properly check if parameters can be applied
    
    [ Upstream commit 5ac60242b0173be83709603ebaf27a473f16c4e4 ]
    
    The parameters set by the set_params call are only applied to the block
    device in the start_dev call. So if a device has already been started, a
    subsequently issued set_params on that device will not have the desired
    effect, and should return an error. There is an existing check for this
    - set_params fails on devices in the LIVE state. But this check is not
    sufficient to cover the recovery case. In this case, the device will be
    in the QUIESCED or FAIL_IO states, so set_params will succeed. But this
    success is misleading, because the parameters will not be applied, since
    the device has already been started (by a previous ublk server). The bit
    UB_STATE_USED is set on completion of the start_dev; use it to detect
    and fail set_params commands which arrive too late to be applied (after
    start_dev).
    
    Signed-off-by: Uday Shankar <ushankar@purestorage.com>
    Fixes: 0aa73170eba5 ("ublk_drv: add SET_PARAMS/GET_PARAMS control command")
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20250304-set_params-v1-1-17b5e0887606@purestorage.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
uprobes: Fix race in uprobe_free_utask [+ + +]
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Thu Jan 9 15:14:40 2025 +0100

    uprobes: Fix race in uprobe_free_utask
    
    commit b583ef82b671c9a752fbe3e95bd4c1c51eab764d upstream.
    
    Max Makarov reported kernel panic [1] in perf user callchain code.
    
    The reason for that is the race between uprobe_free_utask and bpf
    profiler code doing the perf user stack unwind and is triggered
    within uprobe_free_utask function:
      - after current->utask is freed and
      - before current->utask is set to NULL
    
     general protection fault, probably for non-canonical address 0x9e759c37ee555c76: 0000 [#1] SMP PTI
     RIP: 0010:is_uprobe_at_func_entry+0x28/0x80
     ...
      ? die_addr+0x36/0x90
      ? exc_general_protection+0x217/0x420
      ? asm_exc_general_protection+0x26/0x30
      ? is_uprobe_at_func_entry+0x28/0x80
      perf_callchain_user+0x20a/0x360
      get_perf_callchain+0x147/0x1d0
      bpf_get_stackid+0x60/0x90
      bpf_prog_9aac297fb833e2f5_do_perf_event+0x434/0x53b
      ? __smp_call_single_queue+0xad/0x120
      bpf_overflow_handler+0x75/0x110
      ...
      asm_sysvec_apic_timer_interrupt+0x1a/0x20
     RIP: 0010:__kmem_cache_free+0x1cb/0x350
     ...
      ? uprobe_free_utask+0x62/0x80
      ? acct_collect+0x4c/0x220
      uprobe_free_utask+0x62/0x80
      mm_release+0x12/0xb0
      do_exit+0x26b/0xaa0
      __x64_sys_exit+0x1b/0x20
      do_syscall_64+0x5a/0x80
    
    It can be easily reproduced by running following commands in
    separate terminals:
    
      # while :; do bpftrace -e 'uprobe:/bin/ls:_start  { printf("hit\n"); }' -c ls; done
      # bpftrace -e 'profile:hz:100000 { @[ustack()] = count(); }'
    
    Fixing this by making sure current->utask pointer is set to NULL
    before we start to release the utask object.
    
    [1] https://github.com/grafana/pyroscope/issues/3673
    
    Fixes: cfa7f3d2c526 ("perf,x86: avoid missing caller address in stack traces captured in uprobe")
    Reported-by: Max Makarov <maxpain@linux.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/r/20250109141440.2692173-1-jolsa@kernel.org
    [Christian Simon: Rebased for 6.12.y, due to mainline change https://lore.kernel.org/all/20240929144239.GA9475@redhat.com/]
    Signed-off-by: Christian Simon <simon@swine.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
usb: atm: cxacru: fix a flaw in existing endpoint checks [+ + +]
Author: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Date:   Thu Feb 13 15:22:57 2025 +0300

    usb: atm: cxacru: fix a flaw in existing endpoint checks
    
    commit c90aad369899a607cfbc002bebeafd51e31900cd upstream.
    
    Syzbot once again identified a flaw in usb endpoint checking, see [1].
    This time the issue stems from a commit authored by me (2eabb655a968
    ("usb: atm: cxacru: fix endpoint checking in cxacru_bind()")).
    
    While using usb_find_common_endpoints() may usually be enough to
    discard devices with wrong endpoints, in this case one needs more
    than just finding and identifying the sufficient number of endpoints
    of correct types - one needs to check the endpoint's address as well.
    
    Since cxacru_bind() fills URBs with CXACRU_EP_CMD address in mind,
    switch the endpoint verification approach to usb_check_XXX_endpoints()
    instead to fix incomplete ep testing.
    
    [1] Syzbot report:
    usb 5-1: BOGUS urb xfer, pipe 3 != type 1
    WARNING: CPU: 0 PID: 1378 at drivers/usb/core/urb.c:504 usb_submit_urb+0xc4e/0x18c0 drivers/usb/core/urb.c:503
    ...
    RIP: 0010:usb_submit_urb+0xc4e/0x18c0 drivers/usb/core/urb.c:503
    ...
    Call Trace:
     <TASK>
     cxacru_cm+0x3c8/0xe50 drivers/usb/atm/cxacru.c:649
     cxacru_card_status drivers/usb/atm/cxacru.c:760 [inline]
     cxacru_bind+0xcf9/0x1150 drivers/usb/atm/cxacru.c:1223
     usbatm_usb_probe+0x314/0x1d30 drivers/usb/atm/usbatm.c:1058
     cxacru_usb_probe+0x184/0x220 drivers/usb/atm/cxacru.c:1377
     usb_probe_interface+0x641/0xbb0 drivers/usb/core/driver.c:396
     really_probe+0x2b9/0xad0 drivers/base/dd.c:658
     __driver_probe_device+0x1a2/0x390 drivers/base/dd.c:800
     driver_probe_device+0x50/0x430 drivers/base/dd.c:830
    ...
    
    Reported-and-tested-by: syzbot+ccbbc229a024fa3e13b5@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=ccbbc229a024fa3e13b5
    Fixes: 2eabb655a968 ("usb: atm: cxacru: fix endpoint checking in cxacru_bind()")
    Cc: stable@kernel.org
    Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
    Link: https://lore.kernel.org/r/20250213122259.730772-1-n.zhandarovich@fintech.ru
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: dwc3: gadget: Prevent irq storm when TH re-executes [+ + +]
Author: Badhri Jagan Sridharan <badhri@google.com>
Date:   Sun Feb 16 22:30:02 2025 +0000

    usb: dwc3: gadget: Prevent irq storm when TH re-executes
    
    commit 69c58deec19628c8a686030102176484eb94fed4 upstream.
    
    While commit d325a1de49d6 ("usb: dwc3: gadget: Prevent losing events in
    event cache") makes sure that top half(TH) does not end up overwriting the
    cached events before processing them when the TH gets invoked more than one
    time, returning IRQ_HANDLED results in occasional irq storm where the TH
    hogs the CPU. The irq storm can be prevented by the flag before event
    handler busy is cleared. Default enable interrupt moderation in all
    versions which support them.
    
    ftrace event stub during dwc3 irq storm:
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000866: irq_handler_exit: irq=14 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000872: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000874: irq_handler_exit: irq=504 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000881: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000883: irq_handler_exit: irq=504 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000889: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000892: irq_handler_exit: irq=504 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000898: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000901: irq_handler_exit: irq=504 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000907: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000909: irq_handler_exit: irq=504 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000915: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000918: irq_handler_exit: irq=504 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000924: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000927: irq_handler_exit: irq=504 ret=handled
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000933: irq_handler_entry: irq=504 name=dwc3
        irq/504_dwc3-1111  ( 1111) [000] .... 70.000935: irq_handler_exit: irq=504 ret=handled
        ....
    
    Cc: stable <stable@kernel.org>
    Suggested-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Fixes: d325a1de49d6 ("usb: dwc3: gadget: Prevent losing events in event cache")
    Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20250216223003.3568039-1-badhri@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: dwc3: Set SUSPENDENABLE soon after phy init [+ + +]
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu Jan 30 23:49:31 2025 +0000

    usb: dwc3: Set SUSPENDENABLE soon after phy init
    
    commit cc5bfc4e16fc1d1c520cd7bb28646e82b6e69217 upstream.
    
    After phy initialization, some phy operations can only be executed while
    in lower P states. Ensure GUSB3PIPECTL.SUSPENDENABLE and
    GUSB2PHYCFG.SUSPHY are set soon after initialization to avoid blocking
    phy ops.
    
    Previously the SUSPENDENABLE bits are only set after the controller
    initialization, which may not happen right away if there's no gadget
    driver or xhci driver bound. Revise this to clear SUSPENDENABLE bits
    only when there's mode switching (change in GCTL.PRTCAPDIR).
    
    Fixes: 6d735722063a ("usb: dwc3: core: Prevent phy suspend during init")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/633aef0afee7d56d2316f7cc3e1b2a6d518a8cc9.1738280911.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: Check bmAttributes only if configuration is valid [+ + +]
Author: Prashanth K <prashanth.k@oss.qualcomm.com>
Date:   Mon Feb 24 14:26:04 2025 +0530

    usb: gadget: Check bmAttributes only if configuration is valid
    
    commit 8e812e9355a6f14dffd54a33d951ca403b9732f5 upstream.
    
    If the USB configuration is not valid, then avoid checking for
    bmAttributes to prevent null pointer deference.
    
    Cc: stable <stable@kernel.org>
    Fixes: 40e89ff5750f ("usb: gadget: Set self-powered based on MaxPower and bmAttributes")
    Signed-off-by: Prashanth K <prashanth.k@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250224085604.417327-1-prashanth.k@oss.qualcomm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: Fix setting self-powered state on suspend [+ + +]
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Thu Feb 20 13:03:14 2025 +0100

    usb: gadget: Fix setting self-powered state on suspend
    
    commit c783e1258f29c5caac9eea0aea6b172870f1baf8 upstream.
    
    cdev->config might be NULL, so check it before dereferencing.
    
    CC: stable <stable@kernel.org>
    Fixes: 40e89ff5750f ("usb: gadget: Set self-powered based on MaxPower and bmAttributes")
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Link: https://lore.kernel.org/r/20250220120314.3614330-1-m.szyprowski@samsung.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: Set self-powered based on MaxPower and bmAttributes [+ + +]
Author: Prashanth K <prashanth.k@oss.qualcomm.com>
Date:   Mon Feb 17 17:33:28 2025 +0530

    usb: gadget: Set self-powered based on MaxPower and bmAttributes
    
    commit 40e89ff5750fca2c1d6da93f98a2038716bba86c upstream.
    
    Currently the USB gadget will be set as bus-powered based solely
    on whether its bMaxPower is greater than 100mA, but this may miss
    devices that may legitimately draw less than 100mA but still want
    to report as bus-powered. Similarly during suspend & resume, USB
    gadget is incorrectly marked as bus/self powered without checking
    the bmAttributes field. Fix these by configuring the USB gadget
    as self or bus powered based on bmAttributes, and explicitly set
    it as bus-powered if it draws more than 100mA.
    
    Cc: stable <stable@kernel.org>
    Fixes: 5e5caf4fa8d3 ("usb: gadget: composite: Inform controller driver of self-powered")
    Signed-off-by: Prashanth K <prashanth.k@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250217120328.2446639-1-prashanth.k@oss.qualcomm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: gadget: u_ether: Set is_suspend flag if remote wakeup fails [+ + +]
Author: Prashanth K <prashanth.k@oss.qualcomm.com>
Date:   Wed Feb 12 15:38:40 2025 +0530

    usb: gadget: u_ether: Set is_suspend flag if remote wakeup fails
    
    commit 17c2c87c37862c3e95b55f660681cc6e8d66660e upstream.
    
    Currently while UDC suspends, u_ether attempts to remote wakeup
    the host if there are any pending transfers. However, if remote
    wakeup fails, the UDC remains suspended but the is_suspend flag
    is not set. And since is_suspend flag isn't set, the subsequent
    eth_start_xmit() would queue USB requests to suspended UDC.
    
    To fix this, bail out from gether_suspend() only if remote wakeup
    operation is successful.
    
    Cc: stable <stable@kernel.org>
    Fixes: 0a1af6dfa077 ("usb: gadget: f_ecm: Add suspend/resume and remote wakeup support")
    Signed-off-by: Prashanth K <prashanth.k@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250212100840.3812153-1-prashanth.k@oss.qualcomm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: hub: lack of clearing xHC resources [+ + +]
Author: Pawel Laszczak <pawell@cadence.com>
Date:   Fri Feb 28 07:50:25 2025 +0000

    usb: hub: lack of clearing xHC resources
    
    commit 2b66ef84d0d2a0ea955b40bd306f5e3abbc5cf9c upstream.
    
    The xHC resources allocated for USB devices are not released in correct
    order after resuming in case when while suspend device was reconnected.
    
    This issue has been detected during the fallowing scenario:
    - connect hub HS to root port
    - connect LS/FS device to hub port
    - wait for enumeration to finish
    - force host to suspend
    - reconnect hub attached to root port
    - wake host
    
    For this scenario during enumeration of USB LS/FS device the Cadence xHC
    reports completion error code for xHC commands because the xHC resources
    used for devices has not been properly released.
    XHCI specification doesn't mention that device can be reset in any order
    so, we should not treat this issue as Cadence xHC controller bug.
    Similar as during disconnecting in this case the device resources should
    be cleared starting form the last usb device in tree toward the root hub.
    To fix this issue usbcore driver should call hcd->driver->reset_device
    for all USB devices connected to hub which was reconnected while
    suspending.
    
    Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Pawel Laszczak <pawell@cadence.com>
    Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/PH7PR07MB953841E38C088678ACDCF6EEDDCC2@PH7PR07MB9538.namprd07.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: quirks: Add DELAY_INIT and NO_LPM for Prolific Mass Storage Card Reader [+ + +]
Author: Miao Li <limiao@kylinos.cn>
Date:   Tue Mar 4 15:07:57 2025 +0800

    usb: quirks: Add DELAY_INIT and NO_LPM for Prolific Mass Storage Card Reader
    
    commit ff712188daa3fe3ce7e11e530b4dca3826dae14a upstream.
    
    When used on Huawei hisi platforms, Prolific Mass Storage Card Reader
    which the VID:PID is in 067b:2731 might fail to enumerate at boot time
    and doesn't work well with LPM enabled, combination quirks:
            USB_QUIRK_DELAY_INIT + USB_QUIRK_NO_LPM
    fixed the problems.
    
    Signed-off-by: Miao Li <limiao@kylinos.cn>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20250304070757.139473-1-limiao870622@163.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: renesas_usbhs: Call clk_put() [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Feb 25 13:02:46 2025 +0200

    usb: renesas_usbhs: Call clk_put()
    
    commit b5ea08aa883da05106fcc683d12489a4292d1122 upstream.
    
    Clocks acquired with of_clk_get() need to be freed with clk_put(). Call
    clk_put() on priv->clks[0] on error path.
    
    Fixes: 3df0e240caba ("usb: renesas_usbhs: Add multiple clocks management")
    Cc: stable <stable@kernel.org>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250225110248.870417-2-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: renesas_usbhs: Flush the notify_hotplug_work [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Feb 25 13:02:48 2025 +0200

    usb: renesas_usbhs: Flush the notify_hotplug_work
    
    commit 552ca6b87e3778f3dd5b87842f95138162e16c82 upstream.
    
    When performing continuous unbind/bind operations on the USB drivers
    available on the Renesas RZ/G2L SoC, a kernel crash with the message
    "Unable to handle kernel NULL pointer dereference at virtual address"
    may occur. This issue points to the usbhsc_notify_hotplug() function.
    
    Flush the delayed work to avoid its execution when driver resources are
    unavailable.
    
    Fixes: bc57381e6347 ("usb: renesas_usbhs: use delayed_work instead of work_struct")
    Cc: stable <stable@kernel.org>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250225110248.870417-4-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: renesas_usbhs: Use devm_usb_get_phy() [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Feb 25 13:02:47 2025 +0200

    usb: renesas_usbhs: Use devm_usb_get_phy()
    
    commit e0c92440938930e7fa7aa6362780d39cdea34449 upstream.
    
    The gpriv->transceiver is retrieved in probe() through usb_get_phy() but
    never released. Use devm_usb_get_phy() to handle this scenario.
    
    This issue was identified through code investigation. No issue was found
    without this change.
    
    Fixes: b5a2875605ca ("usb: renesas_usbhs: Allow an OTG PHY driver to provide VBUS")
    Cc: stable <stable@kernel.org>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250225110248.870417-3-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: tcpci_rt1711h: Unmask alert interrupts to fix functionality [+ + +]
Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Date:   Wed Feb 19 12:47:00 2025 +0100

    usb: typec: tcpci_rt1711h: Unmask alert interrupts to fix functionality
    
    commit d6b82dafd17db0658f089b9cdec573982ca82bc5 upstream.
    
    During probe, the TCPC alert interrupts are getting masked to
    avoid unwanted interrupts during chip setup: this is ok to do
    but there is no unmasking happening at any later time, which
    means that the chip will not raise any interrupt, essentially
    making it not functional as, while internally it does perform
    all of the intended functions, it won't signal anything to the
    outside.
    
    Unmask the alert interrupts to fix functionality.
    
    Fixes: ce08eaeb6388 ("staging: typec: rt1711h typec chip driver")
    Cc: stable <stable@kernel.org>
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20250219114700.41700-1-angelogioacchino.delregno@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: ucsi: Fix NULL pointer access [+ + +]
Author: Andrei Kuchynski <akuchynski@chromium.org>
Date:   Wed Mar 5 11:17:39 2025 +0000

    usb: typec: ucsi: Fix NULL pointer access
    
    commit b13abcb7ddd8d38de769486db5bd917537b32ab1 upstream.
    
    Resources should be released only after all threads that utilize them
    have been destroyed.
    This commit ensures that resources are not released prematurely by waiting
    for the associated workqueue to complete before deallocating them.
    
    Cc: stable <stable@kernel.org>
    Fixes: b9aa02ca39a4 ("usb: typec: ucsi: Add polling mechanism for partner tasks like alt mode checking")
    Signed-off-by: Andrei Kuchynski <akuchynski@chromium.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20250305111739.1489003-2-akuchynski@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: typec: ucsi: increase timeout for PPM reset operations [+ + +]
Author: Fedor Pchelkin <boddah8794@gmail.com>
Date:   Mon Feb 17 13:54:40 2025 +0300

    usb: typec: ucsi: increase timeout for PPM reset operations
    
    commit bf4f9ae1cb08ccaafbe6874be6c46f59b83ae778 upstream.
    
    It is observed that on some systems an initial PPM reset during the boot
    phase can trigger a timeout:
    
    [    6.482546] ucsi_acpi USBC000:00: failed to reset PPM!
    [    6.482551] ucsi_acpi USBC000:00: error -ETIMEDOUT: PPM init failed
    
    Still, increasing the timeout value, albeit being the most straightforward
    solution, eliminates the problem: the initial PPM reset may take up to
    ~8000-10000ms on some Lenovo laptops. When it is reset after the above
    period of time (or even if ucsi_reset_ppm() is not called overall), UCSI
    works as expected.
    
    Moreover, if the ucsi_acpi module is loaded/unloaded manually after the
    system has booted, reading the CCI values and resetting the PPM works
    perfectly, without any timeout. Thus it's only a boot-time issue.
    
    The reason for this behavior is not clear but it may be the consequence
    of some tricks that the firmware performs or be an actual firmware bug.
    As a workaround, increase the timeout to avoid failing the UCSI
    initialization prematurely.
    
    Fixes: b1b59e16075f ("usb: typec: ucsi: Increase command completion timeout value")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Fedor Pchelkin <boddah8794@gmail.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20250217105442.113486-3-boddah8794@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: xhci: Enable the TRB overfetch quirk on VIA VL805 [+ + +]
Author: Michal Pecio <michal.pecio@gmail.com>
Date:   Tue Feb 25 11:59:27 2025 +0200

    usb: xhci: Enable the TRB overfetch quirk on VIA VL805
    
    commit c133ec0e5717868c9967fa3df92a55e537b1aead upstream.
    
    Raspberry Pi is a major user of those chips and they discovered a bug -
    when the end of a transfer ring segment is reached, up to four TRBs can
    be prefetched from the next page even if the segment ends with link TRB
    and on page boundary (the chip claims to support standard 4KB pages).
    
    It also appears that if the prefetched TRBs belong to a different ring
    whose doorbell is later rung, they may be used without refreshing from
    system RAM and the endpoint will stay idle if their cycle bit is stale.
    
    Other users complain about IOMMU faults on x86 systems, unsurprisingly.
    
    Deal with it by using existing quirk which allocates a dummy page after
    each transfer ring segment. This was seen to resolve both problems. RPi
    came up with a more efficient solution, shortening each segment by four
    TRBs, but it complicated the driver and they ditched it for this quirk.
    
    Also rename the quirk and add VL805 device ID macro.
    
    Signed-off-by: Michal Pecio <michal.pecio@gmail.com>
    Link: https://github.com/raspberrypi/linux/issues/4685
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=215906
    CC: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20250225095927.2512358-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vlan: enforce underlying device type [+ + +]
Author: Oscar Maes <oscmaes92@gmail.com>
Date:   Mon Mar 3 16:56:19 2025 +0100

    vlan: enforce underlying device type
    
    [ Upstream commit b33a534610067ade2bdaf2052900aaad99701353 ]
    
    Currently, VLAN devices can be created on top of non-ethernet devices.
    
    Besides the fact that it doesn't make much sense, this also causes a
    bug which leaks the address of a kernel function to usermode.
    
    When creating a VLAN device, we initialize GARP (garp_init_applicant)
    and MRP (mrp_init_applicant) for the underlying device.
    
    As part of the initialization process, we add the multicast address of
    each applicant to the underlying device, by calling dev_mc_add.
    
    __dev_mc_add uses dev->addr_len to determine the length of the new
    multicast address.
    
    This causes an out-of-bounds read if dev->addr_len is greater than 6,
    since the multicast addresses provided by GARP and MRP are only 6
    bytes long.
    
    This behaviour can be reproduced using the following commands:
    
    ip tunnel add gretest mode ip6gre local ::1 remote ::2 dev lo
    ip l set up dev gretest
    ip link add link gretest name vlantest type vlan id 100
    
    Then, the following command will display the address of garp_pdu_rcv:
    
    ip maddr show | grep 01:80:c2:00:00:21
    
    Fix the bug by enforcing the type of the underlying device during VLAN
    device initialization.
    
    Fixes: 22bedad3ce11 ("net: convert multicast list to list_head")
    Reported-by: syzbot+91161fe81857b396c8a0@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/000000000000ca9a81061a01ec20@google.com/
    Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Link: https://patch.msgid.link/20250303155619.8918-1-oscmaes92@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: cfg80211: regulatory: improve invalid hints checking [+ + +]
Author: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Date:   Fri Feb 28 16:46:57 2025 +0300

    wifi: cfg80211: regulatory: improve invalid hints checking
    
    commit 59b348be7597c4a9903cb003c69e37df20c04a30 upstream.
    
    Syzbot keeps reporting an issue [1] that occurs when erroneous symbols
    sent from userspace get through into user_alpha2[] via
    regulatory_hint_user() call. Such invalid regulatory hints should be
    rejected.
    
    While a sanity check from commit 47caf685a685 ("cfg80211: regulatory:
    reject invalid hints") looks to be enough to deter these very cases,
    there is a way to get around it due to 2 reasons.
    
    1) The way isalpha() works, symbols other than latin lower and
    upper letters may be used to determine a country/domain.
    For instance, greek letters will also be considered upper/lower
    letters and for such characters isalpha() will return true as well.
    However, ISO-3166-1 alpha2 codes should only hold latin
    characters.
    
    2) While processing a user regulatory request, between
    reg_process_hint_user() and regulatory_hint_user() there happens to
    be a call to queue_regulatory_request() which modifies letters in
    request->alpha2[] with toupper(). This works fine for latin symbols,
    less so for weird letter characters from the second part of _ctype[].
    
    Syzbot triggers a warning in is_user_regdom_saved() by first sending
    over an unexpected non-latin letter that gets malformed by toupper()
    into a character that ends up failing isalpha() check.
    
    Prevent this by enhancing is_an_alpha2() to ensure that incoming
    symbols are latin letters and nothing else.
    
    [1] Syzbot report:
    ------------[ cut here ]------------
    Unexpected user alpha2: A�
    WARNING: CPU: 1 PID: 964 at net/wireless/reg.c:442 is_user_regdom_saved net/wireless/reg.c:440 [inline]
    WARNING: CPU: 1 PID: 964 at net/wireless/reg.c:442 restore_alpha2 net/wireless/reg.c:3424 [inline]
    WARNING: CPU: 1 PID: 964 at net/wireless/reg.c:442 restore_regulatory_settings+0x3c0/0x1e50 net/wireless/reg.c:3516
    Modules linked in:
    CPU: 1 UID: 0 PID: 964 Comm: kworker/1:2 Not tainted 6.12.0-rc5-syzkaller-00044-gc1e939a21eb1 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Workqueue: events_power_efficient crda_timeout_work
    RIP: 0010:is_user_regdom_saved net/wireless/reg.c:440 [inline]
    RIP: 0010:restore_alpha2 net/wireless/reg.c:3424 [inline]
    RIP: 0010:restore_regulatory_settings+0x3c0/0x1e50 net/wireless/reg.c:3516
    ...
    Call Trace:
     <TASK>
     crda_timeout_work+0x27/0x50 net/wireless/reg.c:542
     process_one_work kernel/workqueue.c:3229 [inline]
     process_scheduled_works+0xa65/0x1850 kernel/workqueue.c:3310
     worker_thread+0x870/0xd30 kernel/workqueue.c:3391
     kthread+0x2f2/0x390 kernel/kthread.c:389
     ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
     </TASK>
    
    Reported-by: syzbot+e10709ac3c44f3d4e800@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=e10709ac3c44f3d4e800
    Fixes: 09d989d179d0 ("cfg80211: add regulatory hint disconnect support")
    Cc: stable@kernel.org
    Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
    Link: https://patch.msgid.link/20250228134659.1577656-1-n.zhandarovich@fintech.ru
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: iwlwifi: limit printed string from FW file [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Sun Feb 9 14:34:51 2025 +0200

    wifi: iwlwifi: limit printed string from FW file
    
    [ Upstream commit e0dc2c1bef722cbf16ae557690861e5f91208129 ]
    
    There's no guarantee here that the file is always with a
    NUL-termination, so reading the string may read beyond the
    end of the TLV. If that's the last TLV in the file, it can
    perhaps even read beyond the end of the file buffer.
    
    Fix that by limiting the print format to the size of the
    buffer we have.
    
    Fixes: aee1b6385e29 ("iwlwifi: support fseq tlv and print fseq version")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250209143303.cb5f9d0c2f5d.Idec695d53c6c2234aade306f7647b576c7e3d928@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: nl80211: reject cooked mode if it is set along with other flags [+ + +]
Author: Vitaliy Shevtsov <v.shevtsov@mt-integration.ru>
Date:   Fri Jan 31 20:26:55 2025 +0500

    wifi: nl80211: reject cooked mode if it is set along with other flags
    
    commit 49f27f29446a5bfe633dd2cc0cfebd48a1a5e77f upstream.
    
    It is possible to set both MONITOR_FLAG_COOK_FRAMES and MONITOR_FLAG_ACTIVE
    flags simultaneously on the same monitor interface from the userspace. This
    causes a sub-interface to be created with no IEEE80211_SDATA_IN_DRIVER bit
    set because the monitor interface is in the cooked state and it takes
    precedence over all other states. When the interface is then being deleted
    the kernel calls WARN_ONCE() from check_sdata_in_driver() because of missing
    that bit.
    
    Fix this by rejecting MONITOR_FLAG_COOK_FRAMES if it is set along with
    other flags.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 66f7ac50ed7c ("nl80211: Add monitor interface configuration flags")
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+2e5c1e55b9e5c28a3da7@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=2e5c1e55b9e5c28a3da7
    Signed-off-by: Vitaliy Shevtsov <v.shevtsov@mt-integration.ru>
    Link: https://patch.msgid.link/20250131152657.5606-1-v.shevtsov@mt-integration.ru
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/amd_nb: Use rdmsr_safe() in amd_get_mmconfig_range() [+ + +]
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Fri Mar 7 00:28:46 2025 +0000

    x86/amd_nb: Use rdmsr_safe() in amd_get_mmconfig_range()
    
    commit 14cb5d83068ecf15d2da6f7d0e9ea9edbcbc0457 upstream.
    
    Xen doesn't offer MSR_FAM10H_MMIO_CONF_BASE to all guests.  This results
    in the following warning:
    
      unchecked MSR access error: RDMSR from 0xc0010058 at rIP: 0xffffffff8101d19f (xen_do_read_msr+0x7f/0xa0)
      Call Trace:
       xen_read_msr+0x1e/0x30
       amd_get_mmconfig_range+0x2b/0x80
       quirk_amd_mmconfig_area+0x28/0x100
       pnp_fixup_device+0x39/0x50
       __pnp_add_device+0xf/0x150
       pnp_add_device+0x3d/0x100
       pnpacpi_add_device_handler+0x1f9/0x280
       acpi_ns_get_device_callback+0x104/0x1c0
       acpi_ns_walk_namespace+0x1d0/0x260
       acpi_get_devices+0x8a/0xb0
       pnpacpi_init+0x50/0x80
       do_one_initcall+0x46/0x2e0
       kernel_init_freeable+0x1da/0x2f0
       kernel_init+0x16/0x1b0
       ret_from_fork+0x30/0x50
       ret_from_fork_asm+0x1b/0x30
    
    based on quirks for a "PNP0c01" device.  Treating MMCFG as disabled is the
    right course of action, so no change is needed there.
    
    This was most likely exposed by fixing the Xen MSR accessors to not be
    silently-safe.
    
    Fixes: 3fac3734c43a ("xen/pv: support selecting safe/unsafe msr accesses")
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20250307002846.3026685-1-andrew.cooper3@citrix.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
x86/boot: Rename conflicting 'boot_params' pointer to 'boot_params_ptr' [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Tue Oct 17 15:25:12 2023 +0200

    x86/boot: Rename conflicting 'boot_params' pointer to 'boot_params_ptr'
    
    commit d55d5bc5d937743aa8ebb7ca3af25111053b5d8c upstream.
    
    The x86 decompressor is built and linked as a separate executable, but
    it shares components with the kernel proper, which are either #include'd
    as C files, or linked into the decompresor as a static library (e.g, the
    EFI stub)
    
    Both the kernel itself and the decompressor define a global symbol
    'boot_params' to refer to the boot_params struct, but in the former
    case, it refers to the struct directly, whereas in the decompressor, it
    refers to a global pointer variable referring to the struct boot_params
    passed by the bootloader or constructed from scratch.
    
    This ambiguity is unfortunate, and makes it impossible to assign this
    decompressor variable from the x86 EFI stub, given that declaring it as
    extern results in a clash. So rename the decompressor version (whose
    scope is limited) to boot_params_ptr.
    
    [ mingo: Renamed 'boot_params_p' to 'boot_params_ptr' for clarity ]
    
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: linux-kernel@vger.kernel.org
    [ardb: include references to boot_params in x86-stub.[ch]]
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

x86/boot: Sanitize boot params before parsing command line [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Thu Mar 6 16:59:16 2025 +0100

    x86/boot: Sanitize boot params before parsing command line
    
    commit c00b413a96261faef4ce22329153c6abd4acef25 upstream.
    
    The 5-level paging code parses the command line to look for the 'no5lvl'
    string, and does so very early, before sanitize_boot_params() has been
    called and has been given the opportunity to wipe bogus data from the
    fields in boot_params that are not covered by struct setup_header, and
    are therefore supposed to be initialized to zero by the bootloader.
    
    This triggers an early boot crash when using syslinux-efi to boot a
    recent kernel built with CONFIG_X86_5LEVEL=y and CONFIG_EFI_STUB=n, as
    the 0xff padding that now fills the unused PE/COFF header is copied into
    boot_params by the bootloader, and interpreted as the top half of the
    command line pointer.
    
    Fix this by sanitizing the boot_params before use. Note that there is no
    harm in calling this more than once; subsequent invocations are able to
    spot that the boot_params have already been cleaned up.
    
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: <stable@vger.kernel.org> # v6.1+
    Link: https://lore.kernel.org/r/20250306155915.342465-2-ardb+git@google.com
    Closes: https://lore.kernel.org/all/202503041549.35913.ulrich.gemkow@ikr.uni-stuttgart.de
    [ardb: resolve conflict]
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/cacheinfo: Validate CPUID leaf 0x2 EDX output [+ + +]
Author: Ahmed S. Darwish <darwi@linutronix.de>
Date:   Tue Mar 4 09:51:12 2025 +0100

    x86/cacheinfo: Validate CPUID leaf 0x2 EDX output
    
    commit 8177c6bedb7013cf736137da586cf783922309dd upstream.
    
    CPUID leaf 0x2 emits one-byte descriptors in its four output registers
    EAX, EBX, ECX, and EDX.  For these descriptors to be valid, the most
    significant bit (MSB) of each register must be clear.
    
    The historical Git commit:
    
      019361a20f016 ("- pre6: Intel: start to add Pentium IV specific stuff (128-byte cacheline etc)...")
    
    introduced leaf 0x2 output parsing.  It only validated the MSBs of EAX,
    EBX, and ECX, but left EDX unchecked.
    
    Validate EDX's most-significant bit.
    
    Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: stable@vger.kernel.org
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/r/20250304085152.51092-2-darwi@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/cpu: Properly parse CPUID leaf 0x2 TLB descriptor 0x63 [+ + +]
Author: Ahmed S. Darwish <darwi@linutronix.de>
Date:   Tue Mar 4 09:51:14 2025 +0100

    x86/cpu: Properly parse CPUID leaf 0x2 TLB descriptor 0x63
    
    commit f6bdaab79ee4228a143ee1b4cb80416d6ffc0c63 upstream.
    
    CPUID leaf 0x2's one-byte TLB descriptors report the number of entries
    for specific TLB types, among other properties.
    
    Typically, each emitted descriptor implies the same number of entries
    for its respective TLB type(s).  An emitted 0x63 descriptor is an
    exception: it implies 4 data TLB entries for 1GB pages and 32 data TLB
    entries for 2MB or 4MB pages.
    
    For the TLB descriptors parsing code, the entry count for 1GB pages is
    encoded at the intel_tlb_table[] mapping, but the 2MB/4MB entry count is
    totally ignored.
    
    Update leaf 0x2's parsing logic 0x2 to account for 32 data TLB entries
    for 2MB/4MB pages implied by the 0x63 descriptor.
    
    Fixes: e0ba94f14f74 ("x86/tlb_info: get last level TLB entry number of CPU")
    Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: stable@kernel.org
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/r/20250304085152.51092-4-darwi@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

x86/cpu: Validate CPUID leaf 0x2 EDX output [+ + +]
Author: Ahmed S. Darwish <darwi@linutronix.de>
Date:   Tue Mar 4 09:51:13 2025 +0100

    x86/cpu: Validate CPUID leaf 0x2 EDX output
    
    commit 1881148215c67151b146450fb89ec22fd92337a7 upstream.
    
    CPUID leaf 0x2 emits one-byte descriptors in its four output registers
    EAX, EBX, ECX, and EDX.  For these descriptors to be valid, the most
    significant bit (MSB) of each register must be clear.
    
    Leaf 0x2 parsing at intel.c only validated the MSBs of EAX, EBX, and
    ECX, but left EDX unchecked.
    
    Validate EDX's most-significant bit as well.
    
    Fixes: e0ba94f14f74 ("x86/tlb_info: get last level TLB entry number of CPU")
    Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: stable@kernel.org
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/r/20250304085152.51092-3-darwi@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/microcode/AMD: Add some forgotten models to the SHA check [+ + +]
Author: Borislav Petkov (AMD) <bp@alien8.de>
Date:   Fri Mar 7 23:02:56 2025 +0100

    x86/microcode/AMD: Add some forgotten models to the SHA check
    
    commit 058a6bec37c6c3b826158f6d26b75de43816a880 upstream.
    
    Add some more forgotten models to the SHA check.
    
    Fixes: 50cef76d5cb0 ("x86/microcode/AMD: Load only SHA256-checksummed patches")
    Reported-by: Toralf Förster <toralf.foerster@gmx.de>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Toralf Förster <toralf.foerster@gmx.de>
    Link: https://lore.kernel.org/r/20250307220256.11816-1-bp@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/mm: Don't disable PCID when INVLPG has been fixed by microcode [+ + +]
Author: Xi Ruoyao <xry111@xry111.site>
Date:   Wed May 22 10:06:24 2024 +0800

    x86/mm: Don't disable PCID when INVLPG has been fixed by microcode
    
    commit f24f669d03f884a6ef95cca84317d0f329e93961 upstream.
    
    Per the "Processor Specification Update" documentations referred by
    the intel-microcode-20240312 release note, this microcode release has
    fixed the issue for all affected models.
    
    So don't disable PCID if the microcode is new enough.  The precise
    minimum microcode revision fixing the issue was provided by Pawan
    Intel.
    
    [ dhansen: comment and changelog tweaks ]
    
    Signed-off-by: Xi Ruoyao <xry111@xry111.site>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Acked-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Link: https://lore.kernel.org/all/168436059559.404.13934972543631851306.tip-bot2@tip-bot2/
    Link: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases/tag/microcode-20240312
    Link: https://cdrdv2.intel.com/v1/dl/getContent/740518 # RPL042, rev. 13
    Link: https://cdrdv2.intel.com/v1/dl/getContent/682436 # ADL063, rev. 24
    Link: https://lore.kernel.org/all/20240325231300.qrltbzf6twm43ftb@desk/
    Link: https://lore.kernel.org/all/20240522020625.69418-1-xry111%40xry111.site
    Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/sgx: Fix size overflows in sgx_encl_create() [+ + +]
Author: Jarkko Sakkinen <jarkko@kernel.org>
Date:   Wed Mar 5 07:00:05 2025 +0200

    x86/sgx: Fix size overflows in sgx_encl_create()
    
    [ Upstream commit 0d3e0dfd68fb9e6b0ec865be9f3377cc3ff55733 ]
    
    The total size calculated for EPC can overflow u64 given the added up page
    for SECS.  Further, the total size calculated for shmem can overflow even
    when the EPC size stays within limits of u64, given that it adds the extra
    space for 128 byte PCMD structures (one for each page).
    
    Address this by pre-evaluating the micro-architectural requirement of
    SGX: the address space size must be power of two. This is eventually
    checked up by ECREATE but the pre-check has the additional benefit of
    making sure that there is some space for additional data.
    
    Fixes: 888d24911787 ("x86/sgx: Add SGX_IOC_ENCLAVE_CREATE")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Dave Hansen <dave.hansen@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Link: https://lore.kernel.org/r/20250305050006.43896-1-jarkko@kernel.org
    
    Closes: https://lore.kernel.org/linux-sgx/c87e01a0-e7dd-4749-a348-0980d3444f04@stanley.mountain/
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/speculation: Add __update_spec_ctrl() helper [+ + +]
Author: Waiman Long <longman@redhat.com>
Date:   Thu Jul 27 14:45:57 2023 -0400

    x86/speculation: Add __update_spec_ctrl() helper
    
    [ Upstream commit e3e3bab1844d448a239cd57ebf618839e26b4157 ]
    
    Add a new __update_spec_ctrl() helper which is a variant of
    update_spec_ctrl() that can be used in a noinstr function.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/r/20230727184600.26768-2-longman@redhat.com
    Stable-dep-of: c157d351460b ("intel_idle: Handle older CPUs, which stop the TSC in deeper C states, correctly")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xhci: pci: Fix indentation in the PCI device ID definitions [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Nov 6 12:14:48 2024 +0200

    xhci: pci: Fix indentation in the PCI device ID definitions
    
    commit 0309ed83791c079f239c13e0c605210425cd1a61 upstream.
    
    Some of the definitions are missing the one TAB, add it to them.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20241106101459.775897-23-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>