Changelog in Linux kernel 6.12.43

 
Linux: (powerpc/512) Fix possible `dma_unmap_single()` on uninitialized pointer [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Tue Jun 10 16:29:11 2025 +0200

    (powerpc/512) Fix possible `dma_unmap_single()` on uninitialized pointer
    
    [ Upstream commit 760b9b4f6de9a33ca56a05f950cabe82138d25bd ]
    
    If the device configuration fails (if `dma_dev->device_config()`),
    `sg_dma_address(&sg)` is not initialized and the jump to `err_dma_prep`
    leads to calling `dma_unmap_single()` on `sg_dma_address(&sg)`.
    
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20250610142918.169540-2-fourier.thomas@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ACPI: APEI: GHES: add TAINT_MACHINE_CHECK on GHES panic path [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Wed Jul 2 08:39:51 2025 -0700

    ACPI: APEI: GHES: add TAINT_MACHINE_CHECK on GHES panic path
    
    [ Upstream commit 4734c8b46b901cff2feda8b82abc710b65dc31c1 ]
    
    When a GHES (Generic Hardware Error Source) triggers a panic, add the
    TAINT_MACHINE_CHECK taint flag to the kernel. This explicitly marks the
    kernel as tainted due to a machine check event, improving diagnostics
    and post-mortem analysis. The taint is set with LOCKDEP_STILL_OK to
    indicate lockdep remains valid.
    
    At large scale deployment, this helps to quickly determine panics that
    are coming due to hardware failures.
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Reviewed-by: Tony Luck <tony.luck@intel.com>
    Link: https://patch.msgid.link/20250702-add_tain-v1-1-9187b10914b9@debian.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: APEI: send SIGBUS to current task if synchronous memory error not recovered [+ + +]
Author: Shuai Xue <xueshuai@linux.alibaba.com>
Date:   Mon Jul 14 19:42:11 2025 +0800

    ACPI: APEI: send SIGBUS to current task if synchronous memory error not recovered
    
    [ Upstream commit 79a5ae3c4c5eb7e38e0ebe4d6bf602d296080060 ]
    
    If a synchronous error is detected as a result of user-space process
    triggering a 2-bit uncorrected error, the CPU will take a synchronous
    error exception such as Synchronous External Abort (SEA) on Arm64. The
    kernel will queue a memory_failure() work which poisons the related
    page, unmaps the page, and then sends a SIGBUS to the process, so that
    a system wide panic can be avoided.
    
    However, no memory_failure() work will be queued when abnormal
    synchronous errors occur. These errors can include situations like
    invalid PA, unexpected severity, no memory failure config support,
    invalid GUID section, etc. In such a case, the user-space process will
    trigger SEA again.  This loop can potentially exceed the platform
    firmware threshold or even trigger a kernel hard lockup, leading to a
    system reboot.
    
    Fix it by performing a force kill if no memory_failure() work is queued
    for synchronous errors.
    
    Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Yazen Ghannam <yazen.ghannam@amd.com>
    Reviewed-by: Jane Chu <jane.chu@oracle.com>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Link: https://patch.msgid.link/20250714114212.31660-2-xueshuai@linux.alibaba.com
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: PRM: Reduce unnecessary printing to avoid user confusion [+ + +]
Author: Zhu Qiyu <qiyuzhu2@amd.com>
Date:   Fri Jul 4 01:41:04 2025 +0000

    ACPI: PRM: Reduce unnecessary printing to avoid user confusion
    
    [ Upstream commit 3db5648c4d608b5483470efc1da9780b081242dd ]
    
    Commit 088984c8d54c ("ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM
    handler and context") introduced non-essential printing "Failed to find
    VA for GUID: xxxx, PA: 0x0" which may confuse users to think that
    something wrong is going on while it is not the case.
    
    According to the PRM Spec Section 4.1.2 [1], both static data buffer
    address and ACPI parameter buffer address may be NULL if they are not
    needed, so there is no need to print out the "Failed to find VA ... "
    in those cases.
    
    Link: https://uefi.org/sites/default/files/resources/Platform%20Runtime%20Mechanism%20-%20with%20legal%20notice.pdf # [1]
    Signed-off-by: Zhu Qiyu <qiyuzhu2@amd.com>
    Link: https://patch.msgid.link/20250704014104.82524-1-qiyuzhu2@amd.com
    [ rjw: Edits in new comments, subject and changelog ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: processor: fix acpi_object initialization [+ + +]
Author: Sebastian Ott <sebott@redhat.com>
Date:   Thu Jul 3 14:42:15 2025 +0200

    ACPI: processor: fix acpi_object initialization
    
    [ Upstream commit 13edf7539211d8f7d0068ce3ed143005f1da3547 ]
    
    Initialization of the local acpi_object in acpi_processor_get_info()
    only sets the first 4 bytes to zero and is thus incomplete. This is
    indicated by messages like:
            acpi ACPI0007:be: Invalid PBLK length [166288104]
    
    Fix this by initializing all 16 bytes of the processor member of that
    union.
    
    Signed-off-by: Sebastian Ott <sebott@redhat.com>
    Link: https://patch.msgid.link/20250703124215.12522-1-sebott@redhat.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI: processor: perflib: Fix initial _PPC limit application [+ + +]
Author: Jiayi Li <lijiayi@kylinos.cn>
Date:   Mon Jul 21 11:26:06 2025 +0800

    ACPI: processor: perflib: Fix initial _PPC limit application
    
    commit d33bd88ac0ebb49e7f7c8f29a8c7ee9eae85d765 upstream.
    
    If the BIOS sets a _PPC frequency limit upfront, it will fail to take
    effect due to a call ordering issue.  Namely, freq_qos_update_request()
    is called before freq_qos_add_request() for the given request causing
    the constraint update to be ignored.  The call sequence in question is
    as follows:
    
    cpufreq_policy_online()
      acpi_cpufreq_cpu_init()
        acpi_processor_register_performance()
          acpi_processor_get_performance_info()
            acpi_processor_get_platform_limit()
             freq_qos_update_request(&perflib_req) <- inactive QoS request
      blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
                                   CPUFREQ_CREATE_POLICY)
        acpi_processor_notifier()
          acpi_processor_ppc_init()
            freq_qos_add_request(&perflib_req) <- QoS request activation
    
    Address this by adding an acpi_processor_get_platform_limit() call
    to acpi_processor_ppc_init(), after the perflib_req activation via
    freq_qos_add_request(), which causes the initial _PPC limit to be
    picked up as appropriate.  However, also ensure that the _PPC limit
    will not be picked up in the cases when the cpufreq driver does not
    call acpi_processor_register_performance() by adding a pr->performance
    check to the related_cpus loop in acpi_processor_ppc_init().
    
    Fixes: d15ce412737a ("ACPI: cpufreq: Switch to QoS requests instead of cpufreq notifier")
    Signed-off-by: Jiayi Li <lijiayi@kylinos.cn>
    Link: https://patch.msgid.link/20250721032606.3459369-1-lijiayi@kylinos.cn
    [ rjw: Consolidate pr-related checks in acpi_processor_ppc_init() ]
    [ rjw: Subject and changelog adjustments ]
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+: 2d8b39a62a5d ACPI: processor: Avoid NULL pointer dereferences at init time
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+: 3000ce3c52f8 cpufreq: Use per-policy frequency QoS
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+: a1bb46c36ce3 ACPI: processor: Add QoS requests for all CPUs
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ACPI: processor: perflib: Move problematic pr->performance check [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Tue Aug 12 14:57:06 2025 +0200

    ACPI: processor: perflib: Move problematic pr->performance check
    
    commit d405ec23df13e6df599f5bd965a55d13420366b8 upstream.
    
    Commit d33bd88ac0eb ("ACPI: processor: perflib: Fix initial _PPC limit
    application") added a pr->performance check that prevents the frequency
    QoS request from being added when the given processor has no performance
    object.  Unfortunately, this causes a WARN() in freq_qos_remove_request()
    to trigger on an attempt to take the given CPU offline later because the
    frequency QoS object has not been added for it due to the missing
    performance object.
    
    Address this by moving the pr->performance check before calling
    acpi_processor_get_platform_limit() so it only prevents a limit from
    being set for the CPU if the performance object is not present.  This
    way, the frequency QoS request is added as it was before the above
    commit and it is present all the time along with the CPU's cpufreq
    policy regardless of whether or not the CPU is online.
    
    Fixes: d33bd88ac0eb ("ACPI: processor: perflib: Fix initial _PPC limit application")
    Tested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/2801421.mvXUDI8C0e@rafael.j.wysocki
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ACPI: Return -ENODEV from acpi_parse_spcr() when SPCR support is disabled [+ + +]
Author: Li Chen <chenl311@chinatelecom.cn>
Date:   Fri Jun 20 21:13:07 2025 +0800

    ACPI: Return -ENODEV from acpi_parse_spcr() when SPCR support is disabled
    
    commit b9f58d3572a8e1ef707b941eae58ec4014b9269d upstream.
    
    If CONFIG_ACPI_SPCR_TABLE is disabled, acpi_parse_spcr()
    currently returns 0, which may incorrectly suggest that
    SPCR parsing was successful. This patch changes the behavior
    to return -ENODEV to clearly indicate that SPCR support
    is not available.
    
    This prepares the codebase for future changes that depend
    on acpi_parse_spcr() failure detection, such as suppressing
    misleading console messages.
    
    Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
    Acked-by: Hanjun Guo <guohanjun@huawei.com>
    Link: https://lore.kernel.org/r/20250620131309.126555-2-me@linux.beauty
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ACPI: Suppress misleading SPCR console message when SPCR table is absent [+ + +]
Author: Li Chen <chenl311@chinatelecom.cn>
Date:   Fri Jun 20 21:13:08 2025 +0800

    ACPI: Suppress misleading SPCR console message when SPCR table is absent
    
    [ Upstream commit bad3fa2fb9206f4dcec6ddef094ec2fbf6e8dcb2 ]
    
    The kernel currently alway prints:
    "Use ACPI SPCR as default console: No/Yes "
    
    even on systems that lack an SPCR table. This can
    mislead users into thinking the SPCR table exists
    on the machines without SPCR.
    
    With this change, the "Yes" is only printed if
    the SPCR table is present, parsed and !param_acpi_nospcr.
    This avoids user confusion on SPCR-less systems.
    
    Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
    Acked-by: Hanjun Guo <guohanjun@huawei.com>
    Link: https://lore.kernel.org/r/20250620131309.126555-3-me@linux.beauty
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA: hda/ca0132: Fix buffer overflow in add_tuning_control [+ + +]
Author: Lucy Thrun <lucy.thrun@digital-rabbithole.de>
Date:   Tue Jun 10 19:50:12 2025 +0200

    ALSA: hda/ca0132: Fix buffer overflow in add_tuning_control
    
    [ Upstream commit a409c60111e6bb98fcabab2aeaa069daa9434ca0 ]
    
    The 'sprintf' call in 'add_tuning_control' may exceed the 44-byte
    buffer if either string argument is too long. This triggers a compiler
    warning.
    Replaced 'sprintf' with 'snprintf' to limit string lengths to prevent
    overflow.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202506100642.95jpuMY1-lkp@intel.com/
    Signed-off-by: Lucy Thrun <lucy.thrun@digital-rabbithole.de>
    Link: https://patch.msgid.link/20250610175012.918-3-lucy.thrun@digital-rabbithole.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: Add Framework Laptop 13 (AMD Ryzen AI 300) to quirks [+ + +]
Author: Christopher Eby <kreed@kreed.org>
Date:   Sat Aug 9 20:00:06 2025 -0700

    ALSA: hda/realtek: Add Framework Laptop 13 (AMD Ryzen AI 300) to quirks
    
    commit 0db77eccd964b11ab2b757031d1354fcc5a025ea upstream.
    
    Framework Laptop 13 (AMD Ryzen AI 300) requires the same quirk for
    headset detection as other Framework 13 models.
    
    Signed-off-by: Christopher Eby <kreed@kreed.org>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250810030006.9060-1-kreed@kreed.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: add LG gram 16Z90R-A to alc269 fixup table [+ + +]
Author: Thomas Croft <thomasmcft@gmail.com>
Date:   Mon Aug 4 09:12:07 2025 -0600

    ALSA: hda/realtek: add LG gram 16Z90R-A to alc269 fixup table
    
    [ Upstream commit dbe05428c4e54068a86e7e02405f3b30b1d2b3dd ]
    
    Several months ago, Joshua Grisham submitted a patch [1]
    for several ALC298 based sound cards.
    
    The entry for the LG gram 16 in the alc269_fixup_tbl only matches the
    Subsystem ID for the 16Z90R-Q and 16Z90R-K models [2]. My 16Z90R-A has a
    different Subsystem ID [3]. I'm not sure why these IDs differ, but I
    speculate it's due to the NVIDIA GPU included in the 16Z90R-A model that
    isn't present in the other models.
    
    I applied the patch to the latest Arch Linux kernel and the card was
    initialized as expected.
    
    [1]: https://lore.kernel.org/linux-sound/20240909193000.838815-1-josh@joshuagrisham.com/
    [2]: https://linux-hardware.org/?id=pci:8086-51ca-1854-0488
    [3]: https://linux-hardware.org/?id=pci:8086-51ca-1854-0489
    
    Signed-off-by: Thomas Croft <thomasmcft@gmail.com>
    Link: https://patch.msgid.link/20250804151457.134761-2-thomasmcft@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: Fix headset mic on HONOR BRB-X [+ + +]
Author: Vasiliy Kovalev <kovalev@altlinux.org>
Date:   Mon Aug 11 16:27:16 2025 +0300

    ALSA: hda/realtek: Fix headset mic on HONOR BRB-X
    
    commit b26e2afb3834d4a61ce54c8484ff6014bef0b4b7 upstream.
    
    Add a PCI quirk to enable microphone input on the headphone jack on
    the HONOR BRB-X M1010 laptop.
    
    Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250811132716.45076-1-kovalev@altlinux.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda: Disable jack polling at shutdown [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jun 23 15:14:30 2025 +0200

    ALSA: hda: Disable jack polling at shutdown
    
    [ Upstream commit 1adcbdf54f76e1004bdf71df4eb1888c26e7ad06 ]
    
    Although the jack polling is canceled at shutdown in
    snd_hda_codec_shutdown(), it might be still re-triggered when the work
    is being processed at cancel_delayed_work_sync() call.  This may
    result in the unexpected hardware access that should have been already
    disabled.
    
    For assuring to stop the jack polling, clear codec->jackpoll_interval
    at shutdown.
    
    Reported-by: Joakim Zhang <joakim.zhang@cixtech.com>
    Closes: https://lore.kernel.org/20250619020844.2974160-4-joakim.zhang@cixtech.com
    Tested-by: Joakim Zhang <joakim.zhang@cixtech.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20250623131437.10670-2-tiwai@suse.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda: Handle the jack polling always via a work [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jun 23 15:14:32 2025 +0200

    ALSA: hda: Handle the jack polling always via a work
    
    [ Upstream commit 5f7e54b23e4d253eff3b10b12d6fa92d28d7dddc ]
    
    We used to call directly hda_jackpoll_work() from a couple of places
    for updating the jack and notify to user-space, but this makes rather
    the code flow fragile.  Namely, because of those direct calls,
    hda_jackpoll_work() uses snd_hda_power_up_pm() and *_down_pm() calls
    instead of the standard snd_hda_power_up() and *_down() calls.  The
    latter pair assures the runtime PM resume sync, so it can avoid the
    race against the PM callbacks gracefully, while the former pair may
    continue if called concurrently, hence it may race (by design).
    
    In this patch, we change the call pattern of hda_jackpoll_work(); now
    all callers are replaced with the standard snd_hda_jack_report_sync()
    and the additional schedule_delayed_work().
    
    Since hda_jackpoll_work() is called only from the associated work,
    it's always outside the PM code path, and we can safely use
    snd_hda_power_up() and *_down() there instead.  This allows us to
    remove the racy check of power-state in hda_jackpoll_work(), as well
    as the tricky cancel_delayed_work() and rescheduling at
    hda_codec_runtime_suspend().
    
    Reported-by: Joakim Zhang <joakim.zhang@cixtech.com>
    Closes: https://lore.kernel.org/20250619020844.2974160-1-joakim.zhang@cixtech.com
    Tested-by: Joakim Zhang <joakim.zhang@cixtech.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20250623131437.10670-4-tiwai@suse.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: intel8x0: Fix incorrect codec index usage in mixer for ICH4 [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Sat Jun 21 11:52:24 2025 -0700

    ALSA: intel8x0: Fix incorrect codec index usage in mixer for ICH4
    
    [ Upstream commit 87aafc8580acf87fcaf1a7e30ed858d8c8d37d81 ]
    
    code mistakenly used a hardcoded index (codec[1]) instead of
    iterating, over the codec array using the loop variable i.
    Use codec[i] instead of codec[1] to match the loop iteration.
    
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Link: https://patch.msgid.link/20250621185233.4081094-1-alok.a.tiwari@oracle.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: pcm: Rewrite recalculate_boundary() to avoid costly loop [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Fri Jun 6 11:44:02 2025 +0200

    ALSA: pcm: Rewrite recalculate_boundary() to avoid costly loop
    
    [ Upstream commit 92f59aeb13252265c20e7aef1379a8080c57e0a2 ]
    
    At the time being recalculate_boundary() is implemented with a
    loop which shows up as costly in a perf profile, as depicted by
    the annotate below:
    
        0.00 :   c057e934:       3d 40 7f ff     lis     r10,32767
        0.03 :   c057e938:       61 4a ff ff     ori     r10,r10,65535
        0.21 :   c057e93c:       7d 49 50 50     subf    r10,r9,r10
        5.39 :   c057e940:       7d 3c 4b 78     mr      r28,r9
        2.11 :   c057e944:       55 29 08 3c     slwi    r9,r9,1
        3.04 :   c057e948:       7c 09 50 40     cmplw   r9,r10
        2.47 :   c057e94c:       40 81 ff f4     ble     c057e940 <snd_pcm_ioctl+0xee0>
    
    Total: 13.2% on that simple loop.
    
    But what the loop does is to multiply the boundary by 2 until it is
    over the wanted border. This can be avoided by using fls() to get the
    boundary value order and shift it by the appropriate number of bits at
    once.
    
    This change provides the following profile:
    
        0.04 :   c057f6e8:       3d 20 7f ff     lis     r9,32767
        0.02 :   c057f6ec:       61 29 ff ff     ori     r9,r9,65535
        0.34 :   c057f6f0:       7d 5a 48 50     subf    r10,r26,r9
        0.23 :   c057f6f4:       7c 1a 50 40     cmplw   r26,r10
        0.02 :   c057f6f8:       41 81 00 20     bgt     c057f718 <snd_pcm_ioctl+0xf08>
        0.26 :   c057f6fc:       7f 47 00 34     cntlzw  r7,r26
        0.09 :   c057f700:       7d 48 00 34     cntlzw  r8,r10
        0.22 :   c057f704:       7d 08 38 50     subf    r8,r8,r7
        0.04 :   c057f708:       7f 5a 40 30     slw     r26,r26,r8
        0.35 :   c057f70c:       7c 0a d0 40     cmplw   r10,r26
        0.13 :   c057f710:       40 80 05 f8     bge     c057fd08 <snd_pcm_ioctl+0x14f8>
        0.00 :   c057f714:       57 5a f8 7e     srwi    r26,r26,1
    
    Total: 1.7% with that loopless alternative.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Link: https://patch.msgid.link/4836e2cde653eebaf2709ebe30eec736bb8c67fd.1749202237.git.christophe.leroy@csgroup.eu
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: usb-audio: Avoid precedence issues in mixer_quirks macros [+ + +]
Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Date:   Mon May 26 17:07:42 2025 +0300

    ALSA: usb-audio: Avoid precedence issues in mixer_quirks macros
    
    [ Upstream commit fd3ab72e42e9871a9902b945a2bf8bb87b49c718 ]
    
    Fix all macro related issues identified by checkpatch.pl:
    
      CHECK: Macro argument 'x' may be better as '(x)' to avoid precedence issues
    
    Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/20250526-dualsense-alsa-jack-v1-3-1a821463b632@collabora.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: usb-audio: Validate UAC3 cluster segment descriptors [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Aug 14 10:12:43 2025 +0200

    ALSA: usb-audio: Validate UAC3 cluster segment descriptors
    
    commit ecfd41166b72b67d3bdeb88d224ff445f6163869 upstream.
    
    UAC3 class segment descriptors need to be verified whether their sizes
    match with the declared lengths and whether they fit with the
    allocated buffer sizes, too.  Otherwise malicious firmware may lead to
    the unexpected OOB accesses.
    
    Fixes: 11785ef53228 ("ALSA: usb-audio: Initial Power Domain support")
    Reported-and-tested-by: Youngjun Lee <yjjuny.lee@samsung.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250814081245.8902-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: Validate UAC3 power domain descriptors, too [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Aug 14 10:12:42 2025 +0200

    ALSA: usb-audio: Validate UAC3 power domain descriptors, too
    
    commit d832ccbc301fbd9e5a1d691bdcf461cdb514595f upstream.
    
    UAC3 power domain descriptors need to be verified with its variable
    bLength for avoiding the unexpected OOB accesses by malicious
    firmware, too.
    
    Fixes: 9a2fe9b801f5 ("ALSA: usb: initial USB Audio Device Class 3.0 support")
    Reported-and-tested-by: Youngjun Lee <yjjuny.lee@samsung.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250814081245.8902-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
apparmor: fix x_table_lookup when stacking is not the first entry [+ + +]
Author: John Johansen <john.johansen@canonical.com>
Date:   Tue Jan 2 21:54:30 2024 -0800

    apparmor: fix x_table_lookup when stacking is not the first entry
    
    [ Upstream commit a9eb185be84e998aa9a99c7760534ccc06216705 ]
    
    x_table_lookup currently does stacking during label_parse() if the
    target specifies a stack but its only caller ensures that it will
    never be used with stacking.
    
    Refactor to slightly simplify the code in x_to_label(), this
    also fixes a long standing problem where x_to_labels check on stacking
    is only on the first element to the table option list, instead of
    the element that is found and used.
    
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

apparmor: shift ouid when mediating hard links in userns [+ + +]
Author: Gabriel Totev <gabriel.totev@zetier.com>
Date:   Wed Apr 16 18:42:08 2025 -0400

    apparmor: shift ouid when mediating hard links in userns
    
    [ Upstream commit c5bf96d20fd787e4909b755de4705d52f3458836 ]
    
    When using AppArmor profiles inside an unprivileged container,
    the link operation observes an unshifted ouid.
    (tested with LXD and Incus)
    
    For example, root inside container and uid 1000000 outside, with
    `owner /root/link l,` profile entry for ln:
    
    /root$ touch chain && ln chain link
    ==> dmesg
    apparmor="DENIED" operation="link" class="file"
    namespace="root//lxd-feet_<var-snap-lxd-common-lxd>" profile="linkit"
    name="/root/link" pid=1655 comm="ln" requested_mask="l" denied_mask="l"
    fsuid=1000000 ouid=0 [<== should be 1000000] target="/root/chain"
    
    Fix by mapping inode uid of old_dentry in aa_path_link() rather than
    using it directly, similarly to how it's mapped in __file_path_perm()
    later in the file.
    
    Signed-off-by: Gabriel Totev <gabriel.totev@zetier.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

apparmor: use the condition in AA_BUG_FMT even with debug disabled [+ + +]
Author: Mateusz Guzik <mjguzik@gmail.com>
Date:   Mon Jan 27 21:54:04 2025 +0100

    apparmor: use the condition in AA_BUG_FMT even with debug disabled
    
    [ Upstream commit 67e370aa7f968f6a4f3573ed61a77b36d1b26475 ]
    
    This follows the established practice and fixes a build failure for me:
    security/apparmor/file.c: In function ‘__file_sock_perm’:
    security/apparmor/file.c:544:24: error: unused variable ‘sock’ [-Werror=unused-variable]
      544 |         struct socket *sock = (struct socket *) file->private_data;
          |                        ^~~~
    
    Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: dts: ti: k3-j722s-evm: Fix USB gpio-hog level for Type-C [+ + +]
Author: Siddharth Vadapalli <s-vadapalli@ti.com>
Date:   Fri Aug 15 13:23:52 2025 -0400

    arm64: dts: ti: k3-j722s-evm: Fix USB gpio-hog level for Type-C
    
    [ Upstream commit 65ba2a6e77e9e5c843a591055789050e77b5c65e ]
    
    According to the "GPIO Expander Map / Table" section of the J722S EVM
    Schematic within the Evaluation Module Design Files package [0], the
    GPIO Pin P05 located on the GPIO Expander 1 (I2C0/0x23) has to be pulled
    down to select the Type-C interface. Since commit under Fixes claims to
    enable the Type-C interface, update the property within "p05-hog" from
    "output-high" to "output-low", thereby switching from the Type-A
    interface to the Type-C interface.
    
    [0]: https://www.ti.com/lit/zip/sprr495
    
    Cc: stable@vger.kernel.org
    Fixes: 485705df5d5f ("arm64: dts: ti: k3-j722s: Enable PCIe and USB support on J722S-EVM")
    Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
    Link: https://lore.kernel.org/r/20250623100657.4082031-1-s-vadapalli@ti.com
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: dts: ti: k3-j722s-evm: Fix USB2.0_MUX_SEL to select Type-C [+ + +]
Author: Hrushikesh Salunke <h-salunke@ti.com>
Date:   Fri Aug 15 13:23:51 2025 -0400

    arm64: dts: ti: k3-j722s-evm: Fix USB2.0_MUX_SEL to select Type-C
    
    [ Upstream commit bc8d9e6b5821c40ab5dd3a81e096cb114939de50 ]
    
    J722S SOC has two usb controllers USB0 and USB1. USB0 is brought out on
    the EVM as a stacked USB connector which has one Type-A and one Type-C
    port. These Type-A and Type-C ports are connected to MUX so only
    one of them can be enabled at a time.
    
    Commit under Fixes, tries to enable the USB0 instance of USB to
    interface with the Type-C port via the USB hub, by configuring the
    USB2.0_MUX_SEL to GPIO_ACTIVE_HIGH. But it is observed on J722S-EVM
    that Type-A port is enabled instead of Type-C port.
    
    Fix this by setting USB2.0_MUX_SEL to GPIO_ACTIVE_LOW to enable Type-C
    port.
    
    Fixes: 485705df5d5f ("arm64: dts: ti: k3-j722s: Enable PCIe and USB support on J722S-EVM")
    Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com>
    Reviewed-by: Roger Quadros <rogerq@kernel.org>
    Link: https://lore.kernel.org/r/20250116125726.2549489-1-h-salunke@ti.com
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Stable-dep-of: 65ba2a6e77e9 ("arm64: dts: ti: k3-j722s-evm: Fix USB gpio-hog level for Type-C")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: Handle KCOV __init vs inline mismatches [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Wed Jul 23 22:50:25 2025 -0700

    arm64: Handle KCOV __init vs inline mismatches
    
    [ Upstream commit 65c430906efffee9bd7551d474f01a6b1197df90 ]
    
    GCC appears to have kind of fragile inlining heuristics, in the
    sense that it can change whether or not it inlines something based on
    optimizations. It looks like the kcov instrumentation being added (or in
    this case, removed) from a function changes the optimization results,
    and some functions marked "inline" are _not_ inlined. In that case,
    we end up with __init code calling a function not marked __init, and we
    get the build warnings I'm trying to eliminate in the coming patch that
    adds __no_sanitize_coverage to __init functions:
    
    WARNING: modpost: vmlinux: section mismatch in reference: acpi_get_enable_method+0x1c (section: .text.unlikely) -> acpi_psci_present (section: .init.text)
    
    This problem is somewhat fragile (though using either __always_inline
    or __init will deterministically solve it), but we've tripped over
    this before with GCC and the solution has usually been to just use
    __always_inline and move on.
    
    For arm64 this requires forcing one ACPI function to be inlined with
    __always_inline.
    
    Link: https://lore.kernel.org/r/20250724055029.3623499-1-kees@kernel.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: Mark kernel as tainted on SAE and SError panic [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Wed Jul 16 02:42:01 2025 -0700

    arm64: Mark kernel as tainted on SAE and SError panic
    
    [ Upstream commit d7ce7e3a84642aadf7c4787f7ec4f58eb163d129 ]
    
    Set TAINT_MACHINE_CHECK when SError or Synchronous External Abort (SEA)
    interrupts trigger a panic to flag potential hardware faults. This
    tainting mechanism aids in debugging and enables correlation of
    hardware-related crashes in large-scale deployments.
    
    This change aligns with similar patches[1] that mark machine check
    events when the system crashes due to hardware errors.
    
    Link: https://lore.kernel.org/all/20250702-add_tain-v1-1-9187b10914b9@debian.org/ [1]
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Link: https://lore.kernel.org/r/20250716-vmcore_hw_error-v2-1-f187f7d62aba@debian.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: stacktrace: Check kretprobe_find_ret_addr() return value [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed May 21 12:09:59 2025 +0100

    arm64: stacktrace: Check kretprobe_find_ret_addr() return value
    
    [ Upstream commit beecfd6a88a675e20987e70ec532ba734b230fa4 ]
    
    If kretprobe_find_ret_addr() fails to find the original return address,
    it returns 0. Check for this case so that a reliable stacktrace won't
    silently ignore it.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Andrea della Porta <andrea.porta@suse.com>
    Cc: Breno Leitao <leitao@debian.org>
    Cc: Josh Poimboeuf <jpoimboe@kernel.org>
    Cc: Miroslav Benes <mbenes@suse.cz>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Song Liu <song@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-and-tested-by: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20250521111000.2237470-2-mark.rutland@arm.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: rockchip: fix kernel hang during smp initialization [+ + +]
Author: Alexander Kochetkov <al.kochet@gmail.com>
Date:   Thu Jul 3 17:04:53 2025 +0300

    ARM: rockchip: fix kernel hang during smp initialization
    
    [ Upstream commit 7cdb433bb44cdc87dc5260cdf15bf03cc1cd1814 ]
    
    In order to bring up secondary CPUs main CPU write trampoline
    code to SRAM. The trampoline code is written while secondary
    CPUs are powered on (at least that true for RK3188 CPU).
    Sometimes that leads to kernel hang. Probably because secondary
    CPU execute trampoline code while kernel doesn't expect.
    
    The patch moves SRAM initialization step to the point where all
    secondary CPUs are powered down.
    
    That fixes rarely hangs on RK3188:
    [    0.091568] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.091996] rockchip_smp_prepare_cpus: ncores 4
    
    Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
    Link: https://lore.kernel.org/r/20250703140453.1273027-1-al.kochet@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: tegra: Use I/O memcpy to write to IRAM [+ + +]
Author: Aaron Kling <webgeek1234@gmail.com>
Date:   Thu May 22 11:11:24 2025 -0500

    ARM: tegra: Use I/O memcpy to write to IRAM
    
    [ Upstream commit 398e67e0f5ae04b29bcc9cbf342e339fe9d3f6f1 ]
    
    Kasan crashes the kernel trying to check boundaries when using the
    normal memcpy.
    
    Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
    Link: https://lore.kernel.org/r/20250522-mach-tegra-kasan-v1-1-419041b8addb@gmail.com
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: codecs: rt5640: Retry DEVICE_ID verification [+ + +]
Author: Xinxin Wan <xinxin.wan@intel.com>
Date:   Fri May 30 16:21:19 2025 +0200

    ASoC: codecs: rt5640: Retry DEVICE_ID verification
    
    [ Upstream commit 19f971057b2d7b99c80530ec1052b45de236a8da ]
    
    To be more resilient to codec-detection failures when the hardware
    powers on slowly, add retry mechanism to the device verification check.
    Similar pattern is found throughout a number of Realtek codecs. Our
    tests show that 60ms delay is sufficient to address readiness issues on
    rt5640 chip.
    
    Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Signed-off-by: Xinxin Wan <xinxin.wan@intel.com>
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://patch.msgid.link/20250530142120.2944095-3-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: core: Check for rtd == NULL in snd_soc_remove_pcm_runtime() [+ + +]
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Thu Jun 19 11:42:20 2025 +0300

    ASoC: core: Check for rtd == NULL in snd_soc_remove_pcm_runtime()
    
    [ Upstream commit 2d91cb261cac6d885954b8f5da28b5c176c18131 ]
    
    snd_soc_remove_pcm_runtime() might be called with rtd == NULL which will
    leads to null pointer dereference.
    This was reproduced with topology loading and marking a link as ignore
    due to missing hardware component on the system.
    On module removal the soc_tplg_remove_link() would call
    snd_soc_remove_pcm_runtime() with rtd == NULL since the link was ignored,
    no runtime was created.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
    Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://patch.msgid.link/20250619084222.559-3-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: fsl_sai: replace regmap_write with regmap_update_bits [+ + +]
Author: Shengjiu Wang <shengjiu.wang@nxp.com>
Date:   Thu Aug 7 10:03:18 2025 +0800

    ASoC: fsl_sai: replace regmap_write with regmap_update_bits
    
    [ Upstream commit 0e270f32975fd21874185ba53653630dd40bf560 ]
    
    Use the regmap_write() for software reset in fsl_sai_config_disable would
    cause the FSL_SAI_CSR_BCE bit to be cleared. Refer to
    commit 197c53c8ecb34 ("ASoC: fsl_sai: Don't disable bitclock for i.MX8MP")
    FSL_SAI_CSR_BCE should not be cleared. So need to use regmap_update_bits()
    instead of regmap_write() for these bit operations.
    
    Fixes: dc78f7e59169d ("ASoC: fsl_sai: Force a software reset when starting in consumer mode")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
    Link: https://patch.msgid.link/20250807020318.2143219-1-shengjiu.wang@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: hdac_hdmi: Rate limit logging on connection and disconnection [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Jun 13 17:41:04 2025 +0100

    ASoC: hdac_hdmi: Rate limit logging on connection and disconnection
    
    [ Upstream commit c4ca928a6db1593802cd945f075a7e21dd0430c1 ]
    
    We currently log parse failures for ELD data and some disconnection events
    as errors without rate limiting. These log messages can be triggered very
    frequently in some situations, especially ELD parsing when there is nothing
    connected to a HDMI port which will generate:
    
    hdmi-audio-codec hdmi-audio-codec.1.auto: HDMI: Unknown ELD version 0
    
    While there's doubtless work that could be done on reducing the number of
    connection notification callbacks it's possible these may be legitimately
    generated by poor quality physical connections so let's use rate limiting
    to mitigate the log spam for the parse errors and lower the severity for
    disconnect logging to debug level.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://patch.msgid.link/20250613-asoc-hdmi-eld-logging-v1-1-76d64154d969@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: Intel: avs: Fix uninitialized pointer error in probe() [+ + +]
Author: Cezary Rojewski <cezary.rojewski@intel.com>
Date:   Wed Jul 30 14:49:06 2025 +0200

    ASoC: Intel: avs: Fix uninitialized pointer error in probe()
    
    [ Upstream commit 11f74f48c14c1f4fe16541900ea5944c42e30ccf ]
    
    If pcim_request_all_regions() fails, error path operates on
    uninitialized 'bus' pointer. Found out by Coverity static analyzer.
    
    Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://patch.msgid.link/20250730124906.351798-1-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: qcom: use drvdata instead of component to keep id [+ + +]
Author: Srinivas Kandagatla <srini@kernel.org>
Date:   Wed Jun 4 02:06:48 2025 +0000

    ASoC: qcom: use drvdata instead of component to keep id
    
    [ Upstream commit 8167f4f42572818fa8153be2b03e4c2120846603 ]
    
    Qcom lpass is using component->id to keep DAI ID (A).
    
    (S)     static int lpass_platform_pcmops_open(
                                    sruct snd_soc_component *component,
                                    struct snd_pcm_substream *substream)
            {                                                 ^^^^^^^^^(B0)
                    ...
    (B1)            struct snd_soc_pcm_runtime *soc_runtime = snd_soc_substream_to_rtd(substream);
    (B2)            struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(soc_runtime, 0);
                    ...
    (B3)            unsigned int dai_id = cpu_dai->driver->id;
    
    (A)             component->id = dai_id;
                    ...
            }
    
    This driver can get dai_id from substream (B0 - B3).
    In this driver, below functions get dai_id from component->id (A).
    
    (X)     lpass_platform_pcmops_suspend()
    (Y)     lpass_platform_pcmops_resume()
    (Z)     lpass_platform_copy()
    
    Here, (Z) can get it from substream (B0 - B3), don't need to use
    component->id (A). On suspend/resume (X)(Y), dai_id can only be obtained
    from component->id (A), because there is no substream (B0) in function
    parameter.
    
    But, component->id (A) itself should not be used for such purpose.
    It is intilialized at snd_soc_component_initialize(), and parsed its ID
    (= component->id) from device name (a).
    
            int snd_soc_component_initialize(...)
            {
                    ...
                    if (!component->name) {
    (a)                     component->name = fmt_single_name(dev, &component->id);
                            ...                                     ^^^^^^^^^^^^^
                    }
                    ...
            }
    
    Unfortunately, current code is broken to start with.
    
    There are many regmaps that the driver cares about, however its only
    managing one (either dp or i2s) in component suspend/resume path.
    
    I2S regmap is mandatory however other regmaps are setup based on flags
    like "hdmi_port_enable" and "codec_dma_enable".
    
    Correct thing for suspend/resume path to handle is by checking these
    flags, instead of using component->id.
    
    Signed-off-by: Srinivas Kandagatla <srini@kernel.org>
    Suggested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Link: https://patch.msgid.link/87a56ouuob.wl-kuninori.morimoto.gx@renesas.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: soc-dapm: set bias_level if snd_soc_dapm_set_bias_level() was successed [+ + +]
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Fri Jul 11 02:26:39 2025 +0000

    ASoC: soc-dapm: set bias_level if snd_soc_dapm_set_bias_level() was successed
    
    [ Upstream commit f40ecc2743652c0b0f19935f81baf57c601eb7f0 ]
    
    ASoC has 2 functions to set bias level.
            (A) snd_soc_dapm_force_bias_level()
            (B) snd_soc_dapm_set_bias_level()
    
    snd_soc_dapm_force_bias_level() (A) will set dapm->bias_level (a) if
    successed.
    
    (A)     int snd_soc_dapm_force_bias_level(...)
            {
                    ...
                    if (ret == 0)
    (a)                     dapm->bias_level = level;
                    ...
            }
    
    snd_soc_dapm_set_bias_level() (B) is also a function that sets bias_level.
    It will call snd_soc_dapm_force_bias_level() (A) inside, but doesn't
    set dapm->bias_level by itself. One note is that (A) might not be called.
    
    (B)     static int snd_soc_dapm_set_bias_level(...)
            {
                    ...
                    ret = snd_soc_card_set_bias_level(...);
                    ...
                    if (dapm != &card->dapm)
    (A)                     ret = snd_soc_dapm_force_bias_level(...);
                    ...
                    ret = snd_soc_card_set_bias_level_post(...);
                    ...
            }
    
    dapm->bias_level will be set if (A) was called, but might not be set
    if (B) was called, even though it calles set_bias_level() function.
    
    We should set dapm->bias_level if we calls
    snd_soc_dapm_set_bias_level() (B), too.
    
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Link: https://patch.msgid.link/87qzyn4g4h.wl-kuninori.morimoto.gx@renesas.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: SOF: topology: Parse the dapm_widget_tokens in case of DSPless mode [+ + +]
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Thu Jun 19 13:26:40 2025 +0300

    ASoC: SOF: topology: Parse the dapm_widget_tokens in case of DSPless mode
    
    [ Upstream commit 6b3cb7f4341cbf62d41ccf6ea906dbe66be8aa3d ]
    
    Parsing the dapm_widget_tokens is also needed for DSPless mode as it is
    setting the snd_soc_dapm_widget.no_wname_in_kcontrol_name flag for the
    kcontrol creation from DAPM widgets.
    Without that flag set, the following warnings might appear because of long
    control names:
    ALSA: Control name 'eqiir.2.1 Post Mixer Analog Playback IIR Eq bytes' truncated to 'eqiir.2.1 Post Mixer Analog Playback IIR Eq'
    ALSA: Control name 'eqfir.2.1 Post Mixer Analog Playback FIR Eq bytes' truncated to 'eqfir.2.1 Post Mixer Analog Playback FIR Eq'
    ALSA: Control name 'drc.2.1 Post Mixer Analog Playback DRC bytes' truncated to 'drc.2.1 Post Mixer Analog Playback DRC byte'
    ALSA: Control name 'drc.2.1 Post Mixer Analog Playback DRC switch' truncated to 'drc.2.1 Post Mixer Analog Playback DRC swit'
    ALSA: Control name 'gain.15.1 Pre Mixer Deepbuffer HDA Analog Volume' truncated to 'gain.15.1 Pre Mixer Deepbuffer HDA Analog V'
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Link: https://patch.msgid.link/20250619102640.12068-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ata: ahci: Disable DIPM if host lacks support [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Tue Jul 1 21:53:17 2025 +0900

    ata: ahci: Disable DIPM if host lacks support
    
    [ Upstream commit f7870e8d345cdabfb94bcbdcba6a07e050f8705e ]
    
    The AHCI specification version 1.3.1 section 8.3.1.4 (Software
    Requirements and Precedence) states that:
    
    If CAP.SSC or CAP.PSC is cleared to ‘0’, software should disable
    device-initiated power management by issuing the appropriate SET
    FEATURES command to the device.
    
    To satisfy this constraint and force ata_dev_configure to disable the
    device DIPM feature, modify ahci_update_initial_lpm_policy() to set the
    ATA_FLAG_NO_DIPM flag on ports that have a host with either the
    ATA_HOST_NO_PART flag set or the ATA_HOST_NO_SSC flag set.
    
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de.>
    Link: https://lore.kernel.org/r/20250701125321.69496-7-dlemoal@kernel.org
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ata: ahci: Disallow LPM policy control if not supported [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Tue Jul 1 21:53:19 2025 +0900

    ata: ahci: Disallow LPM policy control if not supported
    
    [ Upstream commit 65b2c92f69d3df81422d27e5be012e357e733241 ]
    
    Commit fa997b0576c9 ("ata: ahci: Do not enable LPM if no LPM states are
    supported by the HBA") introduced an early return in
    ahci_update_initial_lpm_policy() to ensure that the target_lpm_policy
    of ports belonging to a host that does not support the Partial, Slumber
    and DevSleep power states is unchanged and remains set to
    ATA_LPM_UNKNOWN and thus prevents the execution of
    ata_eh_link_set_lpm().
    
    However, a user or a system daemon (e.g. systemd-udevd) may still
    attempt changing the LPM policy through the sysfs
    link_power_management_policy of the host.
    
    Improve this to prevent sysfs LPM policy changes by setting the flag
    ATA_FLAG_NO_LPM for the port of such host, and initialize the port
    target_lpm_policy to ATA_LPM_MAX_POWER to guarantee that no unsupported
    low power state is being used on the port and its link.
    
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Link: https://lore.kernel.org/r/20250701125321.69496-9-dlemoal@kernel.org
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ata: libata-sata: Add link_power_management_supported sysfs attribute [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Mon Jul 28 13:04:29 2025 +0900

    ata: libata-sata: Add link_power_management_supported sysfs attribute
    
    commit 0060beec0bfa647c4b510df188b1c4673a197839 upstream.
    
    A port link power management (LPM) policy can be controlled using the
    link_power_management_policy sysfs host attribute. However, this
    attribute exists also for hosts that do not support LPM and in such
    case, attempting to change the LPM policy for the host (port) will fail
    with -EOPNOTSUPP.
    
    Introduce the new sysfs link_power_management_supported host attribute
    to indicate to the user if a the port and the devices connected to the
    port for the host support LPM, which implies that the
    link_power_management_policy attribute can be used.
    
    Since checking that a port and its devices support LPM is common between
    the new ata_scsi_lpm_supported_show() function and the existing
    ata_scsi_lpm_store() function, the new helper ata_scsi_lpm_supported()
    is introduced.
    
    Fixes: 413e800cadbf ("ata: libata-sata: Disallow changing LPM state if not supported")
    Reported-by: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202507251014.a5becc3b-lkp@intel.com
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ata: libata-sata: Disallow changing LPM state if not supported [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Tue Jul 1 21:53:16 2025 +0900

    ata: libata-sata: Disallow changing LPM state if not supported
    
    [ Upstream commit 413e800cadbf67550d76c77c230b2ecd96bce83a ]
    
    Modify ata_scsi_lpm_store() to return an error if a user attempts to set
    a link power management policy for a port that does not support LPM,
    that is, ports flagged with ATA_FLAG_NO_LPM.
    
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Link: https://lore.kernel.org/r/20250701125321.69496-6-dlemoal@kernel.org
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
be2net: Use correct byte order and format string for TCP seq and ack_seq [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Thu Jul 17 12:35:47 2025 -0700

    be2net: Use correct byte order and format string for TCP seq and ack_seq
    
    [ Upstream commit 4701ee5044fb3992f1c910630a9673c2dc600ce5 ]
    
    The TCP header fields seq and ack_seq are 32-bit values in network
    byte order as (__be32). these fields were earlier printed using
    ntohs(), which converts only 16-bit values and produces incorrect
    results for 32-bit fields. This patch is changeing the conversion
    to ntohl(), ensuring correct interpretation of these sequence numbers.
    
    Notably, the format specifier is updated from %d to %u to reflect the
    unsigned nature of these fields.
    
    improves the accuracy of debug log messages for TCP sequence and
    acknowledgment numbers during TX timeouts.
    
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250717193552.3648791-1-alok.a.tiwari@oracle.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: better lockdep annotations for simple_recursive_removal() [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Jul 2 22:30:32 2025 -0400

    better lockdep annotations for simple_recursive_removal()
    
    [ Upstream commit 2a8061ee5e41034eb14170ec4517b5583dbeff9f ]
    
    We want a class that nests outside of I_MUTEX_NORMAL (for the sake of
    callbacks that might want to lock the victim) and inside I_MUTEX_PARENT
    (so that a variant of that could be used with parent of the victim
    held locked by the caller).
    
    In reality, simple_recursive_removal()
            * never holds two locks at once
            * holds the lock on parent of dentry passed to callback
            * is used only on the trees with fixed topology, so the depths
    are not changing.
    
    So the locking order is actually fine.
    
    AFAICS, the best solution is to assign I_MUTEX_CHILD to the locks
    grabbed by that thing.
    
    Reported-by: syzbot+169de184e9defe7fe709@syzkaller.appspotmail.com
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
block: avoid possible overflow for chunk_sectors check in blk_stack_limits() [+ + +]
Author: John Garry <john.g.garry@oracle.com>
Date:   Tue Jul 29 09:14:47 2025 +0000

    block: avoid possible overflow for chunk_sectors check in blk_stack_limits()
    
    [ Upstream commit 448dfecc7ff807822ecd47a5c052acedca7d09e8 ]
    
    In blk_stack_limits(), we check that the t->chunk_sectors value is a
    multiple of the t->physical_block_size value.
    
    However, by finding the chunk_sectors value in bytes, we may overflow
    the unsigned int which holds chunk_sectors, so change the check to be
    based on sectors.
    
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: John Garry <john.g.garry@oracle.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Link: https://lore.kernel.org/r/20250729091448.1691334-2-john.g.garry@oracle.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

block: Introduce bio_needs_zone_write_plugging() [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Wed Jun 25 18:33:24 2025 +0900

    block: Introduce bio_needs_zone_write_plugging()
    
    commit f70291411ba20d50008db90a6f0731efac27872c upstream.
    
    In preparation for fixing device mapper zone write handling, introduce
    the inline helper function bio_needs_zone_write_plugging() to test if a
    BIO requires handling through zone write plugging using the function
    blk_zone_plug_bio(). This function returns true for any write
    (op_is_write(bio) == true) operation directed at a zoned block device
    using zone write plugging, that is, a block device with a disk that has
    a zone write plug hash table.
    
    This helper allows simplifying the check on entry to blk_zone_plug_bio()
    and used in to protect calls to it for blk-mq devices and DM devices.
    
    Fixes: f211268ed1f9 ("dm: Use the block layer zone append emulation")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250625093327.548866-3-dlemoal@kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

block: Make REQ_OP_ZONE_FINISH a write operation [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Wed Jun 25 18:33:23 2025 +0900

    block: Make REQ_OP_ZONE_FINISH a write operation
    
    commit 3f66ccbaaef3a0c5bd844eab04e3207b4061c546 upstream.
    
    REQ_OP_ZONE_FINISH is defined as "12", which makes
    op_is_write(REQ_OP_ZONE_FINISH) return false, despite the fact that a
    zone finish operation is an operation that modifies a zone (transition
    it to full) and so should be considered as a write operation (albeit
    one that does not transfer any data to the device).
    
    Fix this by redefining REQ_OP_ZONE_FINISH to be an odd number (13), and
    redefine REQ_OP_ZONE_RESET and REQ_OP_ZONE_RESET_ALL using sequential
    odd numbers from that new value.
    
    Fixes: 6c1b1da58f8c ("block: add zone open, close and finish operations")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250625093327.548866-2-dlemoal@kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Bluetooth: btusb: Add new VID/PID 0489/e14e for MT7925 [+ + +]
Author: En-Wei Wu <en-wei.wu@canonical.com>
Date:   Wed Jul 9 14:36:06 2025 +0800

    Bluetooth: btusb: Add new VID/PID 0489/e14e for MT7925
    
    [ Upstream commit 942873c8137fe0015ab37f62f159d88079859c5e ]
    
    Add VID 0489 & PID e14e for MediaTek MT7925 USB Bluetooth chip.
    
    The information in /sys/kernel/debug/usb/devices about the Bluetooth
    device is listed as the below.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=03 Dev#=  4 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0489 ProdID=e14e Rev= 1.00
    S:  Manufacturer=MediaTek Inc.
    S:  Product=Wireless_Device
    S:  SerialNumber=000000000
    C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
    I:* If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
    
    Signed-off-by: En-Wei Wu <en-wei.wu@canonical.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_sock: Reset cookie to zero in hci_sock_free_cookie() [+ + +]
Author: Zijun Hu <zijun.hu@oss.qualcomm.com>
Date:   Mon Jun 23 20:31:16 2025 +0800

    Bluetooth: hci_sock: Reset cookie to zero in hci_sock_free_cookie()
    
    [ Upstream commit 4d7936e8a5b1fa803f4a631d2da4a80fa4f0f37f ]
    
    Reset cookie value to 0 instead of 0xffffffff in hci_sock_free_cookie()
    since:
    0         :  means cookie has not been assigned yet
    0xffffffff:  means cookie assignment failure
    
    Also fix generating cookie failure with usage shown below:
    hci_sock_gen_cookie(sk)   // generate cookie
    hci_sock_free_cookie(sk)  // free cookie
    hci_sock_gen_cookie(sk)   // Can't generate cookie any more
    
    Signed-off-by: Zijun Hu <zijun.hu@oss.qualcomm.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Forget ranges when refining tnum after JSET [+ + +]
Author: Paul Chaignon <paul.chaignon@gmail.com>
Date:   Thu Jul 10 20:20:53 2025 +0200

    bpf: Forget ranges when refining tnum after JSET
    
    [ Upstream commit 6279846b9b2532e1b04559ef8bd0dec049f29383 ]
    
    Syzbot reported a kernel warning due to a range invariant violation on
    the following BPF program.
    
      0: call bpf_get_netns_cookie
      1: if r0 == 0 goto <exit>
      2: if r0 & Oxffffffff goto <exit>
    
    The issue is on the path where we fall through both jumps.
    
    That path is unreachable at runtime: after insn 1, we know r0 != 0, but
    with the sign extension on the jset, we would only fallthrough insn 2
    if r0 == 0. Unfortunately, is_branch_taken() isn't currently able to
    figure this out, so the verifier walks all branches. The verifier then
    refines the register bounds using the second condition and we end
    up with inconsistent bounds on this unreachable path:
    
      1: if r0 == 0 goto <exit>
        r0: u64=[0x1, 0xffffffffffffffff] var_off=(0, 0xffffffffffffffff)
      2: if r0 & 0xffffffff goto <exit>
        r0 before reg_bounds_sync: u64=[0x1, 0xffffffffffffffff] var_off=(0, 0)
        r0 after reg_bounds_sync:  u64=[0x1, 0] var_off=(0, 0)
    
    Improving the range refinement for JSET to cover all cases is tricky. We
    also don't expect many users to rely on JSET given LLVM doesn't generate
    those instructions. So instead of improving the range refinement for
    JSETs, Eduard suggested we forget the ranges whenever we're narrowing
    tnums after a JSET. This patch implements that approach.
    
    Reported-by: syzbot+c711ce17dd78e5d4fdcf@syzkaller.appspotmail.com
    Suggested-by: Eduard Zingerman <eddyz87@gmail.com>
    Acked-by: Yonghong Song <yonghong.song@linux.dev>
    Acked-by: Eduard Zingerman <eddyz87@gmail.com>
    Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
    Link: https://lore.kernel.org/r/9d4fd6432a095d281f815770608fdcd16028ce0b.1752171365.git.paul.chaignon@gmail.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Make reg_not_null() true for CONST_PTR_TO_MAP [+ + +]
Author: Ihor Solodrai <isolodrai@meta.com>
Date:   Mon Jun 9 11:30:22 2025 -0700

    bpf: Make reg_not_null() true for CONST_PTR_TO_MAP
    
    [ Upstream commit 5534e58f2e9bd72b253d033ee0af6e68eb8ac96b ]
    
    When reg->type is CONST_PTR_TO_MAP, it can not be null. However the
    verifier explores the branches under rX == 0 in check_cond_jmp_op()
    even if reg->type is CONST_PTR_TO_MAP, because it was not checked for
    in reg_not_null().
    
    Fix this by adding CONST_PTR_TO_MAP to the set of types that are
    considered non nullable in reg_not_null().
    
    An old "unpriv: cmp map pointer with zero" selftest fails with this
    change, because now early out correctly triggers in
    check_cond_jmp_op(), making the verification to pass.
    
    In practice verifier may allow pointer to null comparison in unpriv,
    since in many cases the relevant branch and comparison op are removed
    as dead code. So change the expected test result to __success_unpriv.
    
    Signed-off-by: Ihor Solodrai <isolodrai@meta.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250609183024.359974-2-isolodrai@meta.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpftool: Fix JSON writer resource leak in version command [+ + +]
Author: Yuan Chen <chenyuan@kylinos.cn>
Date:   Tue Jun 17 09:24:42 2025 -0400

    bpftool: Fix JSON writer resource leak in version command
    
    [ Upstream commit 85cd83fed8267cde0dd1cea719808aad95ae4de7 ]
    
    When using `bpftool --version -j/-p`, the JSON writer object
    created in do_version() was not properly destroyed after use.
    This caused a memory leak each time the version command was
    executed with JSON output.
    
    Fix: 004b45c0e51a (tools: bpftool: provide JSON output for all possible commands)
    
    Suggested-by: Quentin Monnet <qmo@kernel.org>
    Signed-off-by: Yuan Chen <chenyuan@kylinos.cn>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Reviewed-by: Quentin Monnet <qmo@kernel.org>
    Link: https://lore.kernel.org/bpf/20250617132442.9998-1-chenyuan_fl@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: abort transaction during log replay if walk_log_tree() failed [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed May 21 17:41:18 2025 +0100

    btrfs: abort transaction during log replay if walk_log_tree() failed
    
    commit 2a5898c4aac67494c2f0f7fe38373c95c371c930 upstream.
    
    If we failed walking a log tree during replay, we have a missing
    transaction abort to prevent committing a transaction where we didn't
    fully replay all the changes from a log tree and therefore can leave the
    respective subvolume tree in some inconsistent state. So add the missing
    transaction abort.
    
    CC: stable@vger.kernel.org # 6.1+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: clear dirty status from extent buffer on error at insert_new_root() [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Jun 30 10:50:46 2025 +0100

    btrfs: clear dirty status from extent buffer on error at insert_new_root()
    
    commit c0d013495a80cbb53e2288af7ae0ec4170aafd7c upstream.
    
    If we failed to insert the tree mod log operation, we are not removing the
    dirty status from the allocated and dirtied extent buffer before we free
    it. Removing the dirty status is needed for several reasons such as to
    adjust the fs_info->dirty_metadata_bytes counter and remove the dirty
    status from the respective folios. So add the missing call to
    btrfs_clear_buffer_dirty().
    
    Fixes: f61aa7ba08ab ("btrfs: do not BUG_ON() on tree mod log failure at insert_new_root()")
    CC: stable@vger.kernel.org # 6.6+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: do not allow relocation of partially dropped subvolumes [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Fri Jul 25 20:33:25 2025 +0930

    btrfs: do not allow relocation of partially dropped subvolumes
    
    commit 4289b494ac553e74e86fed1c66b2bf9530bc1082 upstream.
    
    [BUG]
    There is an internal report that balance triggered transaction abort,
    with the following call trace:
    
      item 85 key (594509824 169 0) itemoff 12599 itemsize 33
              extent refs 1 gen 197740 flags 2
              ref#0: tree block backref root 7
      item 86 key (594558976 169 0) itemoff 12566 itemsize 33
              extent refs 1 gen 197522 flags 2
              ref#0: tree block backref root 7
     ...
     BTRFS error (device loop0): extent item not found for insert, bytenr 594526208 num_bytes 16384 parent 449921024 root_objectid 934 owner 1 offset 0
     BTRFS error (device loop0): failed to run delayed ref for logical 594526208 num_bytes 16384 type 182 action 1 ref_mod 1: -117
     ------------[ cut here ]------------
     BTRFS: Transaction aborted (error -117)
     WARNING: CPU: 1 PID: 6963 at ../fs/btrfs/extent-tree.c:2168 btrfs_run_delayed_refs+0xfa/0x110 [btrfs]
    
    And btrfs check doesn't report anything wrong related to the extent
    tree.
    
    [CAUSE]
    The cause is a little complex, firstly the extent tree indeed doesn't
    have the backref for 594526208.
    
    The extent tree only have the following two backrefs around that bytenr
    on-disk:
    
            item 65 key (594509824 METADATA_ITEM 0) itemoff 13880 itemsize 33
                    refs 1 gen 197740 flags TREE_BLOCK
                    tree block skinny level 0
                    (176 0x7) tree block backref root CSUM_TREE
            item 66 key (594558976 METADATA_ITEM 0) itemoff 13847 itemsize 33
                    refs 1 gen 197522 flags TREE_BLOCK
                    tree block skinny level 0
                    (176 0x7) tree block backref root CSUM_TREE
    
    But the such missing backref item is not an corruption on disk, as the
    offending delayed ref belongs to subvolume 934, and that subvolume is
    being dropped:
    
            item 0 key (934 ROOT_ITEM 198229) itemoff 15844 itemsize 439
                    generation 198229 root_dirid 256 bytenr 10741039104 byte_limit 0 bytes_used 345571328
                    last_snapshot 198229 flags 0x1000000000001(RDONLY) refs 0
                    drop_progress key (206324 EXTENT_DATA 2711650304) drop_level 2
                    level 2 generation_v2 198229
    
    And that offending tree block 594526208 is inside the dropped range of
    that subvolume.  That explains why there is no backref item for that
    bytenr and why btrfs check is not reporting anything wrong.
    
    But this also shows another problem, as btrfs will do all the orphan
    subvolume cleanup at a read-write mount.
    
    So half-dropped subvolume should not exist after an RW mount, and
    balance itself is also exclusive to subvolume cleanup, meaning we
    shouldn't hit a subvolume half-dropped during relocation.
    
    The root cause is, there is no orphan item for this subvolume.
    In fact there are 5 subvolumes from around 2021 that have the same
    problem.
    
    It looks like the original report has some older kernels running, and
    caused those zombie subvolumes.
    
    Thankfully upstream commit 8d488a8c7ba2 ("btrfs: fix subvolume/snapshot
    deletion not triggered on mount") has long fixed the bug.
    
    [ENHANCEMENT]
    For repairing such old fs, btrfs-progs will be enhanced.
    
    Considering how delayed the problem will show up (at run delayed ref
    time) and at that time we have to abort transaction already, it is too
    late.
    
    Instead here we reject any half-dropped subvolume for reloc tree at the
    earliest time, preventing confusion and extra time wasted on debugging
    similar bugs.
    
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: don't ignore inode missing when replaying log tree [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Jul 11 20:21:28 2025 +0100

    btrfs: don't ignore inode missing when replaying log tree
    
    commit 7ebf381a69421a88265d3c49cd0f007ba7336c9d upstream.
    
    During log replay, at add_inode_ref(), we return -ENOENT if our current
    inode isn't found on the subvolume tree or if a parent directory isn't
    found. The error comes from btrfs_iget_logging() <- btrfs_iget() <-
    btrfs_read_locked_inode().
    
    The single caller of add_inode_ref(), replay_one_buffer(), ignores an
    -ENOENT error because it expects that error to mean only that a parent
    directory wasn't found and that is ok.
    
    Before commit 5f61b961599a ("btrfs: fix inode lookup error handling during
    log replay") we were converting any error when getting a parent directory
    to -ENOENT and any error when getting the current inode to -EIO, so our
    caller would fail log replay in case we can't find the current inode.
    After that commit however in case the current inode is not found we return
    -ENOENT to the caller and therefore it ignores the critical fact that the
    current inode was not found in the subvolume tree.
    
    Fix this by converting -ENOENT to 0 when we don't find a parent directory,
    returning -ENOENT when we don't find the current inode and making the
    caller, replay_one_buffer(), not ignore -ENOENT anymore.
    
    Fixes: 5f61b961599a ("btrfs: fix inode lookup error handling during log replay")
    CC: stable@vger.kernel.org # 6.16
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: don't skip remaining extrefs if dir not found during log replay [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Jul 11 20:48:23 2025 +0100

    btrfs: don't skip remaining extrefs if dir not found during log replay
    
    commit 24e066ded45b8147b79c7455ac43a5bff7b5f378 upstream.
    
    During log replay, at add_inode_ref(), if we have an extref item that
    contains multiple extrefs and one of them points to a directory that does
    not exist in the subvolume tree, we are supposed to ignore it and process
    the remaining extrefs encoded in the extref item, since each extref can
    point to a different parent inode. However when that happens we just
    return from the function and ignore the remaining extrefs.
    
    The problem has been around since extrefs were introduced, in commit
    f186373fef00 ("btrfs: extended inode refs"), but it's hard to hit in
    practice because getting extref items encoding multiple extref requires
    getting a hash collision when computing the offset of the extref's
    key. The offset if computed like this:
    
      key.offset = btrfs_extref_hash(dir_ino, name->name, name->len);
    
    and btrfs_extref_hash() is just a wrapper around crc32c().
    
    Fix this by moving to next iteration of the loop when we don't find
    the parent directory that an extref points to.
    
    Fixes: f186373fef00 ("btrfs: extended inode refs")
    CC: stable@vger.kernel.org # 6.1+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: error on missing block group when unaccounting log tree extent buffers [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Jul 16 11:41:21 2025 +0100

    btrfs: error on missing block group when unaccounting log tree extent buffers
    
    commit fc5799986fbca957e2e3c0480027f249951b7bcf upstream.
    
    Currently we only log an error message if we can't find the block group
    for a log tree extent buffer when unaccounting it (while freeing a log
    tree). A missing block group means something is seriously wrong and we
    end up leaking space from the metadata space info. So return -ENOENT in
    case we don't find the block group.
    
    CC: stable@vger.kernel.org # 6.12+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix iteration bug in __qgroup_excl_accounting() [+ + +]
Author: Boris Burkov <boris@bur.io>
Date:   Wed Jul 30 09:29:23 2025 -0700

    btrfs: fix iteration bug in __qgroup_excl_accounting()
    
    commit 7b632596188e1973c6b3ac1c9f8252f735e1039f upstream.
    
    __qgroup_excl_accounting() uses the qgroup iterator machinery to
    update the account of one qgroups usage for all its parent hierarchy,
    when we either add or remove a relation and have only exclusive usage.
    
    However, there is a small bug there: we loop with an extra iteration
    temporary qgroup called `cur` but never actually refer to that in the
    body of the loop. As a result, we redundantly account the same usage to
    the first qgroup in the list.
    
    This can be reproduced in the following way:
    
      mkfs.btrfs -f -O squota <dev>
      mount <dev> <mnt>
      btrfs subvol create <mnt>/sv
      dd if=/dev/zero of=<mnt>/sv/f bs=1M count=1
      sync
      btrfs qgroup create 1/100 <mnt>
      btrfs qgroup create 2/200 <mnt>
      btrfs qgroup assign 1/100 2/200 <mnt>
      btrfs qgroup assign 0/256 1/100 <mnt>
      btrfs qgroup show <mnt>
    
    and the broken result is (note the 2MiB on 1/100 and 0Mib on 2/100):
    
      Qgroupid    Referenced    Exclusive   Path
      --------    ----------    ---------   ----
      0/5           16.00KiB     16.00KiB   <toplevel>
      0/256          1.02MiB      1.02MiB   sv
    
      Qgroupid    Referenced    Exclusive   Path
      --------    ----------    ---------   ----
      0/5           16.00KiB     16.00KiB   <toplevel>
      0/256          1.02MiB      1.02MiB   sv
      1/100          2.03MiB      2.03MiB   2/100<1 member qgroup>
      2/100            0.00B        0.00B   <0 member qgroups>
    
    With this fix, which simply re-uses `qgroup` as the iteration variable,
    we see the expected result:
    
      Qgroupid    Referenced    Exclusive   Path
      --------    ----------    ---------   ----
      0/5           16.00KiB     16.00KiB   <toplevel>
      0/256          1.02MiB      1.02MiB   sv
    
      Qgroupid    Referenced    Exclusive   Path
      --------    ----------    ---------   ----
      0/5           16.00KiB     16.00KiB   <toplevel>
      0/256          1.02MiB      1.02MiB   sv
      1/100          1.02MiB      1.02MiB   2/100<1 member qgroup>
      2/100          1.02MiB      1.02MiB   <0 member qgroups>
    
    The existing fstests did not exercise two layer inheritance so this bug
    was missed. I intend to add that testing there, as well.
    
    Fixes: a0bdc04b0732 ("btrfs: qgroup: use qgroup_iterator in __qgroup_excl_accounting()")
    CC: stable@vger.kernel.org # 6.12+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Boris Burkov <boris@bur.io>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix log tree replay failure due to file with 0 links and extents [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Jul 30 19:18:37 2025 +0100

    btrfs: fix log tree replay failure due to file with 0 links and extents
    
    commit 0a32e4f0025a74c70dcab4478e9b29c22f5ecf2f upstream.
    
    If we log a new inode (not persisted in a past transaction) that has 0
    links and extents, then log another inode with an higher inode number, we
    end up with failing to replay the log tree with -EINVAL. The steps for
    this are:
    
    1) create new file A
    2) write some data to file A
    3) open an fd on file A
    4) unlink file A
    5) fsync file A using the previously open fd
    6) create file B (has higher inode number than file A)
    7) fsync file B
    8) power fail before current transaction commits
    
    Now when attempting to mount the fs, the log replay will fail with
    -ENOENT at replay_one_extent() when attempting to replay the first
    extent of file A. The failure comes when trying to open the inode for
    file A in the subvolume tree, since it doesn't exist.
    
    Before commit 5f61b961599a ("btrfs: fix inode lookup error handling
    during log replay"), the returned error was -EIO instead of -ENOENT,
    since we converted any errors when attempting to read an inode during
    log replay to -EIO.
    
    The reason for this is that the log replay procedure fails to ignore
    the current inode when we are at the stage LOG_WALK_REPLAY_ALL, our
    current inode has 0 links and last inode we processed in the previous
    stage has a non 0 link count. In other words, the issue is that at
    replay_one_extent() we only update wc->ignore_cur_inode if the current
    replay stage is LOG_WALK_REPLAY_INODES.
    
    Fix this by updating wc->ignore_cur_inode whenever we find an inode item
    regardless of the current replay stage. This is a simple solution and easy
    to backport, but later we can do other alternatives like avoid logging
    extents or inode items other than the inode item for inodes with a link
    count of 0.
    
    The problem with the wc->ignore_cur_inode logic has been around since
    commit f2d72f42d5fa ("Btrfs: fix warning when replaying log after fsync
    of a tmpfile") but it only became frequent to hit since the more recent
    commit 5e85262e542d ("btrfs: fix fsync of files with no hard links not
    persisting deletion"), because we stopped skipping inodes with a link
    count of 0 when logging, while before the problem would only be triggered
    if trying to replay a log tree created with an older kernel which has a
    logged inode with 0 links.
    
    A test case for fstests will be submitted soon.
    
    Reported-by: Peter Jung <ptr1337@cachyos.org>
    Link: https://lore.kernel.org/linux-btrfs/fce139db-4458-4788-bb97-c29acf6cb1df@cachyos.org/
    Reported-by: burneddi <burneddi@protonmail.com>
    Link: https://lore.kernel.org/linux-btrfs/lh4W-Lwc0Mbk-QvBhhQyZxf6VbM3E8VtIvU3fPIQgweP_Q1n7wtlUZQc33sYlCKYd-o6rryJQfhHaNAOWWRKxpAXhM8NZPojzsJPyHMf2qY=@protonmail.com/#t
    Reported-by: Russell Haley <yumpusamongus@gmail.com>
    Link: https://lore.kernel.org/linux-btrfs/598ecc75-eb80-41b3-83c2-f2317fbb9864@gmail.com/
    Fixes: f2d72f42d5fa ("Btrfs: fix warning when replaying log after fsync of a tmpfile")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix ssd_spread overallocation [+ + +]
Author: Boris Burkov <boris@bur.io>
Date:   Mon Jul 14 16:44:28 2025 -0700

    btrfs: fix ssd_spread overallocation
    
    commit 807d9023e75fc20bfd6dd2ac0408ce4af53f1648 upstream.
    
    If the ssd_spread mount option is enabled, then we run the so called
    clustered allocator for data block groups. In practice, this results in
    creating a btrfs_free_cluster which caches a block_group and borrows its
    free extents for allocation.
    
    Since the introduction of allocation size classes in 6.1, there has been
    a bug in the interaction between that feature and ssd_spread.
    find_free_extent() has a number of nested loops. The loop going over the
    allocation stages, stored in ffe_ctl->loop and managed by
    find_free_extent_update_loop(), the loop over the raid levels, and the
    loop over all the block_groups in a space_info. The size class feature
    relies on the block_group loop to ensure it gets a chance to see a
    block_group of a given size class.  However, the clustered allocator
    uses the cached cluster block_group and breaks that loop. Each call to
    do_allocation() will really just go back to the same cached block_group.
    Normally, this is OK, as the allocation either succeeds and we don't
    want to loop any more or it fails, and we clear the cluster and return
    its space to the block_group.
    
    But with size classes, the allocation can succeed, then later fail,
    outside of do_allocation() due to size class mismatch. That latter
    failure is not properly handled due to the highly complex multi loop
    logic. The result is a painful loop where we continue to allocate the
    same num_bytes from the cluster in a tight loop until it fails and
    releases the cluster and lets us try a new block_group. But by then, we
    have skipped great swaths of the available block_groups and are likely
    to fail to allocate, looping the outer loop. In pathological cases like
    the reproducer below, the cached block_group is often the very last one,
    in which case we don't perform this tight bg loop but instead rip
    through the ffe stages to LOOP_CHUNK_ALLOC and allocate a chunk, which
    is now the last one, and we enter the tight inner loop until an
    allocation failure. Then allocation succeeds on the final block_group
    and if the next allocation is a size mismatch, the exact same thing
    happens again.
    
    Triggering this is as easy as mounting with -o ssd_spread and then
    running:
    
      mount -o ssd_spread $dev $mnt
      dd if=/dev/zero of=$mnt/big bs=16M count=1 &>/dev/null
      dd if=/dev/zero of=$mnt/med bs=4M count=1 &>/dev/null
      sync
    
    if you do the two writes + sync in a loop, you can force btrfs to spin
    an excessive amount on semi-successful clustered allocations, before
    ultimately failing and advancing to the stage where we force a chunk
    allocation. This results in 2G of data allocated per iteration, despite
    only using ~20M of data. By using a small size classed extent, the inner
    loop takes longer and we can spin for longer.
    
    The simplest, shortest term fix to unbreak this is to make the clustered
    allocator size_class aware in the dumbest way, where it fails on size
    class mismatch. This may hinder the operation of the clustered
    allocator, but better hindered than completely broken and terribly
    overallocating.
    
    Further re-design improvements are also in the works.
    
    Fixes: 52bb7a2166af ("btrfs: introduce size class to block group allocator")
    CC: stable@vger.kernel.org # 6.1+
    Reported-by: David Sterba <dsterba@suse.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Boris Burkov <boris@bur.io>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: populate otime when logging an inode item [+ + +]
Author: Qu Wenruo <wqu@suse.com>
Date:   Wed Jul 2 15:08:13 2025 +0930

    btrfs: populate otime when logging an inode item
    
    commit 1ef94169db0958d6de39f9ea6e063ce887342e2d upstream.
    
    [TEST FAILURE WITH EXPERIMENTAL FEATURES]
    When running test case generic/508, the test case will fail with the new
    btrfs shutdown support:
    
    generic/508       - output mismatch (see /home/adam/xfstests/results//generic/508.out.bad)
    #    --- tests/generic/508.out  2022-05-11 11:25:30.806666664 +0930
    #    +++ /home/adam/xfstests/results//generic/508.out.bad       2025-07-02 14:53:22.401824212 +0930
    #    @@ -1,2 +1,6 @@
    #     QA output created by 508
    #     Silence is golden
    #    +Before:
    #    +After : stat.btime = Thu Jan  1 09:30:00 1970
    #    +Before:
    #    +After : stat.btime = Wed Jul  2 14:53:22 2025
    #    ...
    #    (Run 'diff -u /home/adam/xfstests/tests/generic/508.out /home/adam/xfstests/results//generic/508.out.bad'  to see the entire diff)
    Ran: generic/508
    Failures: generic/508
    Failed 1 of 1 tests
    
    Please note that the test case requires shutdown support, thus the test
    case will be skipped using the current upstream kernel, as it doesn't
    have shutdown ioctl support.
    
    [CAUSE]
    The direct cause the 0 time stamp in the log tree:
    
    leaf 30507008 items 2 free space 16057 generation 9 owner TREE_LOG
    leaf 30507008 flags 0x1(WRITTEN) backref revision 1
    checksum stored e522548d
    checksum calced e522548d
    fs uuid 57d45451-481e-43e4-aa93-289ad707a3a0
    chunk uuid d52bd3fd-5163-4337-98a7-7986993ad398
            item 0 key (257 INODE_ITEM 0) itemoff 16123 itemsize 160
                    generation 9 transid 9 size 0 nbytes 0
                    block group 0 mode 100644 links 1 uid 0 gid 0 rdev 0
                    sequence 1 flags 0x0(none)
                    atime 1751432947.492000000 (2025-07-02 14:39:07)
                    ctime 1751432947.492000000 (2025-07-02 14:39:07)
                    mtime 1751432947.492000000 (2025-07-02 14:39:07)
                    otime 0.0 (1970-01-01 09:30:00) <<<
    
    But the old fs tree has all the correct time stamp:
    
    btrfs-progs v6.12
    fs tree key (FS_TREE ROOT_ITEM 0)
    leaf 30425088 items 2 free space 16061 generation 5 owner FS_TREE
    leaf 30425088 flags 0x1(WRITTEN) backref revision 1
    checksum stored 48f6c57e
    checksum calced 48f6c57e
    fs uuid 57d45451-481e-43e4-aa93-289ad707a3a0
    chunk uuid d52bd3fd-5163-4337-98a7-7986993ad398
            item 0 key (256 INODE_ITEM 0) itemoff 16123 itemsize 160
                    generation 3 transid 0 size 0 nbytes 16384
                    block group 0 mode 40755 links 1 uid 0 gid 0 rdev 0
                    sequence 0 flags 0x0(none)
                    atime 1751432947.0 (2025-07-02 14:39:07)
                    ctime 1751432947.0 (2025-07-02 14:39:07)
                    mtime 1751432947.0 (2025-07-02 14:39:07)
                    otime 1751432947.0 (2025-07-02 14:39:07) <<<
    
    The root cause is that fill_inode_item() in tree-log.c is only
    populating a/c/m time, not the otime (or btime in statx output).
    
    Part of the reason is that, the vfs inode only has a/c/m time, no native
    btime support yet.
    
    [FIX]
    Thankfully btrfs has its otime stored in btrfs_inode::i_otime_sec and
    btrfs_inode::i_otime_nsec.
    
    So what we really need is just fill the otime time stamp in
    fill_inode_item() of tree-log.c
    
    There is another fill_inode_item() in inode.c, which is doing the proper
    otime population.
    
    Fixes: 94edf4ae43a5 ("Btrfs: don't bother committing delayed inode updates when fsyncing")
    CC: stable@vger.kernel.org
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: qgroup: fix qgroup create ioctl returning success after quotas disabled [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Jul 1 15:44:16 2025 +0100

    btrfs: qgroup: fix qgroup create ioctl returning success after quotas disabled
    
    commit 08530d6e638427e7e1344bd67bacc03882ba95b9 upstream.
    
    When quotas are disabled qgroup ioctls are supposed to return -ENOTCONN,
    but the qgroup create ioctl stopped doing that when it races with a quota
    disable operation, returning 0 instead. This change of behaviour happened
    in commit 6ed05643ddb1 ("btrfs: create qgroup earlier in snapshot
    creation").
    
    The issue happens as follows:
    
    1) Task A enters btrfs_ioctl_qgroup_create(), qgroups are enabled and so
       qgroup_enabled() returns true since fs_info->quota_root is not NULL;
    
    2) Task B enters btrfs_ioctl_quota_ctl() -> btrfs_quota_disable() and
       disables qgroups, so now fs_info->quota_root is NULL;
    
    3) Task A enters btrfs_create_qgroup() and calls btrfs_qgroup_mode(),
       which returns BTRFS_QGROUP_MODE_DISABLED since quotas are disabled,
       and then btrfs_create_qgroup() returns 0 to the caller, which makes
       the ioctl return 0 instead of -ENOTCONN.
    
       The check for fs_info->quota_root and returning -ENOTCONN if it's NULL
       is made only after the call btrfs_qgroup_mode().
    
    Fix this by moving the check for disabled quotas with btrfs_qgroup_mode()
    into transaction.c:create_pending_snapshot(), so that we don't abort the
    transaction if btrfs_create_qgroup() returns -ENOTCONN and quotas are
    disabled.
    
    Fixes: 6ed05643ddb1 ("btrfs: create qgroup earlier in snapshot creation")
    CC: stable@vger.kernel.org # 6.12+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: qgroup: set quota enabled bit if quota disable fails flushing reservations [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Jul 1 11:39:44 2025 +0100

    btrfs: qgroup: set quota enabled bit if quota disable fails flushing reservations
    
    commit e41c75ca3189341e76e6af64b857c05b68a1d7db upstream.
    
    Before waiting for the rescan worker to finish and flushing reservations,
    we clear the BTRFS_FS_QUOTA_ENABLED flag from fs_info. If we fail flushing
    reservations we leave with the flag not set which is not correct since
    quotas are still enabled - we must set back the flag on error paths, such
    as when we fail to start a transaction, except for error paths that abort
    a transaction. The reservation flushing happens very early before we do
    any operation that actually disables quotas and before we start a
    transaction, so set back BTRFS_FS_QUOTA_ENABLED if it fails.
    
    Fixes: af0e2aab3b70 ("btrfs: qgroup: flush reservations during quota disable")
    CC: stable@vger.kernel.org # 6.12+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: zoned: do not remove unwritten non-data block group [+ + +]
Author: Naohiro Aota <naohiro.aota@wdc.com>
Date:   Sun Jun 29 23:07:42 2025 +0900

    btrfs: zoned: do not remove unwritten non-data block group
    
    commit 3061801420469610c8fa6080a950e56770773ef1 upstream.
    
    There are some reports of "unable to find chunk map for logical 2147483648
    length 16384" error message appears in dmesg. This means some IOs are
    occurring after a block group is removed.
    
    When a metadata tree node is cleaned on a zoned setup, we keep that node
    still dirty and write it out not to create a write hole. However, this can
    make a block group's used bytes == 0 while there is a dirty region left.
    
    Such an unused block group is moved into the unused_bg list and processed
    for removal. When the removal succeeds, the block group is removed from the
    transaction->dirty_bgs list, so the unused dirty nodes in the block group
    are not sent at the transaction commit time. It will be written at some
    later time e.g, sync or umount, and causes "unable to find chunk map"
    errors.
    
    This can happen relatively easy on SMR whose zone size is 256MB. However,
    calling do_zone_finish() on such block group returns -EAGAIN and keep that
    block group intact, which is why the issue is hidden until now.
    
    Fixes: afba2bc036b0 ("btrfs: zoned: implement active zone tracking")
    CC: stable@vger.kernel.org # 6.1+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: zoned: do not select metadata BG as finish target [+ + +]
Author: Naohiro Aota <naohiro.aota@wdc.com>
Date:   Wed Jul 16 16:59:52 2025 +0900

    btrfs: zoned: do not select metadata BG as finish target
    
    commit 3a931e9b39c7ff8066657042f5f00d3b7e6ad315 upstream.
    
    We call btrfs_zone_finish_one_bg() to zone finish one block group and make
    room to activate another block group. Currently, we can choose a metadata
    block group as a target. But, as we reserve an active metadata block group,
    we no longer want to select a metadata block group. So, skip it in the
    loop.
    
    CC: stable@vger.kernel.org # 6.6+
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: zoned: use filesystem size not disk size for reclaim decision [+ + +]
Author: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Date:   Tue May 20 09:20:47 2025 +0200

    btrfs: zoned: use filesystem size not disk size for reclaim decision
    
    commit 55f7c65b2f69c7e4cb7aa7c1654a228ccf734fd8 upstream.
    
    When deciding if a zoned filesystem is reaching the threshold to reclaim
    data block groups, look at the size of the filesystem not to potentially
    total available size of all drives in the filesystem.
    
    Especially if a filesystem was created with mkfs' -b option, constraining
    it to only a portion of the block device, the numbers won't match and
    potentially garbage collection is kicking in too late.
    
    Fixes: 3687fcb0752a ("btrfs: zoned: make auto-reclaim less aggressive")
    CC: stable@vger.kernel.org # 6.1+
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Tested-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
can: ti_hecc: fix -Woverflow compiler warning [+ + +]
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Tue Jul 15 20:28:11 2025 +0900

    can: ti_hecc: fix -Woverflow compiler warning
    
    [ Upstream commit 7cae4d04717b002cffe41169da3f239c845a0723 ]
    
    Fix below default (W=0) warning:
    
      drivers/net/can/ti_hecc.c: In function 'ti_hecc_start':
      drivers/net/can/ti_hecc.c:386:20: warning: conversion from 'long unsigned int' to 'u32' {aka 'unsigned int'} changes value from '18446744073709551599' to '4294967279' [-Woverflow]
        386 |         mbx_mask = ~BIT(HECC_RX_LAST_MBOX);
            |                    ^
    
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Link: https://patch.msgid.link/20250715-can-compile-test-v2-1-f7fd566db86f@wanadoo.fr
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cdc-acm: fix race between initial clearing halt and open [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Jul 17 16:12:50 2025 +0200

    cdc-acm: fix race between initial clearing halt and open
    
    commit 64690a90cd7c6db16d3af8616be1f4bf8d492850 upstream.
    
    On the devices that need their endpoints to get an
    initial clear_halt, this needs to be done before
    the devices can be opened. That means it needs to be
    before the devices are registered.
    
    Fixes: 15bf722e6f6c0 ("cdc-acm: Add support of ATOL FPrint fiscal printers")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://lore.kernel.org/r/20250717141259.2345605-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
char: misc: Fix improper and inaccurate error code returned by misc_init() [+ + +]
Author: Zijun Hu <zijun.hu@oss.qualcomm.com>
Date:   Fri Jun 20 22:35:20 2025 +0800

    char: misc: Fix improper and inaccurate error code returned by misc_init()
    
    [ Upstream commit 0ef1fe4bc38673db72e39b700b29c50dfcc5a415 ]
    
    misc_init() returns -EIO for __register_chrdev() invocation failure, but:
    
    - -EIO is for I/O error normally, but __register_chrdev() does not do I/O.
    - -EIO can not cover various error codes returned by __register_chrdev().
    
    Fix by returning error code of __register_chrdev().
    
    Signed-off-by: Zijun Hu <zijun.hu@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250620-fix_mischar-v1-3-6c2716bbf1fa@oss.qualcomm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cifs: Fix calling CIFSFindFirst() for root path without msearch [+ + +]
Author: Pali Rohár <pali@kernel.org>
Date:   Mon Dec 30 20:54:11 2024 +0100

    cifs: Fix calling CIFSFindFirst() for root path without msearch
    
    [ Upstream commit b460249b9a1dab7a9f58483e5349d045ad6d585c ]
    
    To query root path (without msearch wildcard) it is needed to
    send pattern '\' instead of '' (empty string).
    
    This allows to use CIFSFindFirst() to query information about root path
    which is being used in followup changes.
    
    This change fixes the stat() syscall called on the root path on the mount.
    It is because stat() syscall uses the cifs_query_path_info() function and
    it can fallback to the CIFSFindFirst() usage with msearch=false.
    
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cifs: Fix collect_sample() to handle any iterator type [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Mon Aug 11 08:34:04 2025 +0100

    cifs: Fix collect_sample() to handle any iterator type
    
    [ Upstream commit b63335fb3d32579c5ff0b7038b9cc23688fff528 ]
    
    collect_sample() is used to gather samples of the data in a Write op for
    analysis to try and determine if the compression algorithm is likely to
    achieve anything more quickly than actually running the compression
    algorithm.
    
    However, collect_sample() assumes that the data it is going to be sampling
    is stored in an ITER_XARRAY-type iterator (which it now should never be)
    and doesn't actually check that it is before accessing the underlying
    xarray directly.
    
    Fix this by replacing the code with a loop that just uses the standard
    iterator functions to sample every other 2KiB block, skipping the
    intervening ones.  It's not quite the same as the previous algorithm as it
    doesn't necessarily align to the pages within an ordinary write from the
    pagecache.
    
    Note that the btrfs code from which this was derived samples the inode's
    pagecache directly rather than the iterator - but that doesn't necessarily
    work for network filesystems if O_DIRECT is in operation.
    
    Fixes: 94ae8c3fee94 ("smb: client: compress: LZ77 code improvements cleanup")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
    cc: Enzo Matsumiya <ematsumiya@suse.de>
    cc: Shyam Prasad N <sprasad@microsoft.com>
    cc: Tom Talpey <tom@talpey.com>
    cc: linux-cifs@vger.kernel.org
    cc: linux-fsdevel@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cifs: reset iface weights when we cannot find a candidate [+ + +]
Author: Shyam Prasad N <sprasad@microsoft.com>
Date:   Thu Jul 17 17:36:13 2025 +0530

    cifs: reset iface weights when we cannot find a candidate
    
    commit 9d5eff7821f6d70f7d1b4d8a60680fba4de868a7 upstream.
    
    We now do a weighted selection of server interfaces when allocating
    new channels. The weights are decided based on the speed advertised.
    The fulfilled weight for an interface is a counter that is used to
    track the interface selection. It should be reset back to zero once
    all interfaces fulfilling their weight.
    
    In cifs_chan_update_iface, this reset logic was missing. As a result
    when the server interface list changes, the client may not be able
    to find a new candidate for other channels after all interfaces have
    been fulfilled.
    
    Fixes: a6d8fb54a515 ("cifs: distribute channels across interfaces based on speed")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
clk: qcom: gcc-ipq8074: fix broken freq table for nss_port6_tx_clk_src [+ + +]
Author: Christian Marangi <ansuelsmth@gmail.com>
Date:   Thu May 22 22:25:55 2025 +0200

    clk: qcom: gcc-ipq8074: fix broken freq table for nss_port6_tx_clk_src
    
    commit 077ec7bcec9a8987d2a133afb7e13011878c7576 upstream.
    
    With the conversion done by commit e88f03230dc0 ("clk: qcom: gcc-ipq8074:
    rework nss_port5/6 clock to multiple conf") a Copy-Paste error was made
    for the nss_port6_tx_clk_src frequency table.
    
    This was caused by the wrong setting of the parent in
    ftbl_nss_port6_tx_clk_src that was wrongly set to P_UNIPHY1_RX instead
    of P_UNIPHY2_TX.
    
    This cause the UNIPHY2 port to malfunction when it needs to be scaled to
    higher clock. The malfunction was observed with the example scenario
    with an Aquantia 10G PHY connected and a speed higher than 1G (example
    2.5G)
    
    Fix the broken frequency table to restore original functionality.
    
    Cc: stable@vger.kernel.org
    Fixes: e88f03230dc0 ("clk: qcom: gcc-ipq8074: rework nss_port5/6 clock to multiple conf")
    Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
    Tested-by: Robert Marko <robimarko@gmail.com>
    Link: https://lore.kernel.org/r/20250522202600.4028-1-ansuelsmth@gmail.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: qcom: ipq5018: keep XO clock always on [+ + +]
Author: George Moussalem <george.moussalem@outlook.com>
Date:   Fri May 16 16:36:08 2025 +0400

    clk: qcom: ipq5018: keep XO clock always on
    
    [ Upstream commit 693a723291d0634eaea24cff2f9d807f3223f204 ]
    
    The XO clock must not be disabled to avoid the kernel trying to disable
    the it. As such, keep the XO clock always on by flagging it as critical.
    
    Signed-off-by: George Moussalem <george.moussalem@outlook.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250516-ipq5018-cmn-pll-v4-1-389a6b30e504@outlook.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: renesas: rzg2l: Postpone updating priv->clks[] [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Wed May 14 12:04:08 2025 +0300

    clk: renesas: rzg2l: Postpone updating priv->clks[]
    
    [ Upstream commit 2f96afdffad4ef74e3c511207058c41c54a2d014 ]
    
    Since the sibling data is filled after the priv->clks[] array entry is
    populated, the first clock that is probed and has a sibling will
    temporarily behave as its own sibling until its actual sibling is
    populated. To avoid any issues, postpone updating priv->clks[] until after
    the sibling is populated.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/20250514090415.4098534-2-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: samsung: exynos850: fix a comment [+ + +]
Author: André Draszik <andre.draszik@linaro.org>
Date:   Tue Jun 3 16:43:21 2025 +0100

    clk: samsung: exynos850: fix a comment
    
    commit 320e7efce30e2613c2c7877acc46a8e71192cdcd upstream.
    
    The code below the updated comment is for CMU_CPUCL1, not CMU_CPUCL0.
    
    Fixes: dedf87341ad6 ("clk: samsung: exynos850: Add CMU_CPUCL0 and CMU_CPUCL1")
    Cc: stable@vger.kernel.org
    Signed-off-by: André Draszik <andre.draszik@linaro.org>
    Link: https://lore.kernel.org/r/20250603-samsung-clk-fixes-v1-3-49daf1ff4592@linaro.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: samsung: gs101: fix alternate mout_hsi0_usb20_ref parent clock [+ + +]
Author: André Draszik <andre.draszik@linaro.org>
Date:   Tue Jun 3 16:43:20 2025 +0100

    clk: samsung: gs101: fix alternate mout_hsi0_usb20_ref parent clock
    
    commit ca243e653f71d8c4724a68c9033923f945b1084d upstream.
    
    The alternate parent clock for this mux is mout_pll_usb, not the pll
    itself.
    
    Fixes: 1891e4d48755 ("clk: samsung: gs101: add support for cmu_hsi0")
    Cc: stable@vger.kernel.org
    Signed-off-by: André Draszik <andre.draszik@linaro.org>
    Link: https://lore.kernel.org/r/20250603-samsung-clk-fixes-v1-2-49daf1ff4592@linaro.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: samsung: gs101: fix CLK_DOUT_CMU_G3D_BUSD [+ + +]
Author: André Draszik <andre.draszik@linaro.org>
Date:   Tue Jun 3 16:43:19 2025 +0100

    clk: samsung: gs101: fix CLK_DOUT_CMU_G3D_BUSD
    
    commit 29a9361f0b50be2b16d308695e30ee030fedea2c upstream.
    
    Use the correct Linux clock ID when instantiating the G3D_BUSD
    div_clock.
    
    Fixes: 2c597bb7d66a ("clk: samsung: clk-gs101: Add cmu_top, cmu_misc and cmu_apm support")
    Cc: stable@vger.kernel.org
    Signed-off-by: André Draszik <andre.draszik@linaro.org>
    Link: https://lore.kernel.org/r/20250603-samsung-clk-fixes-v1-1-49daf1ff4592@linaro.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

clk: tegra: periph: Fix error handling and resolve unsigned compare warning [+ + +]
Author: Pei Xiao <xiaopei01@kylinos.cn>
Date:   Wed Jul 9 15:37:13 2025 +0800

    clk: tegra: periph: Fix error handling and resolve unsigned compare warning
    
    [ Upstream commit 2dc2ca9000eea2eb749f658196204cb84d4306f7 ]
    
    ./drivers/clk/tegra/clk-periph.c:59:5-9: WARNING:
            Unsigned expression compared with zero: rate < 0
    
    The unsigned long 'rate' variable caused:
    - Incorrect handling of negative errors
    - Compile warning: "Unsigned expression compared with zero"
    
    Fix by changing to long type and adding req->rate cast.
    
    Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
    Link: https://lore.kernel.org/r/79c7f01e29876c612e90d6d0157fb1572ca8b3fb.1752046270.git.xiaopei01@kylinos.cn
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: thead: Mark essential bus clocks as CLK_IGNORE_UNUSED [+ + +]
Author: Michal Wilczynski <m.wilczynski@samsung.com>
Date:   Mon Jun 23 20:08:53 2025 +0200

    clk: thead: Mark essential bus clocks as CLK_IGNORE_UNUSED
    
    [ Upstream commit 0370395d45ca6dd53bb931978f0e91ac8dd6f1c5 ]
    
    Probing peripherals in the AON and PERI domains, such as the PVT thermal
    sensor and the PWM controller, can lead to boot hangs or unresponsive
    devices on the LPi4A board. The root cause is that their parent bus
    clocks ('CLK_CPU2AON_X2H' and the 'CLK_PERISYS_APB' clocks) are
    automatically gated by the kernel's power-saving mechanisms when the bus
    is perceived as idle.
    
    Alternative solutions were investigated, including modeling the parent
    bus in the Device Tree with 'simple-pm-bus' or refactoring the clock
    driver's parentage. The 'simple-pm-bus' approach is not viable due to
    the lack of defined bus address ranges in the hardware manual and its
    creation of improper dependencies on the 'pm_runtime' API for consumer
    drivers.
    
    Therefore, applying the'`CLK_IGNORE_UNUSED' flag directly to the
    essential bus clocks is the most direct and targeted fix. This prevents
    the kernel from auto-gating these buses and ensures peripherals remain
    accessible.
    
    This change fixes the boot hang associated with the PVT sensor and
    resolves the functional issues with the PWM controller.
    
    Link: https://lore.kernel.org/all/9e8a12db-236d-474c-b110-b3be96edf057@samsung.com/ [1]
    
    Reviewed-by: Drew Fustini <drew@pdp7.com>
    Acked-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Michal Wilczynski <m.wilczynski@samsung.com>
    Signed-off-by: Drew Fustini <drew@pdp7.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
comedi: fix race between polling and detaching [+ + +]
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Tue Jul 22 16:53:16 2025 +0100

    comedi: fix race between polling and detaching
    
    commit 35b6fc51c666fc96355be5cd633ed0fe4ccf68b2 upstream.
    
    syzbot reports a use-after-free in comedi in the below link, which is
    due to comedi gladly removing the allocated async area even though poll
    requests are still active on the wait_queue_head inside of it. This can
    cause a use-after-free when the poll entries are later triggered or
    removed, as the memory for the wait_queue_head has been freed.  We need
    to check there are no tasks queued on any of the subdevices' wait queues
    before allowing the device to be detached by the `COMEDI_DEVCONFIG`
    ioctl.
    
    Tasks will read-lock `dev->attach_lock` before adding themselves to the
    subdevice wait queue, so fix the problem in the `COMEDI_DEVCONFIG` ioctl
    handler by write-locking `dev->attach_lock` before checking that all of
    the subdevices are safe to be deleted.  This includes testing for any
    sleepers on the subdevices' wait queues.  It remains locked until the
    device has been detached.  This requires the `comedi_device_detach()`
    function to be refactored slightly, moving the bulk of it into new
    function `comedi_device_detach_locked()`.
    
    Note that the refactor of `comedi_device_detach()` results in
    `comedi_device_cancel_all()` now being called while `dev->attach_lock`
    is write-locked, which wasn't the case previously, but that does not
    matter.
    
    Thanks to Jens Axboe for diagnosing the problem and co-developing this
    patch.
    
    Cc: stable <stable@kernel.org>
    Fixes: 2f3fdcd7ce93 ("staging: comedi: add rw_semaphore to protect against device detachment")
    Link: https://lore.kernel.org/all/687bd5fe.a70a0220.693ce.0091.GAE@google.com/
    Reported-by: syzbot+01523a0ae5600aef5895@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=01523a0ae5600aef5895
    Co-developed-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Tested-by: Jens Axboe <axboe@kernel.dk>
    Link: https://lore.kernel.org/r/20250722155316.27432-1-abbotti@mev.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag [+ + +]
Author: Prashant Malani <pmalani@google.com>
Date:   Tue Jul 22 05:55:40 2025 +0000

    cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag
    
    [ Upstream commit 0a1416a49e63c320f6e6c1c8d07e1b58c0d4a3f3 ]
    
    AMU counters on certain CPPC-based platforms tend to yield inaccurate
    delivered performance measurements on systems that are idle/mostly idle.
    This results in an inaccurate frequency being stored by cpufreq in its
    policy structure when the CPU is brought online. [1]
    
    Consequently, if the userspace governor tries to set the frequency to a
    new value, there is a possibility that it would be the erroneous value
    stored earlier. In such a scenario, cpufreq would assume that the
    requested frequency has already been set and return early, resulting in
    the correct/new frequency request never making it to the hardware.
    
    Since the operating frequency is liable to this sort of inconsistency,
    mark the CPPC driver with CPUFREQ_NEED_UPDATE_LIMITS so that it is always
    invoked when a target frequency update is requested.
    
    Link: https://lore.kernel.org/linux-pm/20250619000925.415528-3-pmalani@google.com/ [1]
    Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Prashant Malani <pmalani@google.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Link: https://patch.msgid.link/20250722055611.130574-2-pmalani@google.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: Exit governor when failed to start old governor [+ + +]
Author: Lifeng Zheng <zhenglifeng1@huawei.com>
Date:   Wed Jul 9 18:41:45 2025 +0800

    cpufreq: Exit governor when failed to start old governor
    
    [ Upstream commit 0ae204405095abfbc2d694ee0fbb49bcbbe55c57 ]
    
    Detect the result of starting old governor in cpufreq_set_policy(). If it
    fails, exit the governor and clear policy->governor.
    
    Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
    Link: https://patch.msgid.link/20250709104145.2348017-5-zhenglifeng1@huawei.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: intel_pstate: Add Granite Rapids support in no-HWP mode [+ + +]
Author: Li RongQing <lirongqing@baidu.com>
Date:   Mon Jun 23 18:56:01 2025 +0800

    cpufreq: intel_pstate: Add Granite Rapids support in no-HWP mode
    
    [ Upstream commit fc64e0421598aaa87d61184f6777b52614a095be ]
    
    Users may disable HWP in firmware, in which case intel_pstate
    wouldn't load unless the CPU model is explicitly supported.
    
    Signed-off-by: Li RongQing <lirongqing@baidu.com>
    Link: https://patch.msgid.link/20250623105601.3924-1-lirongqing@baidu.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cpuidle: governors: menu: Avoid using invalid recent intervals data [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Mon Aug 11 17:03:11 2025 +0200

    cpuidle: governors: menu: Avoid using invalid recent intervals data
    
    [ Upstream commit fa3fa55de0d6177fdcaf6fc254f13cc8f33c3eed ]
    
    Marc has reported that commit 85975daeaa4d ("cpuidle: menu: Avoid
    discarding useful information") caused the number of wakeup interrupts
    to increase on an idle system [1], which was not expected to happen
    after merely allowing shallower idle states to be selected by the
    governor in some cases.
    
    However, on the system in question, all of the idle states deeper than
    WFI are rejected by the driver due to a firmware issue [2].  This causes
    the governor to only consider the recent interval duriation data
    corresponding to attempts to enter WFI that are successful and the
    recent invervals table is filled with values lower than the scheduler
    tick period.  Consequently, the governor predicts an idle duration
    below the scheduler tick period length and avoids stopping the tick
    more often which leads to the observed symptom.
    
    Address it by modifying the governor to update the recent intervals
    table also when entering the previously selected idle state fails, so
    it knows that the short idle intervals might have been the minority
    had the selected idle states been actually entered every time.
    
    Fixes: 85975daeaa4d ("cpuidle: menu: Avoid discarding useful information")
    Link: https://lore.kernel.org/linux-pm/86o6sv6n94.wl-maz@kernel.org/ [1]
    Link: https://lore.kernel.org/linux-pm/7ffcb716-9a1b-48c2-aaa4-469d0df7c792@arm.com/ [2]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Tested-by: Christian Loehle <christian.loehle@arm.com>
    Tested-by: Marc Zyngier <maz@kernel.org>
    Reviewed-by: Christian Loehle <christian.loehle@arm.com>
    Link: https://patch.msgid.link/2793874.mvXUDI8C0e@rafael.j.wysocki
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: ccp - Add missing bootloader info reg for pspv6 [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Mon May 19 10:21:01 2025 -0500

    crypto: ccp - Add missing bootloader info reg for pspv6
    
    [ Upstream commit aaeff14688d0254b39731d9bb303c79bfd610f7d ]
    
    The bootloader info reg for pspv6 is the same as pspv4 and pspv5.
    
    Suggested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: hisilicon/hpre - fix dma unmap sequence [+ + +]
Author: Zhiqi Song <songzhiqi1@huawei.com>
Date:   Fri Jul 18 18:05:01 2025 +0800

    crypto: hisilicon/hpre - fix dma unmap sequence
    
    [ Upstream commit 982fd1a74de63c388c060e4fa6f7fbd088d6d02e ]
    
    Perform DMA unmapping operations before processing data.
    Otherwise, there may be unsynchronized data accessed by
    the CPU when the SWIOTLB is enabled.
    
    Signed-off-by: Zhiqi Song <songzhiqi1@huawei.com>
    Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: jitter - fix intermediary handling [+ + +]
Author: Markus Theil <theil.markus@gmail.com>
Date:   Sat Jun 21 13:36:43 2025 +0200

    crypto: jitter - fix intermediary handling
    
    [ Upstream commit 735b72568c73875269a6b73ab9543a70f6ac8a9f ]
    
    The intermediary value was included in the wrong
    hash state. While there, adapt to user-space by
    setting the timestamp to 0 if stuck and inserting
    the values nevertheless.
    
    Acked-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: Markus Theil <theil.markus@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: octeontx2 - add timeout for load_fvc completion poll [+ + +]
Author: Bharat Bhushan <bbhushan2@marvell.com>
Date:   Thu May 22 15:36:24 2025 +0530

    crypto: octeontx2 - add timeout for load_fvc completion poll
    
    [ Upstream commit 2157e50f65d2030f07ea27ef7ac4cfba772e98ac ]
    
    Adds timeout to exit from possible infinite loop, which polls
    on CPT instruction(load_fvc) completion.
    
    Signed-off-by: Srujana Challa <schalla@marvell.com>
    Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-mpath: don't print the "loaded" message if registering fails [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Jun 30 15:24:22 2025 +0200

    dm-mpath: don't print the "loaded" message if registering fails
    
    [ Upstream commit 6e11952a6abc4641dc8ae63f01b318b31b44e8db ]
    
    If dm_register_path_selector, don't print the "version X loaded" message.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-stripe: limit chunk_sectors to the stripe size [+ + +]
Author: John Garry <john.g.garry@oracle.com>
Date:   Fri Jul 11 10:52:57 2025 +0000

    dm-stripe: limit chunk_sectors to the stripe size
    
    [ Upstream commit 5fb9d4341b782a80eefa0dc1664d131ac3c8885d ]
    
    Same as done for raid0, set chunk_sectors limit to appropriately set the
    atomic write size limit.
    
    Setting chunk_sectors limit in this way overrides the stacked limit
    already calculated based on the bottom device limits. This is ok, as
    when any bios are sent to the bottom devices, the block layer will still
    respect the bottom device chunk_sectors.
    
    Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
    Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: John Garry <john.g.garry@oracle.com>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Link: https://lore.kernel.org/r/20250711105258.3135198-6-john.g.garry@oracle.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-table: fix checking for rq stackable devices [+ + +]
Author: Benjamin Marzinski <bmarzins@redhat.com>
Date:   Fri Jun 13 19:08:52 2025 -0400

    dm-table: fix checking for rq stackable devices
    
    [ Upstream commit 8ca719b81987be690f197e82fdb030580c0a07f3 ]
    
    Due to the semantics of iterate_devices(), the current code allows a
    request-based dm table as long as it includes one request-stackable
    device. It is supposed to only allow tables where there are no
    non-request-stackable devices.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm: Always split write BIOs to zoned device limits [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Wed Jun 25 18:33:25 2025 +0900

    dm: Always split write BIOs to zoned device limits
    
    commit 2df7168717b7d2d32bcf017c68be16e4aae9dd13 upstream.
    
    Any zoned DM target that requires zone append emulation will use the
    block layer zone write plugging. In such case, DM target drivers must
    not split BIOs using dm_accept_partial_bio() as doing so can potentially
    lead to deadlocks with queue freeze operations. Regular write operations
    used to emulate zone append operations also cannot be split by the
    target driver as that would result in an invalid writen sector value
    return using the BIO sector.
    
    In order for zoned DM target drivers to avoid such incorrect BIO
    splitting, we must ensure that large BIOs are split before being passed
    to the map() function of the target, thus guaranteeing that the
    limits for the mapped device are not exceeded.
    
    dm-crypt and dm-flakey are the only target drivers supporting zoned
    devices and using dm_accept_partial_bio().
    
    In the case of dm-crypt, this function is used to split BIOs to the
    internal max_write_size limit (which will be suppressed in a different
    patch). However, since crypt_alloc_buffer() uses a bioset allowing only
    up to BIO_MAX_VECS (256) vectors in a BIO. The dm-crypt device
    max_segments limit, which is not set and so default to BLK_MAX_SEGMENTS
    (128), must thus be respected and write BIOs split accordingly.
    
    In the case of dm-flakey, since zone append emulation is not required,
    the block layer zone write plugging is not used and no splitting of BIOs
    required.
    
    Modify the function dm_zone_bio_needs_split() to use the block layer
    helper function bio_needs_zone_write_plugging() to force a call to
    bio_split_to_limits() in dm_split_and_process_bio(). This allows DM
    target drivers to avoid using dm_accept_partial_bio() for write
    operations on zoned DM devices.
    
    Fixes: f211268ed1f9 ("dm: Use the block layer zone append emulation")
    Cc: stable@vger.kernel.org
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Link: https://lore.kernel.org/r/20250625093327.548866-4-dlemoal@kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

dm: split write BIOs on zone boundaries when zone append is not emulated [+ + +]
Author: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Date:   Thu Jul 17 19:35:39 2025 +0900

    dm: split write BIOs on zone boundaries when zone append is not emulated
    
    commit 675f940576351bb049f5677615140b9d0a7712d0 upstream.
    
    Commit 2df7168717b7 ("dm: Always split write BIOs to zoned device
    limits") updates the device-mapper driver to perform splits for the
    write BIOs. However, it did not address the cases where DM targets do
    not emulate zone append, such as in the cases of dm-linear or dm-flakey.
    For these targets, when the write BIOs span across zone boundaries, they
    trigger WARN_ON_ONCE(bio_straddles_zones(bio)) in
    blk_zone_wplug_handle_write(). This results in I/O errors. The errors
    are reproduced by running blktests test case zbd/004 using zoned
    dm-linear or dm-flakey devices.
    
    To avoid the I/O errors, handle the write BIOs regardless whether DM
    targets emulate zone append or not, so that all write BIOs are split at
    zone boundaries. For that purpose, drop the check for zone append
    emulation in dm_zone_bio_needs_split(). Its argument 'md' is no longer
    used then drop it also.
    
    Fixes: 2df7168717b7 ("dm: Always split write BIOs to zoned device limits")
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
    Link: https://lore.kernel.org/r/20250717103539.37279-1-shinichiro.kawasaki@wdc.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dmaengine: stm32-dma: configure next sg only if there are more than 2 sgs [+ + +]
Author: Amelie Delaunay <amelie.delaunay@foss.st.com>
Date:   Tue Jun 24 09:31:37 2025 +0200

    dmaengine: stm32-dma: configure next sg only if there are more than 2 sgs
    
    [ Upstream commit e19bdbaa31082b43dab1d936e20efcebc30aa73d ]
    
    DMA operates in Double Buffer Mode (DBM) when the transfer is cyclic and
    there are at least two periods.
    When DBM is enabled, the DMA toggles between two memory targets (SxM0AR and
    SxM1AR), indicated by the SxSCR.CT bit (Current Target).
    There is no need to update the next memory address if two periods are
    configured, as SxM0AR and SxM1AR are already properly set up before the
    transfer begins in the stm32_dma_start_transfer() function.
    This avoids unnecessary updates to SxM0AR/SxM1AR, thereby preventing
    potential Transfer Errors. Specifically, when the channel is enabled,
    SxM0AR and SxM1AR can only be written if SxSCR.CT=1 and SxSCR.CT=0,
    respectively. Otherwise, a Transfer Error interrupt is triggered, and the
    stream is automatically disabled.
    
    Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
    Link: https://lore.kernel.org/r/20250624-stm32_dma_dbm_fix-v1-1-337c40d6c93e@foss.st.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Documentation: ACPI: Fix parent device references [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Jul 10 20:00:23 2025 +0300

    Documentation: ACPI: Fix parent device references
    
    commit e65cb011349e653ded541dddd6469c2ca813edcf upstream.
    
    The _CRS resources in many cases want to have ResourceSource field
    to be a type of ACPI String. This means that to compile properly
    we need to enclosure the name path into double quotes. This will
    in practice defer the interpretation to a run-time stage, However,
    this may be interpreted differently on different OSes and ACPI
    interpreter implementations. In particular ACPICA might not correctly
    recognize the leading '^' (caret) character and will not resolve
    the relative name path properly. On top of that, this piece may be
    used in SSDTs which are loaded after the DSDT and on itself may also
    not resolve relative name paths outside of their own scopes.
    With this all said, fix documentation to use fully-qualified name
    paths always to avoid any misinterpretations, which is proven to
    work.
    
    Fixes: 8eb5c87a92c0 ("i2c: add ACPI support for I2C mux ports")
    Reported-by: Yevhen Kondrashyn <e.kondrashyn@gmail.com>
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://patch.msgid.link/20250710170225.961303-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dpaa_eth: don't use fixed_phy_change_carrier [+ + +]
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Mon Jun 16 23:24:05 2025 +0200

    dpaa_eth: don't use fixed_phy_change_carrier
    
    [ Upstream commit d8155c1df5c8b717052567b188455d41fa7a8908 ]
    
    This effectively reverts 6e8b0ff1ba4c ("dpaa_eth: Add change_carrier()
    for Fixed PHYs"). Usage of fixed_phy_change_carrier() requires that
    fixed_phy_register() has been called before, directly or indirectly.
    And that's not the case in this driver.
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/7eb189b3-d5fd-4be6-8517-a66671a4e4e3@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drbd: add missing kref_get in handle_write_conflicts [+ + +]
Author: Sarah Newman <srn@prgmr.com>
Date:   Fri Jun 27 11:57:28 2025 +0200

    drbd: add missing kref_get in handle_write_conflicts
    
    [ Upstream commit 00c9c9628b49e368d140cfa61d7df9b8922ec2a8 ]
    
    With `two-primaries` enabled, DRBD tries to detect "concurrent" writes
    and handle write conflicts, so that even if you write to the same sector
    simultaneously on both nodes, they end up with the identical data once
    the writes are completed.
    
    In handling "superseeded" writes, we forgot a kref_get,
    resulting in a premature drbd_destroy_device and use after free,
    and further to kernel crashes with symptoms.
    
    Relevance: No one should use DRBD as a random data generator, and apparently
    all users of "two-primaries" handle concurrent writes correctly on layer up.
    That is cluster file systems use some distributed lock manager,
    and live migration in virtualization environments stops writes on one node
    before starting writes on the other node.
    
    Which means that other than for "test cases",
    this code path is never taken in real life.
    
    FYI, in DRBD 9, things are handled differently nowadays.  We still detect
    "write conflicts", but no longer try to be smart about them.
    We decided to disconnect hard instead: upper layers must not submit concurrent
    writes. If they do, that's their fault.
    
    Signed-off-by: Sarah Newman <srn@prgmr.com>
    Signed-off-by: Lars Ellenberg <lars@linbit.com>
    Signed-off-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
    Link: https://lore.kernel.org/r/20250627095728.800688-1-christoph.boehmwalder@linbit.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Allow DCN301 to clear update flags [+ + +]
Author: Ivan Lipski <ivan.lipski@amd.com>
Date:   Thu Jul 17 13:58:35 2025 -0400

    drm/amd/display: Allow DCN301 to clear update flags
    
    commit 2d418e4fd9f1eca7dfce80de86dd702d36a06a25 upstream.
    
    [Why & How]
    Not letting DCN301 to clear after surface/stream update results
    in artifacts when switching between active overlay planes. The issue
    is known and has been solved initially. See below:
    (https://gitlab.freedesktop.org/drm/amd/-/issues/3441)
    
    Fixes: f354556e29f4 ("drm/amd/display: limit clear_update_flags t dcn32 and above")
    Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: Avoid configuring PSR granularity if PSR-SU not supported [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Sun Jul 6 08:38:05 2025 -0500

    drm/amd/display: Avoid configuring PSR granularity if PSR-SU not supported
    
    [ Upstream commit a5ce8695d6d1b40d6960d2d298b579042c158f25 ]
    
    [Why]
    If PSR-SU is disabled on the link, then configuring su_y granularity in
    mod_power_calc_psr_configs() can lead to assertions in
    psr_su_set_dsc_slice_height().
    
    [How]
    Check the PSR version in amdgpu_dm_link_setup_psr() to determine whether
    or not to configure granularity.
    
    Reviewed-by: Sun peng (Leo) Li <sunpeng.li@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Avoid trying AUX transactions on disconnected ports [+ + +]
Author: Wayne Lin <Wayne.Lin@amd.com>
Date:   Tue May 13 16:06:50 2025 +0800

    drm/amd/display: Avoid trying AUX transactions on disconnected ports
    
    [ Upstream commit deb24e64c8881c462b29e2c69afd9e6669058be5 ]
    
    [Why & How]
    Observe that we try to access DPCD 0x600h of disconnected DP ports.
    In order not to wasting time on retrying these ports, call
    dpcd_write_rx_power_ctrl() after checking its connection status.
    
    Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Disable dsc_power_gate for dcn314 by default [+ + +]
Author: Roman Li <Roman.Li@amd.com>
Date:   Mon Jul 14 14:37:33 2025 -0400

    drm/amd/display: Disable dsc_power_gate for dcn314 by default
    
    [ Upstream commit 02f3ec53177243d32ee8b6f8ba99136d7887ee3a ]
    
    [Why]
    "REG_WAIT timeout 1us * 1000 tries - dcn314_dsc_pg_control line"
    warnings seen after resuming from s2idle.
    DCN314 has issues with DSC power gating that cause REG_WAIT timeouts
    when attempting to power down DSC blocks.
    
    [How]
    Disable dsc_power_gate for dcn314 by default.
    
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Roman Li <Roman.Li@amd.com>
    Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Fix 'failed to blank crtc!' [+ + +]
Author: Wen Chen <Wen.Chen3@amd.com>
Date:   Mon Jun 2 16:37:08 2025 -0400

    drm/amd/display: Fix 'failed to blank crtc!'
    
    [ Upstream commit 01f60348d8fb6b3fbcdfc7bdde5d669f95b009a4 ]
    
    [why]
    DCN35 is having “DC: failed to blank crtc!” when running HPO
    test cases. It's caused by not having sufficient udelay time.
    
    [how]
    Replace the old wait_for_blank_complete function with fsleep function to
    sleep just until the next frame should come up. This way it doesn't poll
    in case the pixel clock or other clock was bugged or until vactive and
    the vblank are hit again.
    
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Wen Chen <Wen.Chen3@amd.com>
    Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Initialize mode_select to 0 [+ + +]
Author: Alex Hung <alex.hung@amd.com>
Date:   Tue Jun 10 15:40:18 2025 -0600

    drm/amd/display: Initialize mode_select to 0
    
    [ Upstream commit 592ddac93f8c02e13f19175745465f8c4d0f56cd ]
    
    [WHAT]
    mode_select was supposed to be initialized in mpc_read_gamut_remap but
    is not set in default case. This can cause indeterminate
    behaviors.
    
    This is reported as an UNINIT error by Coverity.
    
    Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Signed-off-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: limit clear_update_flags to dcn32 and above [+ + +]
Author: Charlene Liu <Charlene.Liu@amd.com>
Date:   Thu Jun 26 16:36:17 2025 -0400

    drm/amd/display: limit clear_update_flags to dcn32 and above
    
    [ Upstream commit f354556e29f40ef44fa8b13dc914817db3537e20 ]
    
    [why]
    dc has some code out of sync:
    dc_commit_updates_for_stream handles v1/v2/v3,
    but dc_update_planes_and_stream makes v1 asic to use v2.
    
    as a reression fix: limit clear_update_flags to dcn32 or newer asic.
    need to follow up that v1 asic using v2 issue.
    
    Reviewed-by: Syed Hassan <syed.hassan@amd.com>
    Signed-off-by: Charlene Liu <Charlene.Liu@amd.com>
    Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Only finalize atomic_obj if it was initialized [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Tue Jul 15 14:41:46 2025 -0500

    drm/amd/display: Only finalize atomic_obj if it was initialized
    
    [ Upstream commit b174084b3fe15ad1acc69530e673c1535d2e4f85 ]
    
    [Why]
    If amdgpu_dm failed to initalize before amdgpu_dm_initialize_drm_device()
    completed then freeing atomic_obj will lead to list corruption.
    
    [How]
    Check if atomic_obj state is initialized before trying to free.
    
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Separate set_gsl from set_gsl_source_select [+ + +]
Author: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
Date:   Wed Jun 18 13:07:14 2025 -0400

    drm/amd/display: Separate set_gsl from set_gsl_source_select
    
    [ Upstream commit 660a467a5e7366cd6642de61f1aaeaf0d253ee68 ]
    
    [Why/How]
    Separate the checks for set_gsl and set_gsl_source_select, since
    source_select may not be implemented/necessary.
    
    Reviewed-by: Nevenko Stupar <nevenko.stupar@amd.com>
    Signed-off-by: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
    Signed-off-by: Ray Wu <ray.wu@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/display: Update DMCUB loading sequence for DCN3.5 [+ + +]
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Fri May 9 11:18:26 2025 -0400

    drm/amd/display: Update DMCUB loading sequence for DCN3.5
    
    [ Upstream commit d42b2331e158fa6bcdc89e4c8c470dc5da20be1f ]
    
    [Why]
    New sequence from HW for reset and firmware reloading has been
    provided that aims to stabilize the reload sequence in the case the
    firmware is hung or has outstanding requests.
    
    [How]
    Update the sequence to remove the DMUIF reset and the redundant
    writes in the release.
    
    Reviewed-by: Ovidiu Bunea <ovidiu.bunea@amd.com>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Wayne Lin <wayne.lin@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/pm: fix null pointer access [+ + +]
Author: Umio Yasuno <coelacanth_dream@protonmail.com>
Date:   Tue Jul 15 14:44:35 2025 +0000

    drm/amd/pm: fix null pointer access
    
    [ Upstream commit d524d40e3a6152a3ea1125af729f8cd8ca65efde ]
    
    Writing a string without delimiters (' ', '\n', '\0') to the under
    gpu_od/fan_ctrl sysfs or pp_power_profile_mode for the CUSTOM profile
    will result in a null pointer dereference.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4401
    Signed-off-by: Umio Yasuno <coelacanth_dream@protonmail.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd: Allow printing VanGogh OD SCLK levels without setting dpm to manual [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Sun Jun 8 22:12:26 2025 -0500

    drm/amd: Allow printing VanGogh OD SCLK levels without setting dpm to manual
    
    [ Upstream commit 2d1ec1e955414e8e8358178011c35afca1a1c0b1 ]
    
    Several other ASICs allow printing OD SCLK levels without setting DPM
    control to manual.  When OD is disabled it will show the range the
    hardware supports. When OD is enabled it will show what values have
    been programmed. Adjust VanGogh to work the same.
    
    Cc: Pierre-Loup A. Griffais <pgriffais@valvesoftware.com>
    Reported-by: Vicki Pfau <vi@endrift.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Link: https://lore.kernel.org/r/20250609031227.479079-1-superm1@kernel.org
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: fix incorrect vm flags to map bo [+ + +]
Author: Jack Xiao <Jack.Xiao@amd.com>
Date:   Mon Aug 11 15:20:55 2025 +0800

    drm/amdgpu: fix incorrect vm flags to map bo
    
    [ Upstream commit 040bc6d0e0e9c814c9c663f6f1544ebaff6824a8 ]
    
    It should use vm flags instead of pte flags
    to specify bo vm attributes.
    
    Fixes: 7946340fa389 ("drm/amdgpu: Move csa related code to separate file")
    Signed-off-by: Jack Xiao <Jack.Xiao@amd.com>
    Reviewed-by: Likun Gao <Likun.Gao@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit b08425fa77ad2f305fe57a33dceb456be03b653f)
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: fix vram reservation issue [+ + +]
Author: YiPeng Chai <YiPeng.Chai@amd.com>
Date:   Tue Aug 12 09:17:58 2025 +0800

    drm/amdgpu: fix vram reservation issue
    
    [ Upstream commit 10ef476aad1c848449934e7bec2ab2374333c7b6 ]
    
    The vram block allocation flag must be cleared
    before making vram reservation, otherwise reserving
    addresses within the currently freed memory range
    will always fail.
    
    Fixes: c9cad937c0c5 ("drm/amdgpu: add drm buddy support to amdgpu")
    Signed-off-by: YiPeng Chai <YiPeng.Chai@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit d38eaf27de1b8584f42d6fb3f717b7ec44b3a7a1)
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/imagination: Clear runtime PM errors while resetting the GPU [+ + +]
Author: Alessio Belle <alessio.belle@imgtec.com>
Date:   Tue Jun 24 16:01:31 2025 +0100

    drm/imagination: Clear runtime PM errors while resetting the GPU
    
    [ Upstream commit 551507e0d0bf32ce1d7d27533c4b98307380804c ]
    
    The runtime PM might be left in error state if one of the callbacks
    returned an error, e.g. if the (auto)suspend callback failed following
    a firmware crash.
    
    When that happens, any further attempt to acquire or release a power
    reference will then also fail, making it impossible to do anything else
    with the GPU. The driver logic will eventually reach the reset code.
    
    In pvr_power_reset(), replace pvr_power_get() with a new API
    pvr_power_get_clear() which also attempts to clear any runtime PM error
    state if acquiring a power reference is not possible.
    
    Signed-off-by: Alessio Belle <alessio.belle@imgtec.com>
    Reviewed-by: Matt Coster <matt.coster@imgtec.com>
    Link: https://lore.kernel.org/r/20250624-clear-rpm-errors-gpu-reset-v1-1-b8ff2ae55aac@imgtec.com
    Signed-off-by: Matt Coster <matt.coster@imgtec.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm: Add error handling for krealloc in metadata setup [+ + +]
Author: Yuan Chen <chenyuan@kylinos.cn>
Date:   Fri Jun 27 10:16:43 2025 +0800

    drm/msm: Add error handling for krealloc in metadata setup
    
    [ Upstream commit 1c8c354098ea9d4376a58c96ae6b65288a6f15d8 ]
    
    Function msm_ioctl_gem_info_set_metadata() now checks for krealloc
    failure and returns -ENOMEM, avoiding potential NULL pointer dereference.
    Explicitly avoids __GFP_NOFAIL due to deadlock risks and allocation constraints.
    
    Signed-off-by: Yuan Chen <chenyuan@kylinos.cn>
    Patchwork: https://patchwork.freedesktop.org/patch/661235/
    Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/msm: use trylock for debugfs [+ + +]
Author: Rob Clark <robin.clark@oss.qualcomm.com>
Date:   Sun Jun 29 13:13:22 2025 -0700

    drm/msm: use trylock for debugfs
    
    [ Upstream commit 0a1ff88ec5b60b41ba830c5bf08b6cd8f45ab411 ]
    
    This resolves a potential deadlock vs msm_gem_vm_close().  Otherwise for
    _NO_SHARE buffers msm_gem_describe() could be trying to acquire the
    shared vm resv, while already holding priv->obj_lock.  But _vm_close()
    might drop the last reference to a GEM obj while already holding the vm
    resv, and msm_gem_free_object() needs to grab priv->obj_lock, a locking
    inversion.
    
    OTOH this is only for debugfs and it isn't critical if we undercount by
    skipping a locked obj.  So just use trylock() and move along if we can't
    get the lock.
    
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
    Tested-by: Antonino Maniscalco <antomani103@gmail.com>
    Reviewed-by: Antonino Maniscalco <antomani103@gmail.com>
    Patchwork: https://patchwork.freedesktop.org/patch/661525/
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/ttm: Respect the shrinker core free target [+ + +]
Author: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Date:   Tue Jun 3 12:27:49 2025 +0100

    drm/ttm: Respect the shrinker core free target
    
    [ Upstream commit eac21f8ebeb4f84d703cf41dc3f81d16fa9dc00a ]
    
    Currently the TTM shrinker aborts shrinking as soon as it frees pages from
    any of the page order pools and by doing so it can fail to respect the
    freeing target which was configured by the shrinker core.
    
    We use the wording "can fail" because the number of freed pages will
    depend on the presence of pages in the pools and the order of the pools on
    the LRU list. For example if there are no free pages in the high order
    pools the shrinker core may require multiple passes over the TTM shrinker
    before it will free the default target of 128 pages (assuming there are
    free pages in the low order pools). This inefficiency can be compounded by
    the pool LRU where multiple further calls into the TTM shrinker are
    required to end up looking at the pool with pages.
    
    Improve this by never freeing less than the shrinker core has requested.
    
    At the same time we start reporting the number of scanned pages (freed in
    this case), which prevents the core shrinker from giving up on the TTM
    shrinker too soon and moving on.
    
    v2:
     * Simplify loop logic. (Christian)
     * Improve commit message.
    
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Tvrtko Ursulin <tursulin@ursulin.net>
    Link: https://lore.kernel.org/r/20250603112750.34997-2-tvrtko.ursulin@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/ttm: Should to return the evict error [+ + +]
Author: Emily Deng <Emily.Deng@amd.com>
Date:   Tue Jun 3 17:11:54 2025 +0800

    drm/ttm: Should to return the evict error
    
    [ Upstream commit 4e16a9a00239db5d819197b9a00f70665951bf50 ]
    
    For the evict fail case, the evict error should be returned.
    
    v2: Consider ENOENT case.
    
    v3: Abort directly when the eviction failed for some reason (except for -ENOENT)
     and not wait for the move to finish
    
    Signed-off-by: Emily Deng <Emily.Deng@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Link: https://lore.kernel.org/r/20250603091154.3472646-1-Emily.Deng@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe/xe_query: Use separate iterator while filling GT list [+ + +]
Author: Matt Roper <matthew.d.roper@intel.com>
Date:   Tue Jul 1 13:13:28 2025 -0700

    drm/xe/xe_query: Use separate iterator while filling GT list
    
    [ Upstream commit d4eb4a010262ea7801e576d1033b355910f2f7d4 ]
    
    The 'id' value updated by for_each_gt() is the uapi GT ID of the GTs
    being iterated over, and may skip over values if a GT is not present on
    the device.  Use a separate iterator for GT list array assignments to
    ensure that the array will be filled properly on future platforms where
    index in the GT query list may not match the uapi ID.
    
    v2:
     - Include the missing increment of the iterator.  (Jonathan)
    
    Cc: Jonathan Cavitt <jonathan.cavitt@intel.com>
    Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
    Link: https://lore.kernel.org/r/20250701201320.2514369-16-matthew.d.roper@intel.com
    Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/xe: Make dma-fences compliant with the safe access rules [+ + +]
Author: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Date:   Tue Jun 10 17:42:26 2025 +0100

    drm/xe: Make dma-fences compliant with the safe access rules
    
    [ Upstream commit 6bd90e700b4285e6a7541e00f969cab0d696adde ]
    
    Xe can free some of the data pointed to by the dma-fences it exports. Most
    notably the timeline name can get freed if userspace closes the associated
    submit queue. At the same time the fence could have been exported to a
    third party (for example a sync_fence fd) which will then cause an use-
    after-free on subsequent access.
    
    To make this safe we need to make the driver compliant with the newly
    documented dma-fence rules. Driver has to ensure a RCU grace period
    between signalling a fence and freeing any data pointed to by said fence.
    
    For the timeline name we simply make the queue be freed via kfree_rcu and
    for the shared lock associated with multiple queues we add a RCU grace
    period before freeing the per GT structure holding the lock.
    
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
    Reviewed-by: Matthew Brost <matthew.brost@intel.com>
    Acked-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Tvrtko Ursulin <tursulin@ursulin.net>
    Link: https://lore.kernel.org/r/20250610164226.10817-5-tvrtko.ursulin@igalia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm: renesas: rz-du: mipi_dsi: Add min check for VCLK range [+ + +]
Author: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Date:   Mon Jun 9 23:56:22 2025 +0100

    drm: renesas: rz-du: mipi_dsi: Add min check for VCLK range
    
    [ Upstream commit e37a95d01d5acce211da8446fefbd8684c67f516 ]
    
    The VCLK range for Renesas RZ/G2L SoC is 5.803 MHz to 148.5 MHz. Add a
    minimum clock check in the mode_valid callback to ensure that the clock
    value does not fall below the valid range.
    
    Co-developed-by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
    Signed-off-by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://lore.kernel.org/r/20250609225630.502888-2-prabhakar.mahadev-lad.rj@bp.renesas.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EDAC/synopsys: Clear the ECC counters on init [+ + +]
Author: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
Date:   Sun Jul 13 10:37:53 2025 +0530

    EDAC/synopsys: Clear the ECC counters on init
    
    [ Upstream commit b1dc7f097b78eb8d25b071ead2384b07a549692b ]
    
    Clear the ECC error and counter registers during initialization/probe to avoid
    reporting stale errors that may have occurred before EDAC registration.
    
    For that, unify the Zynq and ZynqMP ECC state reading paths and simplify the
    code.
    
      [ bp: Massage commit message.
        Fix an -Wsometimes-uninitialized warning as reported by
        Reported-by: kernel test robot <lkp@intel.com>
        Closes: https://lore.kernel.org/oe-kbuild-all/202507141048.obUv3ZUm-lkp@intel.com ]
    
    Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/20250713050753.7042-1-shubhrajyoti.datta@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
et131x: Add missing check after DMA map [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Wed Jul 16 11:47:30 2025 +0200

    et131x: Add missing check after DMA map
    
    [ Upstream commit d61f6cb6f6ef3c70d2ccc0d9c85c508cb8017da9 ]
    
    The DMA map functions can fail and should be tested for errors.
    If the mapping fails, unmap and return an error.
    
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Acked-by: Mark Einon <mark.einon@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250716094733.28734-2-fourier.thomas@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
eventpoll: Fix semi-unbounded recursion [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Fri Jul 11 18:33:36 2025 +0200

    eventpoll: Fix semi-unbounded recursion
    
    commit f2e467a48287c868818085aa35389a224d226732 upstream.
    
    Ensure that epoll instances can never form a graph deeper than
    EP_MAX_NESTS+1 links.
    
    Currently, ep_loop_check_proc() ensures that the graph is loop-free and
    does some recursion depth checks, but those recursion depth checks don't
    limit the depth of the resulting tree for two reasons:
    
     - They don't look upwards in the tree.
     - If there are multiple downwards paths of different lengths, only one of
       the paths is actually considered for the depth check since commit
       28d82dc1c4ed ("epoll: limit paths").
    
    Essentially, the current recursion depth check in ep_loop_check_proc() just
    serves to prevent it from recursing too deeply while checking for loops.
    
    A more thorough check is done in reverse_path_check() after the new graph
    edge has already been created; this checks, among other things, that no
    paths going upwards from any non-epoll file with a length of more than 5
    edges exist. However, this check does not apply to non-epoll files.
    
    As a result, it is possible to recurse to a depth of at least roughly 500,
    tested on v6.15. (I am unsure if deeper recursion is possible; and this may
    have changed with commit 8c44dac8add7 ("eventpoll: Fix priority inversion
    problem").)
    
    To fix it:
    
    1. In ep_loop_check_proc(), note the subtree depth of each visited node,
    and use subtree depths for the total depth calculation even when a subtree
    has already been visited.
    2. Add ep_get_upwards_depth_proc() for similarly determining the maximum
    depth of an upwards walk.
    3. In ep_loop_check(), use these values to limit the total path length
    between epoll nodes to EP_MAX_NESTS edges.
    
    Fixes: 22bacca48a17 ("epoll: prevent creating circular epoll structures")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jann Horn <jannh@google.com>
    Link: https://lore.kernel.org/20250711-epoll-recursion-fix-v1-1-fb2457c33292@google.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
exfat: add cluster chain loop check for dir [+ + +]
Author: Yuezhang Mo <Yuezhang.Mo@sony.com>
Date:   Tue Mar 18 17:00:49 2025 +0800

    exfat: add cluster chain loop check for dir
    
    [ Upstream commit 99f9a97dce39ad413c39b92c90393bbd6778f3fd ]
    
    An infinite loop may occur if the following conditions occur due to
    file system corruption.
    
    (1) Condition for exfat_count_dir_entries() to loop infinitely.
        - The cluster chain includes a loop.
        - There is no UNUSED entry in the cluster chain.
    
    (2) Condition for exfat_create_upcase_table() to loop infinitely.
        - The cluster chain of the root directory includes a loop.
        - There are no UNUSED entry and up-case table entry in the cluster
          chain of the root directory.
    
    (3) Condition for exfat_load_bitmap() to loop infinitely.
        - The cluster chain of the root directory includes a loop.
        - There are no UNUSED entry and bitmap entry in the cluster chain
          of the root directory.
    
    (4) Condition for exfat_find_dir_entry() to loop infinitely.
        - The cluster chain includes a loop.
        - The unused directory entries were exhausted by some operation.
    
    (5) Condition for exfat_check_dir_empty() to loop infinitely.
        - The cluster chain includes a loop.
        - The unused directory entries were exhausted by some operation.
        - All files and sub-directories under the directory are deleted.
    
    This commit adds checks to break the above infinite loop.
    
    Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext2: Handle fiemap on empty files to prevent EINVAL [+ + +]
Author: Wei Gao <wegao@suse.com>
Date:   Fri Jun 13 11:18:38 2025 -0400

    ext2: Handle fiemap on empty files to prevent EINVAL
    
    [ Upstream commit a099b09a3342a0b28ea330e405501b5b4d0424b4 ]
    
    Previously, ext2_fiemap would unconditionally apply "len = min_t(u64, len,
    i_size_read(inode));", When inode->i_size was 0 (for an empty file), this
    would reduce the requested len to 0. Passing len = 0 to iomap_fiemap could
    then result in an -EINVAL error, even for valid queries on empty files.
    
    Link: https://github.com/linux-test-project/ltp/issues/1246
    Signed-off-by: Wei Gao <wegao@suse.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://patch.msgid.link/20250613152402.3432135-1-wegao@suse.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext4: do not BUG when INLINE_DATA_FL lacks system.data xattr [+ + +]
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Jul 17 10:54:34 2025 -0400

    ext4: do not BUG when INLINE_DATA_FL lacks system.data xattr
    
    [ Upstream commit 099b847ccc6c1ad2f805d13cfbcc83f5b6d4bc42 ]
    
    A syzbot fuzzed image triggered a BUG_ON in ext4_update_inline_data()
    when an inode had the INLINE_DATA_FL flag set but was missing the
    system.data extended attribute.
    
    Since this can happen due to a maiciouly fuzzed file system, we
    shouldn't BUG, but rather, report it as a corrupted file system.
    
    Add similar replacements of BUG_ON with EXT4_ERROR_INODE() ii
    ext4_create_inline_data() and ext4_inline_data_truncate().
    
    Reported-by: syzbot+544248a761451c0df72f@syzkaller.appspotmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ext4: fix largest free orders lists corruption on mb_optimize_scan switch [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Jul 14 21:03:21 2025 +0800

    ext4: fix largest free orders lists corruption on mb_optimize_scan switch
    
    commit 7d345aa1fac4c2ec9584fbd6f389f2c2368671d5 upstream.
    
    The grp->bb_largest_free_order is updated regardless of whether
    mb_optimize_scan is enabled. This can lead to inconsistencies between
    grp->bb_largest_free_order and the actual s_mb_largest_free_orders list
    index when mb_optimize_scan is repeatedly enabled and disabled via remount.
    
    For example, if mb_optimize_scan is initially enabled, largest free
    order is 3, and the group is in s_mb_largest_free_orders[3]. Then,
    mb_optimize_scan is disabled via remount, block allocations occur,
    updating largest free order to 2. Finally, mb_optimize_scan is re-enabled
    via remount, more block allocations update largest free order to 1.
    
    At this point, the group would be removed from s_mb_largest_free_orders[3]
    under the protection of s_mb_largest_free_orders_locks[2]. This lock
    mismatch can lead to list corruption.
    
    To fix this, whenever grp->bb_largest_free_order changes, we now always
    attempt to remove the group from its old order list. However, we only
    insert the group into the new order list if `mb_optimize_scan` is enabled.
    This approach helps prevent lock inconsistencies and ensures the data in
    the order lists remains reliable.
    
    Fixes: 196e402adf2e ("ext4: improve cr 0 / cr 1 group scanning")
    CC: stable@vger.kernel.org
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
    Link: https://patch.msgid.link/20250714130327.1830534-12-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fix zombie groups in average fragment size lists [+ + +]
Author: Baokun Li <libaokun1@huawei.com>
Date:   Mon Jul 14 21:03:20 2025 +0800

    ext4: fix zombie groups in average fragment size lists
    
    commit 1c320d8e92925bb7615f83a7b6e3f402a5c2ca63 upstream.
    
    Groups with no free blocks shouldn't be in any average fragment size list.
    However, when all blocks in a group are allocated(i.e., bb_fragments or
    bb_free is 0), we currently skip updating the average fragment size, which
    means the group isn't removed from its previous s_mb_avg_fragment_size[old]
    list.
    
    This created "zombie" groups that were always skipped during traversal as
    they couldn't satisfy any block allocation requests, negatively impacting
    traversal efficiency.
    
    Therefore, when a group becomes completely full, bb_avg_fragment_size_order
    is now set to -1. If the old order was not -1, a removal operation is
    performed; if the new order is not -1, an insertion is performed.
    
    Fixes: 196e402adf2e ("ext4: improve cr 0 / cr 1 group scanning")
    CC: stable@vger.kernel.org
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
    Link: https://patch.msgid.link/20250714130327.1830534-11-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: initialize superblock fields in the kballoc-test.c kunit tests [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Fri Jul 25 10:15:50 2025 +0800

    ext4: initialize superblock fields in the kballoc-test.c kunit tests
    
    commit 82e6381e23f1ea7a14f418215068aaa2ca046c84 upstream.
    
    Various changes in the "ext4: better scalability for ext4 block
    allocation" patch series have resulted in kunit test failures, most
    notably in the test_new_blocks_simple and the test_mb_mark_used tests.
    The root cause of these failures is that various in-memory ext4 data
    structures were not getting initialized, and while previous versions
    of the functions exercised by the unit tests didn't use these
    structure members, this was arguably a test bug.
    
    Since one of the patches in the block allocation scalability patches
    is a fix which is has a cc:stable tag, this commit also has a
    cc:stable tag.
    
    CC: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250714130327.1830534-1-libaokun1@huawei.com
    Link: https://patch.msgid.link/20250725021550.3177573-1-yi.zhang@huaweicloud.com
    Link: https://patch.msgid.link/20250725021654.3188798-1-yi.zhang@huaweicloud.com
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Closes: https://lore.kernel.org/linux-ext4/b0635ad0-7ebf-4152-a69b-58e7e87d5085@roeck-us.net/
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
f2fs: check the generic conditions first [+ + +]
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Mon Jun 30 16:06:09 2025 +0000

    f2fs: check the generic conditions first
    
    [ Upstream commit e23ab8028de0d92df5921a570f5212c0370db3b5 ]
    
    Let's return errors caught by the generic checks. This fixes generic/494 where
    it expects to see EBUSY by setattr_prepare instead of EINVAL by f2fs for active
    swapfile.
    
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fbdev: fix potential buffer overflow in do_register_framebuffer() [+ + +]
Author: Yongzhen Zhang <zhangyongzhen@kylinos.cn>
Date:   Tue Jul 1 17:07:04 2025 +0800

    fbdev: fix potential buffer overflow in do_register_framebuffer()
    
    [ Upstream commit 523b84dc7ccea9c4d79126d6ed1cf9033cf83b05 ]
    
    The current implementation may lead to buffer overflow when:
    1.  Unregistration creates NULL gaps in registered_fb[]
    2.  All array slots become occupied despite num_registered_fb < FB_MAX
    3.  The registration loop exceeds array bounds
    
    Add boundary check to prevent registered_fb[FB_MAX] access.
    
    Signed-off-by: Yongzhen Zhang <zhangyongzhen@kylinos.cn>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fbdev: Fix vmalloc out-of-bounds write in fast_imageblit [+ + +]
Author: Sravan Kumar Gundu <sravankumarlpu@gmail.com>
Date:   Thu Jul 31 15:36:18 2025 -0500

    fbdev: Fix vmalloc out-of-bounds write in fast_imageblit
    
    commit af0db3c1f898144846d4c172531a199bb3ca375d upstream.
    
    This issue triggers when a userspace program does an ioctl
    FBIOPUT_CON2FBMAP by passing console number and frame buffer number.
    Ideally this maps console to frame buffer and updates the screen if
    console is visible.
    
    As part of mapping it has to do resize of console according to frame
    buffer info. if this resize fails and returns from vc_do_resize() and
    continues further. At this point console and new frame buffer are mapped
    and sets display vars. Despite failure still it continue to proceed
    updating the screen at later stages where vc_data is related to previous
    frame buffer and frame buffer info and display vars are mapped to new
    frame buffer and eventully leading to out-of-bounds write in
    fast_imageblit(). This bheviour is excepted only when fg_console is
    equal to requested console which is a visible console and updates screen
    with invalid struct references in fbcon_putcs().
    
    Reported-and-tested-by: syzbot+c4b7aa0513823e2ea880@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=c4b7aa0513823e2ea880
    Signed-off-by: Sravan Kumar Gundu <sravankumarlpu@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
firmware: arm_ffa: Change initcall level of ffa_init() to rootfs_initcall [+ + +]
Author: Yeoreum Yun <yeoreum.yun@arm.com>
Date:   Sat Jul 19 13:27:02 2025 +0300

    firmware: arm_ffa: Change initcall level of ffa_init() to rootfs_initcall
    
    [ Upstream commit 0e0546eabcd6c19765a8dbf5b5db3723e7b0ea75 ]
    
    The Linux IMA (Integrity Measurement Architecture) subsystem used for
    secure boot, file integrity, or remote attestation cannot be a loadable
    module for few reasons listed below:
    
     o Boot-Time Integrity: IMA’s main role is to measure and appraise files
     before they are used. This includes measuring critical system files during
     early boot (e.g., init, init scripts, login binaries). If IMA were a
     module, it would be loaded too late to cover those.
    
     o TPM Dependency: IMA integrates tightly with the TPM to record
     measurements into PCRs. The TPM must be initialized early (ideally before
     init_ima()), which aligns with IMA being built-in.
    
     o Security Model: IMA is part of a Trusted Computing Base (TCB). Making it
     a module would weaken the security model, as a potentially compromised
     system could delay or tamper with its initialization.
    
    IMA must be built-in to ensure it starts measuring from the earliest
    possible point in boot which inturn implies TPM must be initialised and
    ready to use before IMA.
    
    To enable integration of tpm_event_log with the IMA subsystem, the TPM
    drivers (tpm_crb and tpm_crb_ffa) also needs to be built-in. However with
    FF-A driver also being initialised at device initcall level, it can lead to
    an initialization order issue where:
     - crb_acpi_driver_init() may run before tpm_crb_ffa_driver()_init and
       ffa_init()
     - As a result, probing the TPM device via CRB over FFA is deferred
     - ima_init() (called as a late initcall) runs before deferred probe
       completes, IMA fails to find the TPM and logs the below error:
    
       |  ima: No TPM chip found, activating TPM-bypass!
    
    Eventually it fails to generate boot_aggregate with PCR values.
    
    Because of the above stated dependency, the ffa driver needs to initialised
    before tpm_crb_ffa module to ensure IMA finds the TPM successfully when
    present.
    
    [ jarkko: reformatted some of the paragraphs because they were going past
      the 75 character boundary. ]
    
    Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
    Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

firmware: arm_scmi: Convert to SYSTEM_SLEEP_PM_OPS [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jul 9 09:01:01 2025 +0200

    firmware: arm_scmi: Convert to SYSTEM_SLEEP_PM_OPS
    
    commit 62d6b81e8bd207ad44eff39d1a0fe17f0df510a5 upstream.
    
    The old SET_SYSTEM_SLEEP_PM_OPS() macro leads to a warning about an
    unused function:
    
      |  drivers/firmware/arm_scmi/scmi_power_control.c:363:12: error:
      |     'scmi_system_power_resume' defined but not used [-Werror=unused-function]
      |         static int scmi_system_power_resume(struct device *dev)
    
    The proper way to do this these days is to use SYSTEM_SLEEP_PM_OPS()
    and pm_sleep_ptr().
    
    Fixes: 9a0658d3991e ("firmware: arm_scmi: power_control: Ensure SCMI_SYSPOWER_IDLE is set early during resume")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Peng Fan <peng.fan@nxp.com>
    Message-Id: <20250709070107.1388512-1-arnd@kernel.org>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

firmware: arm_scmi: power_control: Ensure SCMI_SYSPOWER_IDLE is set early during resume [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Fri Jul 4 11:09:36 2025 +0800

    firmware: arm_scmi: power_control: Ensure SCMI_SYSPOWER_IDLE is set early during resume
    
    [ Upstream commit 9a0658d3991e6c82df87584b253454842f22f965 ]
    
    Fix a race condition where a second suspend notification from another
    SCMI agent wakes the system before SCMI_SYSPOWER_IDLE is set, leading
    to ignored suspend requests. This is due to interrupts triggering early
    execution of `scmi_userspace_notifier()` before the SCMI state is updated.
    
    To resolve this, set SCMI_SYSPOWER_IDLE earlier in the device resume
    path, prior to `thaw_processes()`. This ensures the SCMI state is
    correct when the notifier runs, allowing the system to suspend again
    as expected.
    
    On some platforms using SCMI, SCP cannot distinguish between CPU idle
    and suspend since both result in cluster power-off. By explicitly setting
    the idle state early, the Linux SCMI agent can correctly re-suspend in
    response to external notifications.
    
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Message-Id: <20250704-scmi-pm-v2-2-9316cec2f9cc@nxp.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

firmware: tegra: Fix IVC dependency problems [+ + +]
Author: Thierry Reding <treding@nvidia.com>
Date:   Tue May 6 15:31:16 2025 +0200

    firmware: tegra: Fix IVC dependency problems
    
    [ Upstream commit 78eb18020a88a4eed15f5af7700ed570642ff8f1 ]
    
    The IVC code is library code that other drivers need to select if they
    need that library. However, if the symbol is user-selectable this can
    lead to conflicts.
    
    Fix this by making the symbol only selectable for COMPILE_TEST and add
    a select TEGRA_IVC to TEGRA_BPMP, which is currently the only user.
    
    Link: https://lore.kernel.org/r/20250506133118.1011777-10-thierry.reding@gmail.com
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: fix locking in efi_secret_unlink() [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue May 14 08:48:58 2024 -0600

    fix locking in efi_secret_unlink()
    
    [ Upstream commit 2c58d42de71f9c73e40afacc9d062892d2cc8862 ]
    
    We used to need securityfs_remove() to undo simple_pin_fs() done when
    the file had been created and to drop the second extra reference
    taken at the same time.  Now that neither is needed (or done by
    securityfs_remove()), we can simply call simple_unlink() and be done
    with that - the broken games with locking had been there only for the
    sake of securityfs_remove().
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs/ntfs3: Add sanity check for file name [+ + +]
Author: Lizhi Xu <lizhi.xu@windriver.com>
Date:   Fri Jun 6 13:16:16 2025 +0800

    fs/ntfs3: Add sanity check for file name
    
    [ Upstream commit e841ecb139339602bc1853f5f09daa5d1ea920a2 ]
    
    The length of the file name should be smaller than the directory entry size.
    
    Reported-by: syzbot+598057afa0f49e62bd23@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=598057afa0f49e62bd23
    Signed-off-by: Lizhi Xu <lizhi.xu@windriver.com>
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fs/ntfs3: correctly create symlink for relative path [+ + +]
Author: Rong Zhang <ulin0208@gmail.com>
Date:   Wed May 7 15:35:34 2025 +0800

    fs/ntfs3: correctly create symlink for relative path
    
    [ Upstream commit b1e9d89408f402858c00103f9831b25ffa0994d3 ]
    
    After applying this patch, could correctly create symlink:
    
    ln -s "relative/path/to/file" symlink
    
    Signed-off-by: Rong Zhang <ulin0208@gmail.com>
    [almaz.alexandrovich@paragon-software.com: added cpu_to_le32 macro to
    rs->Flags assignment]
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs/orangefs: use snprintf() instead of sprintf() [+ + +]
Author: Amir Mohammad Jahangirzad <a.jahangirzad@gmail.com>
Date:   Sun Jun 8 20:05:59 2025 +0330

    fs/orangefs: use snprintf() instead of sprintf()
    
    [ Upstream commit cdfa1304657d6f23be8fd2bb0516380a3c89034e ]
    
    sprintf() is discouraged for use with bounded destination buffers
    as it does not prevent buffer overflows when the formatted output
    exceeds the destination buffer size. snprintf() is a safer
    alternative as it limits the number of bytes written and ensures
    NUL-termination.
    
    Replace sprintf() with snprintf() for copying the debug string
    into a temporary buffer, using ORANGEFS_MAX_DEBUG_STRING_LEN as
    the maximum size to ensure safe formatting and prevent memory
    corruption in edge cases.
    
    EDIT: After this patch sat on linux-next for a few days, Dan
    Carpenter saw it and suggested that I use scnprintf instead of
    snprintf. I made the change and retested.
    
    Signed-off-by: Amir Mohammad Jahangirzad <a.jahangirzad@gmail.com>
    Signed-off-by: Mike Marshall <hubcap@omnibond.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs: Prevent file descriptor table allocations exceeding INT_MAX [+ + +]
Author: Sasha Levin <sashal@kernel.org>
Date:   Sun Jun 29 03:40:21 2025 -0400

    fs: Prevent file descriptor table allocations exceeding INT_MAX
    
    commit 04a2c4b4511d186b0fce685da21085a5d4acd370 upstream.
    
    When sysctl_nr_open is set to a very high value (for example, 1073741816
    as set by systemd), processes attempting to use file descriptors near
    the limit can trigger massive memory allocation attempts that exceed
    INT_MAX, resulting in a WARNING in mm/slub.c:
    
      WARNING: CPU: 0 PID: 44 at mm/slub.c:5027 __kvmalloc_node_noprof+0x21a/0x288
    
    This happens because kvmalloc_array() and kvmalloc() check if the
    requested size exceeds INT_MAX and emit a warning when the allocation is
    not flagged with __GFP_NOWARN.
    
    Specifically, when nr_open is set to 1073741816 (0x3ffffff8) and a
    process calls dup2(oldfd, 1073741880), the kernel attempts to allocate:
    - File descriptor array: 1073741880 * 8 bytes = 8,589,935,040 bytes
    - Multiple bitmaps: ~400MB
    - Total allocation size: > 8GB (exceeding INT_MAX = 2,147,483,647)
    
    Reproducer:
    1. Set /proc/sys/fs/nr_open to 1073741816:
       # echo 1073741816 > /proc/sys/fs/nr_open
    
    2. Run a program that uses a high file descriptor:
       #include <unistd.h>
       #include <sys/resource.h>
    
       int main() {
           struct rlimit rlim = {1073741824, 1073741824};
           setrlimit(RLIMIT_NOFILE, &rlim);
           dup2(2, 1073741880);  // Triggers the warning
           return 0;
       }
    
    3. Observe WARNING in dmesg at mm/slub.c:5027
    
    systemd commit a8b627a introduced automatic bumping of fs.nr_open to the
    maximum possible value. The rationale was that systems with memory
    control groups (memcg) no longer need separate file descriptor limits
    since memory is properly accounted. However, this change overlooked
    that:
    
    1. The kernel's allocation functions still enforce INT_MAX as a maximum
       size regardless of memcg accounting
    2. Programs and tests that legitimately test file descriptor limits can
       inadvertently trigger massive allocations
    3. The resulting allocations (>8GB) are impractical and will always fail
    
    systemd's algorithm starts with INT_MAX and keeps halving the value
    until the kernel accepts it. On most systems, this results in nr_open
    being set to 1073741816 (0x3ffffff8), which is just under 1GB of file
    descriptors.
    
    While processes rarely use file descriptors near this limit in normal
    operation, certain selftests (like
    tools/testing/selftests/core/unshare_test.c) and programs that test file
    descriptor limits can trigger this issue.
    
    Fix this by adding a check in alloc_fdtable() to ensure the requested
    allocation size does not exceed INT_MAX. This causes the operation to
    fail with -EMFILE instead of triggering a kernel warning and avoids the
    impractical >8GB memory allocation request.
    
    Fixes: 9cfe015aa424 ("get rid of NR_OPEN and introduce a sysctl_nr_open")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Link: https://lore.kernel.org/20250629074021.1038845-1-sashal@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fscrypt: Don't use problematic non-inline crypto engines [+ + +]
Author: Eric Biggers <ebiggers@kernel.org>
Date:   Fri Jul 4 00:03:22 2025 -0700

    fscrypt: Don't use problematic non-inline crypto engines
    
    commit b41c1d8d07906786c60893980d52688f31d114a6 upstream.
    
    Make fscrypt no longer use Crypto API drivers for non-inline crypto
    engines, even when the Crypto API prioritizes them over CPU-based code
    (which unfortunately it often does).  These drivers tend to be really
    problematic, especially for fscrypt's workload.  This commit has no
    effect on inline crypto engines, which are different and do work well.
    
    Specifically, exclude drivers that have CRYPTO_ALG_KERN_DRIVER_ONLY or
    CRYPTO_ALG_ALLOCATES_MEMORY set.  (Later, CRYPTO_ALG_ASYNC should be
    excluded too.  That's omitted for now to keep this commit backportable,
    since until recently some CPU-based code had CRYPTO_ALG_ASYNC set.)
    
    There are two major issues with these drivers: bugs and performance.
    
    First, these drivers tend to be buggy.  They're fundamentally much more
    error-prone and harder to test than the CPU-based code.  They often
    don't get tested before kernel releases, and even if they do, the crypto
    self-tests don't properly test these drivers.  Released drivers have
    en/decrypted or hashed data incorrectly.  These bugs cause issues for
    fscrypt users who often didn't even want to use these drivers, e.g.:
    
    - https://github.com/google/fscryptctl/issues/32
    - https://github.com/google/fscryptctl/issues/9
    - https://lore.kernel.org/r/PH0PR02MB731916ECDB6C613665863B6CFFAA2@PH0PR02MB7319.namprd02.prod.outlook.com
    
    These drivers have also similarly caused issues for dm-crypt users,
    including data corruption and deadlocks.  Since Linux v5.10, dm-crypt
    has disabled most of them by excluding CRYPTO_ALG_ALLOCATES_MEMORY.
    
    Second, these drivers tend to be *much* slower than the CPU-based code.
    This may seem counterintuitive, but benchmarks clearly show it.  There's
    a *lot* of overhead associated with going to a hardware driver, off the
    CPU, and back again.  To prove this, I gathered as many systems with
    this type of crypto engine as I could, and I measured synchronous
    encryption of 4096-byte messages (which matches fscrypt's workload):
    
    Intel Emerald Rapids server:
       AES-256-XTS:
          xts-aes-vaes-avx512   16171 MB/s  [CPU-based, Vector AES]
          qat_aes_xts             289 MB/s  [Offload, Intel QuickAssist]
    
    Qualcomm SM8650 HDK:
       AES-256-XTS:
          xts-aes-ce             4301 MB/s  [CPU-based, ARMv8 Crypto Extensions]
          xts-aes-qce              73 MB/s  [Offload, Qualcomm Crypto Engine]
    
    i.MX 8M Nano LPDDR4 EVK:
       AES-256-XTS:
          xts-aes-ce              647 MB/s   [CPU-based, ARMv8 Crypto Extensions]
          xts(ecb-aes-caam)        20 MB/s   [Offload, CAAM]
       AES-128-CBC-ESSIV:
          essiv(cbc-aes-caam,sha256-lib) 23 MB/s   [Offload, CAAM]
    
    STM32MP157F-DK2:
       AES-256-XTS:
          xts-aes-neonbs         13.2 MB/s   [CPU-based, ARM NEON]
          xts(stm32-ecb-aes)     3.1 MB/s    [Offload, STM32 crypto engine]
       AES-128-CBC-ESSIV:
          essiv(cbc-aes-neonbs,sha256-lib)
                                 14.7 MB/s   [CPU-based, ARM NEON]
          essiv(stm32-cbc-aes,sha256-lib)
                                 3.2 MB/s    [Offload, STM32 crypto engine]
       Adiantum:
          adiantum(xchacha12-arm,aes-arm,nhpoly1305-neon)
                                 52.8 MB/s   [CPU-based, ARM scalar + NEON]
    
    So, there was no case in which the crypto engine was even *close* to
    being faster.  On the first three, which have AES instructions in the
    CPU, the CPU was 30 to 55 times faster (!).  Even on STM32MP157F-DK2
    which has a Cortex-A7 CPU that doesn't have AES instructions, AES was
    over 4 times faster on the CPU.  And Adiantum encryption, which is what
    actually should be used on CPUs like that, was over 17 times faster.
    
    Other justifications that have been given for these non-inline crypto
    engines (almost always coming from the hardware vendors, not actual
    users) don't seem very plausible either:
    
      - The crypto engine throughput could be improved by processing
        multiple requests concurrently.  Currently irrelevant to fscrypt,
        since it doesn't do that.  This would also be complex, and unhelpful
        in many cases.  2 of the 4 engines I tested even had only one queue.
    
      - Some of the engines, e.g. STM32, support hardware keys.  Also
        currently irrelevant to fscrypt, since it doesn't support these.
        Interestingly, the STM32 driver itself doesn't support this either.
    
      - Free up CPU for other tasks and/or reduce energy usage.  Not very
        plausible considering the "short" message length, driver overhead,
        and scheduling overhead.  There's just very little time for the CPU
        to do something else like run another task or enter low-power state,
        before the message finishes and it's time to process the next one.
    
      - Some of these engines resist power analysis and electromagnetic
        attacks, while the CPU-based crypto generally does not.  In theory,
        this sounds great.  In practice, if this benefit requires the use of
        an off-CPU offload that massively regresses performance and has a
        low-quality, buggy driver, the price for this hardening (which is
        not relevant to most fscrypt users, and tends to be incomplete) is
        just too high.  Inline crypto engines are much more promising here,
        as are on-CPU solutions like RISC-V High Assurance Cryptography.
    
    Fixes: b30ab0e03407 ("ext4 crypto: add ext4 encryption facilities")
    Cc: stable@vger.kernel.org
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20250704070322.20692-1-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gfs2: Set .migrate_folio in gfs2_{rgrp,meta}_aops [+ + +]
Author: Andrew Price <anprice@redhat.com>
Date:   Mon Jul 14 16:21:15 2025 +0100

    gfs2: Set .migrate_folio in gfs2_{rgrp,meta}_aops
    
    [ Upstream commit 5c8f12cf1e64e0e8e6cb80b0c935389973e8be8d ]
    
    Clears up the warning added in 7ee3647243e5 ("migrate: Remove call to
    ->writepage") that occurs in various xfstests, causing "something found
    in dmesg" failures.
    
    [  341.136573] gfs2_meta_aops does not implement migrate_folio
    [  341.136953] WARNING: CPU: 1 PID: 36 at mm/migrate.c:944 move_to_new_folio+0x2f8/0x300
    
    Signed-off-by: Andrew Price <anprice@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: Validate i_depth for exhash directories [+ + +]
Author: Andrew Price <anprice@redhat.com>
Date:   Wed Jul 16 14:12:07 2025 +0100

    gfs2: Validate i_depth for exhash directories
    
    [ Upstream commit 557c024ca7250bb65ae60f16c02074106c2f197b ]
    
    A fuzzer test introduced corruption that ends up with a depth of 0 in
    dir_e_read(), causing an undefined shift by 32 at:
    
      index = hash >> (32 - dip->i_depth);
    
    As calculated in an open-coded way in dir_make_exhash(), the minimum
    depth for an exhash directory is ilog2(sdp->sd_hash_ptrs) and 0 is
    invalid as sdp->sd_hash_ptrs is fixed as sdp->bsize / 16 at mount time.
    
    So we can avoid the undefined behaviour by checking for depth values
    lower than the minimum in gfs2_dinode_in(). Values greater than the
    maximum are already being checked for there.
    
    Also switch the calculation in dir_make_exhash() to use ilog2() to
    clarify how the depth is calculated.
    
    Tested with the syzkaller repro.c and xfstests '-g quick'.
    
    Reported-by: syzbot+4708579bb230a0582a57@syzkaller.appspotmail.com
    Signed-off-by: Andrew Price <anprice@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: mlxbf2: use platform_get_irq_optional() [+ + +]
Author: David Thompson <davthompson@nvidia.com>
Date:   Mon Jul 28 10:46:19 2025 -0400

    gpio: mlxbf2: use platform_get_irq_optional()
    
    commit 63c7bc53a35e785accdc2ceab8f72d94501931ab upstream.
    
    The gpio-mlxbf2 driver interfaces with four GPIO controllers,
    device instances 0-3. There are two IRQ resources shared between
    the four controllers, and they are found in the ACPI table for
    instances 0 and 3. The driver should not use platform_get_irq(),
    otherwise this error is logged when probing instances 1 and 2:
      mlxbf2_gpio MLNXBF22:01: error -ENXIO: IRQ index 0 not found
    
    Fixes: 2b725265cb08 ("gpio: mlxbf2: Introduce IRQ support")
    Cc: stable@vger.kernel.org
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Reviewed-by: Shravan Kumar Ramani <shravankr@nvidia.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20250728144619.29894-1-davthompson@nvidia.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: mlxbf3: use platform_get_irq_optional() [+ + +]
Author: David Thompson <davthompson@nvidia.com>
Date:   Mon Aug 11 13:50:45 2025 -0400

    gpio: mlxbf3: use platform_get_irq_optional()
    
    commit 810bd9066fb1871b8a9528f31f2fdbf2a8b73bf2 upstream.
    
    The gpio-mlxbf3 driver interfaces with two GPIO controllers,
    device instance 0 and 1. There is a single IRQ resource shared
    between the two controllers, and it is found in the ACPI table for
    device instance 0. The driver should not use platform_get_irq(),
    otherwise this error is logged when probing instance 1:
        mlxbf3_gpio MLNXBF33:01: error -ENXIO: IRQ index 0 not found
    
    Cc: stable@vger.kernel.org
    Fixes: cd33f216d241 ("gpio: mlxbf3: Add gpio driver support")
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/ce70b98a201ce82b9df9aa80ac7a5eeaa2268e52.1754928650.git.davthompson@nvidia.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: tps65912: check the return value of regmap_update_bits() [+ + +]
Author: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Date:   Mon Jul 7 09:50:15 2025 +0200

    gpio: tps65912: check the return value of regmap_update_bits()
    
    [ Upstream commit a0b2a6bbff8c26aafdecd320f38f52c341d5cafa ]
    
    regmap_update_bits() can fail, check its return value like we do
    elsewhere in the driver.
    
    Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-2-35668aaaf6d2@linaro.org
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gpio: virtio: Fix config space reading. [+ + +]
Author: Harald Mommer <harald.mommer@oss.qualcomm.com>
Date:   Thu Jul 24 16:36:53 2025 +0200

    gpio: virtio: Fix config space reading.
    
    commit 4740e1e2f320061c2f0dbadc0dd3dfb58df986d5 upstream.
    
    Quote from the virtio specification chapter 4.2.2.2:
    
    "For the device-specific configuration space, the driver MUST use 8 bit
    wide accesses for 8 bit wide fields, 16 bit wide and aligned accesses
    for 16 bit wide fields and 32 bit wide and aligned accesses for 32 and
    64 bit wide fields."
    
    Signed-off-by: Harald Mommer <harald.mommer@oss.qualcomm.com>
    Cc: stable@vger.kernel.org
    Fixes: 3a29355a22c0 ("gpio: Add virtio-gpio driver")
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Link: https://lore.kernel.org/r/20250724143718.5442-2-harald.mommer@oss.qualcomm.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: wcd934x: check the return value of regmap_update_bits() [+ + +]
Author: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Date:   Wed Jul 9 08:41:39 2025 +0200

    gpio: wcd934x: check the return value of regmap_update_bits()
    
    [ Upstream commit ff0f0d7c6587e38c308be9905e36f86e98fb9c1f ]
    
    regmap_update_bits() can fail so check its return value in
    wcd_gpio_direction_output() for consistency with the rest of the code
    and propagate any errors.
    
    Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-2-b8950f69618d@linaro.org
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gve: Return error for unknown admin queue command [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Sun Jun 15 22:45:01 2025 -0700

    gve: Return error for unknown admin queue command
    
    [ Upstream commit b11344f63fdd9e8c5121148a6965b41079071dd2 ]
    
    In gve_adminq_issue_cmd(), return -EINVAL instead of 0 when an unknown
    admin queue command opcode is encountered.
    
    This prevents the function from silently succeeding on invalid input
    and prevents undefined behavior by ensuring the function fails gracefully
    when an unrecognized opcode is provided.
    
    These changes improve error handling.
    
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Link: https://patch.msgid.link/20250616054504.1644770-2-alok.a.tiwari@oracle.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
habanalabs: fix UAF in export_dmabuf() [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Jul 12 06:02:31 2025 +0100

    habanalabs: fix UAF in export_dmabuf()
    
    [ Upstream commit 33927f3d0ecdcff06326d6e4edb6166aed42811c ]
    
    As soon as we'd inserted a file reference into descriptor table, another
    thread could close it.  That's fine for the case when all we are doing is
    returning that descriptor to userland (it's a race, but it's a userland
    race and there's nothing the kernel can do about it).  However, if we
    follow fd_install() with any kind of access to objects that would be
    destroyed on close (be it the struct file itself or anything destroyed
    by its ->release()), we have a UAF.
    
    dma_buf_fd() is a combination of reserving a descriptor and fd_install().
    habanalabs export_dmabuf() calls it and then proceeds to access the
    objects destroyed on close.  In particular, it grabs an extra reference to
    another struct file that will be dropped as part of ->release() for ours;
    that "will be" is actually "might have already been".
    
    Fix that by reserving descriptor before anything else and do fd_install()
    only when everything had been set up.  As a side benefit, we no longer
    have the failure exit with file already created, but reference to
    underlying file (as well as ->dmabuf_export_cnt, etc.) not grabbed yet;
    unlike dma_buf_fd(), fd_install() can't fail.
    
    Fixes: db1a8dd916aa ("habanalabs: add support for dma-buf exporter")
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hfs: fix general protection fault in hfs_find_init() [+ + +]
Author: Viacheslav Dubeyko <slava@dubeyko.com>
Date:   Thu Jul 10 14:36:57 2025 -0700

    hfs: fix general protection fault in hfs_find_init()
    
    [ Upstream commit 736a0516a16268995f4898eded49bfef077af709 ]
    
    The hfs_find_init() method can trigger the crash
    if tree pointer is NULL:
    
    [   45.746290][ T9787] Oops: general protection fault, probably for non-canonical address 0xdffffc0000000008: 0000 [#1] SMP KAI
    [   45.747287][ T9787] KASAN: null-ptr-deref in range [0x0000000000000040-0x0000000000000047]
    [   45.748716][ T9787] CPU: 2 UID: 0 PID: 9787 Comm: repro Not tainted 6.16.0-rc3 #10 PREEMPT(full)
    [   45.750250][ T9787] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   45.751983][ T9787] RIP: 0010:hfs_find_init+0x86/0x230
    [   45.752834][ T9787] Code: c1 ea 03 80 3c 02 00 0f 85 9a 01 00 00 4c 8d 6b 40 48 c7 45 18 00 00 00 00 48 b8 00 00 00 00 00 fc
    [   45.755574][ T9787] RSP: 0018:ffffc90015157668 EFLAGS: 00010202
    [   45.756432][ T9787] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffff819a4d09
    [   45.757457][ T9787] RDX: 0000000000000008 RSI: ffffffff819acd3a RDI: ffffc900151576e8
    [   45.758282][ T9787] RBP: ffffc900151576d0 R08: 0000000000000005 R09: 0000000000000000
    [   45.758943][ T9787] R10: 0000000080000000 R11: 0000000000000001 R12: 0000000000000004
    [   45.759619][ T9787] R13: 0000000000000040 R14: ffff88802c50814a R15: 0000000000000000
    [   45.760293][ T9787] FS:  00007ffb72734540(0000) GS:ffff8880cec64000(0000) knlGS:0000000000000000
    [   45.761050][ T9787] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   45.761606][ T9787] CR2: 00007f9bd8225000 CR3: 000000010979a000 CR4: 00000000000006f0
    [   45.762286][ T9787] Call Trace:
    [   45.762570][ T9787]  <TASK>
    [   45.762824][ T9787]  hfs_ext_read_extent+0x190/0x9d0
    [   45.763269][ T9787]  ? submit_bio_noacct_nocheck+0x2dd/0xce0
    [   45.763766][ T9787]  ? __pfx_hfs_ext_read_extent+0x10/0x10
    [   45.764250][ T9787]  hfs_get_block+0x55f/0x830
    [   45.764646][ T9787]  block_read_full_folio+0x36d/0x850
    [   45.765105][ T9787]  ? __pfx_hfs_get_block+0x10/0x10
    [   45.765541][ T9787]  ? const_folio_flags+0x5b/0x100
    [   45.765972][ T9787]  ? __pfx_hfs_read_folio+0x10/0x10
    [   45.766415][ T9787]  filemap_read_folio+0xbe/0x290
    [   45.766840][ T9787]  ? __pfx_filemap_read_folio+0x10/0x10
    [   45.767325][ T9787]  ? __filemap_get_folio+0x32b/0xbf0
    [   45.767780][ T9787]  do_read_cache_folio+0x263/0x5c0
    [   45.768223][ T9787]  ? __pfx_hfs_read_folio+0x10/0x10
    [   45.768666][ T9787]  read_cache_page+0x5b/0x160
    [   45.769070][ T9787]  hfs_btree_open+0x491/0x1740
    [   45.769481][ T9787]  hfs_mdb_get+0x15e2/0x1fb0
    [   45.769877][ T9787]  ? __pfx_hfs_mdb_get+0x10/0x10
    [   45.770316][ T9787]  ? find_held_lock+0x2b/0x80
    [   45.770731][ T9787]  ? lockdep_init_map_type+0x5c/0x280
    [   45.771200][ T9787]  ? lockdep_init_map_type+0x5c/0x280
    [   45.771674][ T9787]  hfs_fill_super+0x38e/0x720
    [   45.772092][ T9787]  ? __pfx_hfs_fill_super+0x10/0x10
    [   45.772549][ T9787]  ? snprintf+0xbe/0x100
    [   45.772931][ T9787]  ? __pfx_snprintf+0x10/0x10
    [   45.773350][ T9787]  ? do_raw_spin_lock+0x129/0x2b0
    [   45.773796][ T9787]  ? find_held_lock+0x2b/0x80
    [   45.774215][ T9787]  ? set_blocksize+0x40a/0x510
    [   45.774636][ T9787]  ? sb_set_blocksize+0x176/0x1d0
    [   45.775087][ T9787]  ? setup_bdev_super+0x369/0x730
    [   45.775533][ T9787]  get_tree_bdev_flags+0x384/0x620
    [   45.775985][ T9787]  ? __pfx_hfs_fill_super+0x10/0x10
    [   45.776453][ T9787]  ? __pfx_get_tree_bdev_flags+0x10/0x10
    [   45.776950][ T9787]  ? bpf_lsm_capable+0x9/0x10
    [   45.777365][ T9787]  ? security_capable+0x80/0x260
    [   45.777803][ T9787]  vfs_get_tree+0x8e/0x340
    [   45.778203][ T9787]  path_mount+0x13de/0x2010
    [   45.778604][ T9787]  ? kmem_cache_free+0x2b0/0x4c0
    [   45.779052][ T9787]  ? __pfx_path_mount+0x10/0x10
    [   45.779480][ T9787]  ? getname_flags.part.0+0x1c5/0x550
    [   45.779954][ T9787]  ? putname+0x154/0x1a0
    [   45.780335][ T9787]  __x64_sys_mount+0x27b/0x300
    [   45.780758][ T9787]  ? __pfx___x64_sys_mount+0x10/0x10
    [   45.781232][ T9787]  do_syscall_64+0xc9/0x480
    [   45.781631][ T9787]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   45.782149][ T9787] RIP: 0033:0x7ffb7265b6ca
    [   45.782539][ T9787] Code: 48 8b 0d c9 17 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48
    [   45.784212][ T9787] RSP: 002b:00007ffc0c10cfb8 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
    [   45.784935][ T9787] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ffb7265b6ca
    [   45.785626][ T9787] RDX: 0000200000000240 RSI: 0000200000000280 RDI: 00007ffc0c10d100
    [   45.786316][ T9787] RBP: 00007ffc0c10d190 R08: 00007ffc0c10d000 R09: 0000000000000000
    [   45.787011][ T9787] R10: 0000000000000048 R11: 0000000000000206 R12: 0000560246733250
    [   45.787697][ T9787] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [   45.788393][ T9787]  </TASK>
    [   45.788665][ T9787] Modules linked in:
    [   45.789058][ T9787] ---[ end trace 0000000000000000 ]---
    [   45.789554][ T9787] RIP: 0010:hfs_find_init+0x86/0x230
    [   45.790028][ T9787] Code: c1 ea 03 80 3c 02 00 0f 85 9a 01 00 00 4c 8d 6b 40 48 c7 45 18 00 00 00 00 48 b8 00 00 00 00 00 fc
    [   45.792364][ T9787] RSP: 0018:ffffc90015157668 EFLAGS: 00010202
    [   45.793155][ T9787] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffffffff819a4d09
    [   45.794123][ T9787] RDX: 0000000000000008 RSI: ffffffff819acd3a RDI: ffffc900151576e8
    [   45.795105][ T9787] RBP: ffffc900151576d0 R08: 0000000000000005 R09: 0000000000000000
    [   45.796135][ T9787] R10: 0000000080000000 R11: 0000000000000001 R12: 0000000000000004
    [   45.797114][ T9787] R13: 0000000000000040 R14: ffff88802c50814a R15: 0000000000000000
    [   45.798024][ T9787] FS:  00007ffb72734540(0000) GS:ffff8880cec64000(0000) knlGS:0000000000000000
    [   45.799019][ T9787] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   45.799822][ T9787] CR2: 00007f9bd8225000 CR3: 000000010979a000 CR4: 00000000000006f0
    [   45.800747][ T9787] Kernel panic - not syncing: Fatal exception
    
    The hfs_fill_super() calls hfs_mdb_get() method that tries
    to construct Extents Tree and Catalog Tree:
    
    HFS_SB(sb)->ext_tree = hfs_btree_open(sb, HFS_EXT_CNID, hfs_ext_keycmp);
    if (!HFS_SB(sb)->ext_tree) {
            pr_err("unable to open extent tree\n");
            goto out;
    }
    HFS_SB(sb)->cat_tree = hfs_btree_open(sb, HFS_CAT_CNID, hfs_cat_keycmp);
    if (!HFS_SB(sb)->cat_tree) {
            pr_err("unable to open catalog tree\n");
            goto out;
    }
    
    However, hfs_btree_open() calls read_mapping_page() that
    calls hfs_get_block(). And this method calls hfs_ext_read_extent():
    
    static int hfs_ext_read_extent(struct inode *inode, u16 block)
    {
            struct hfs_find_data fd;
            int res;
    
            if (block >= HFS_I(inode)->cached_start &&
                block < HFS_I(inode)->cached_start + HFS_I(inode)->cached_blocks)
                    return 0;
    
            res = hfs_find_init(HFS_SB(inode->i_sb)->ext_tree, &fd);
            if (!res) {
                    res = __hfs_ext_cache_extent(&fd, inode, block);
                    hfs_find_exit(&fd);
            }
            return res;
    }
    
    The problem here that hfs_find_init() is trying to use
    HFS_SB(inode->i_sb)->ext_tree that is not initialized yet.
    It will be initailized when hfs_btree_open() finishes
    the execution.
    
    The patch adds checking of tree pointer in hfs_find_init()
    and it reworks the logic of hfs_btree_open() by reading
    the b-tree's header directly from the volume. The read_mapping_page()
    is exchanged on filemap_grab_folio() that grab the folio from
    mapping. Then, sb_bread() extracts the b-tree's header
    content and copy it into the folio.
    
    Reported-by: Wenzhi Wang <wenzhi.wang@uwaterloo.ca>
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    cc: Yangtao Li <frank.li@vivo.com>
    cc: linux-fsdevel@vger.kernel.org
    Link: https://lore.kernel.org/r/20250710213657.108285-1-slava@dubeyko.com
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hfs: fix not erasing deleted b-tree node issue [+ + +]
Author: Viacheslav Dubeyko <slava@dubeyko.com>
Date:   Tue Apr 29 17:12:11 2025 -0700

    hfs: fix not erasing deleted b-tree node issue
    
    [ Upstream commit d3ed6d6981f4756f145766753c872482bc3b28d3 ]
    
    The generic/001 test of xfstests suite fails and corrupts
    the HFS volume:
    
    sudo ./check generic/001
    FSTYP         -- hfs
    PLATFORM      -- Linux/x86_64 hfsplus-testing-0001 6.15.0-rc2+ #3 SMP PREEMPT_DYNAMIC Fri Apr 25 17:13:00 PDT 2>
    MKFS_OPTIONS  -- /dev/loop51
    MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
    
    generic/001 32s ... _check_generic_filesystem: filesystem on /dev/loop50 is inconsistent
    (see /home/slavad/XFSTESTS-2/xfstests-dev/results//generic/001.full for details)
    
    Ran: generic/001
    Failures: generic/001
    Failed 1 of 1 tests
    
    fsck.hfs -d -n ./test-image.bin
    ** ./test-image.bin (NO WRITE)
            Using cacheBlockSize=32K cacheTotalBlock=1024 cacheSize=32768K.
       Executing fsck_hfs (version 540.1-Linux).
    ** Checking HFS volume.
       The volume name is untitled
    ** Checking extents overflow file.
    ** Checking catalog file.
       Unused node is not erased (node = 2)
       Unused node is not erased (node = 4)
    <skipped>
       Unused node is not erased (node = 253)
       Unused node is not erased (node = 254)
       Unused node is not erased (node = 255)
       Unused node is not erased (node = 256)
    ** Checking catalog hierarchy.
    ** Checking volume bitmap.
    ** Checking volume information.
       Verify Status: VIStat = 0x0000, ABTStat = 0x0000 EBTStat = 0x0000
                      CBTStat = 0x0004 CatStat = 0x00000000
    ** The volume untitled was found corrupt and needs to be repaired.
            volume type is HFS
            primary MDB is at block 2 0x02
            alternate MDB is at block 20971518 0x13ffffe
            primary VHB is at block 0 0x00
            alternate VHB is at block 0 0x00
            sector size = 512 0x200
            VolumeObject flags = 0x19
            total sectors for volume = 20971520 0x1400000
            total sectors for embedded volume = 0 0x00
    
    This patch adds logic of clearing the deleted b-tree node.
    
    sudo ./check generic/001
    FSTYP         -- hfs
    PLATFORM      -- Linux/x86_64 hfsplus-testing-0001 6.15.0-rc2+ #3 SMP PREEMPT_DYNAMIC Fri Apr 25 17:13:00 PDT 2025
    MKFS_OPTIONS  -- /dev/loop51
    MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
    
    generic/001 9s ...  32s
    Ran: generic/001
    Passed all 1 tests
    
    fsck.hfs -d -n ./test-image.bin
    ** ./test-image.bin (NO WRITE)
            Using cacheBlockSize=32K cacheTotalBlock=1024 cacheSize=32768K.
       Executing fsck_hfs (version 540.1-Linux).
    ** Checking HFS volume.
       The volume name is untitled
    ** Checking extents overflow file.
    ** Checking catalog file.
    ** Checking catalog hierarchy.
    ** Checking volume bitmap.
    ** Checking volume information.
    ** The volume untitled appears to be OK.
    
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Link: https://lore.kernel.org/r/20250430001211.1912533-1-slava@dubeyko.com
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hfs: fix slab-out-of-bounds in hfs_bnode_read() [+ + +]
Author: Viacheslav Dubeyko <slava@dubeyko.com>
Date:   Thu Jul 3 14:49:12 2025 -0700

    hfs: fix slab-out-of-bounds in hfs_bnode_read()
    
    [ Upstream commit a431930c9bac518bf99d6b1da526a7f37ddee8d8 ]
    
    This patch introduces is_bnode_offset_valid() method that checks
    the requested offset value. Also, it introduces
    check_and_correct_requested_length() method that checks and
    correct the requested length (if it is necessary). These methods
    are used in hfs_bnode_read(), hfs_bnode_write(), hfs_bnode_clear(),
    hfs_bnode_copy(), and hfs_bnode_move() with the goal to prevent
    the access out of allocated memory and triggering the crash.
    
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Link: https://lore.kernel.org/r/20250703214912.244138-1-slava@dubeyko.com
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hfsplus: don't use BUG_ON() in hfsplus_create_attributes_file() [+ + +]
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Tue Jul 15 14:17:56 2025 +0900

    hfsplus: don't use BUG_ON() in hfsplus_create_attributes_file()
    
    [ Upstream commit c7c6363ca186747ebc2df10c8a1a51e66e0e32d9 ]
    
    When the volume header contains erroneous values that do not reflect
    the actual state of the filesystem, hfsplus_fill_super() assumes that
    the attributes file is not yet created, which later results in hitting
    BUG_ON() when hfsplus_create_attributes_file() is called. Replace this
    BUG_ON() with -EIO error with a message to suggest running fsck tool.
    
    Reported-by: syzbot <syzbot+1107451c16b9eb9d29e6@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=1107451c16b9eb9d29e6
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Link: https://lore.kernel.org/r/7b587d24-c8a1-4413-9b9a-00a33fbd849f@I-love.SAKURA.ne.jp
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hfsplus: fix slab-out-of-bounds in hfsplus_bnode_read() [+ + +]
Author: Viacheslav Dubeyko <slava@dubeyko.com>
Date:   Thu Jul 3 14:48:04 2025 -0700

    hfsplus: fix slab-out-of-bounds in hfsplus_bnode_read()
    
    [ Upstream commit c80aa2aaaa5e69d5219c6af8ef7e754114bd08d2 ]
    
    The hfsplus_bnode_read() method can trigger the issue:
    
    [  174.852007][ T9784] ==================================================================
    [  174.852709][ T9784] BUG: KASAN: slab-out-of-bounds in hfsplus_bnode_read+0x2f4/0x360
    [  174.853412][ T9784] Read of size 8 at addr ffff88810b5fc6c0 by task repro/9784
    [  174.854059][ T9784]
    [  174.854272][ T9784] CPU: 1 UID: 0 PID: 9784 Comm: repro Not tainted 6.16.0-rc3 #7 PREEMPT(full)
    [  174.854281][ T9784] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [  174.854286][ T9784] Call Trace:
    [  174.854289][ T9784]  <TASK>
    [  174.854292][ T9784]  dump_stack_lvl+0x10e/0x1f0
    [  174.854305][ T9784]  print_report+0xd0/0x660
    [  174.854315][ T9784]  ? __virt_addr_valid+0x81/0x610
    [  174.854323][ T9784]  ? __phys_addr+0xe8/0x180
    [  174.854330][ T9784]  ? hfsplus_bnode_read+0x2f4/0x360
    [  174.854337][ T9784]  kasan_report+0xc6/0x100
    [  174.854346][ T9784]  ? hfsplus_bnode_read+0x2f4/0x360
    [  174.854354][ T9784]  hfsplus_bnode_read+0x2f4/0x360
    [  174.854362][ T9784]  hfsplus_bnode_dump+0x2ec/0x380
    [  174.854370][ T9784]  ? __pfx_hfsplus_bnode_dump+0x10/0x10
    [  174.854377][ T9784]  ? hfsplus_bnode_write_u16+0x83/0xb0
    [  174.854385][ T9784]  ? srcu_gp_start+0xd0/0x310
    [  174.854393][ T9784]  ? __mark_inode_dirty+0x29e/0xe40
    [  174.854402][ T9784]  hfsplus_brec_remove+0x3d2/0x4e0
    [  174.854411][ T9784]  __hfsplus_delete_attr+0x290/0x3a0
    [  174.854419][ T9784]  ? __pfx_hfs_find_1st_rec_by_cnid+0x10/0x10
    [  174.854427][ T9784]  ? __pfx___hfsplus_delete_attr+0x10/0x10
    [  174.854436][ T9784]  ? __asan_memset+0x23/0x50
    [  174.854450][ T9784]  hfsplus_delete_all_attrs+0x262/0x320
    [  174.854459][ T9784]  ? __pfx_hfsplus_delete_all_attrs+0x10/0x10
    [  174.854469][ T9784]  ? rcu_is_watching+0x12/0xc0
    [  174.854476][ T9784]  ? __mark_inode_dirty+0x29e/0xe40
    [  174.854483][ T9784]  hfsplus_delete_cat+0x845/0xde0
    [  174.854493][ T9784]  ? __pfx_hfsplus_delete_cat+0x10/0x10
    [  174.854507][ T9784]  hfsplus_unlink+0x1ca/0x7c0
    [  174.854516][ T9784]  ? __pfx_hfsplus_unlink+0x10/0x10
    [  174.854525][ T9784]  ? down_write+0x148/0x200
    [  174.854532][ T9784]  ? __pfx_down_write+0x10/0x10
    [  174.854540][ T9784]  vfs_unlink+0x2fe/0x9b0
    [  174.854549][ T9784]  do_unlinkat+0x490/0x670
    [  174.854557][ T9784]  ? __pfx_do_unlinkat+0x10/0x10
    [  174.854565][ T9784]  ? __might_fault+0xbc/0x130
    [  174.854576][ T9784]  ? getname_flags.part.0+0x1c5/0x550
    [  174.854584][ T9784]  __x64_sys_unlink+0xc5/0x110
    [  174.854592][ T9784]  do_syscall_64+0xc9/0x480
    [  174.854600][ T9784]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  174.854608][ T9784] RIP: 0033:0x7f6fdf4c3167
    [  174.854614][ T9784] Code: f0 ff ff 73 01 c3 48 8b 0d 26 0d 0e 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 08
    [  174.854622][ T9784] RSP: 002b:00007ffcb948bca8 EFLAGS: 00000206 ORIG_RAX: 0000000000000057
    [  174.854630][ T9784] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f6fdf4c3167
    [  174.854636][ T9784] RDX: 00007ffcb948bcc0 RSI: 00007ffcb948bcc0 RDI: 00007ffcb948bd50
    [  174.854641][ T9784] RBP: 00007ffcb948cd90 R08: 0000000000000001 R09: 00007ffcb948bb40
    [  174.854645][ T9784] R10: 00007f6fdf564fc0 R11: 0000000000000206 R12: 0000561e1bc9c2d0
    [  174.854650][ T9784] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [  174.854658][ T9784]  </TASK>
    [  174.854661][ T9784]
    [  174.879281][ T9784] Allocated by task 9784:
    [  174.879664][ T9784]  kasan_save_stack+0x20/0x40
    [  174.880082][ T9784]  kasan_save_track+0x14/0x30
    [  174.880500][ T9784]  __kasan_kmalloc+0xaa/0xb0
    [  174.880908][ T9784]  __kmalloc_noprof+0x205/0x550
    [  174.881337][ T9784]  __hfs_bnode_create+0x107/0x890
    [  174.881779][ T9784]  hfsplus_bnode_find+0x2d0/0xd10
    [  174.882222][ T9784]  hfsplus_brec_find+0x2b0/0x520
    [  174.882659][ T9784]  hfsplus_delete_all_attrs+0x23b/0x320
    [  174.883144][ T9784]  hfsplus_delete_cat+0x845/0xde0
    [  174.883595][ T9784]  hfsplus_rmdir+0x106/0x1b0
    [  174.884004][ T9784]  vfs_rmdir+0x206/0x690
    [  174.884379][ T9784]  do_rmdir+0x2b7/0x390
    [  174.884751][ T9784]  __x64_sys_rmdir+0xc5/0x110
    [  174.885167][ T9784]  do_syscall_64+0xc9/0x480
    [  174.885568][ T9784]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  174.886083][ T9784]
    [  174.886293][ T9784] The buggy address belongs to the object at ffff88810b5fc600
    [  174.886293][ T9784]  which belongs to the cache kmalloc-192 of size 192
    [  174.887507][ T9784] The buggy address is located 40 bytes to the right of
    [  174.887507][ T9784]  allocated 152-byte region [ffff88810b5fc600, ffff88810b5fc698)
    [  174.888766][ T9784]
    [  174.888976][ T9784] The buggy address belongs to the physical page:
    [  174.889533][ T9784] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x10b5fc
    [  174.890295][ T9784] flags: 0x57ff00000000000(node=1|zone=2|lastcpupid=0x7ff)
    [  174.890927][ T9784] page_type: f5(slab)
    [  174.891284][ T9784] raw: 057ff00000000000 ffff88801b4423c0 ffffea000426dc80 dead000000000002
    [  174.892032][ T9784] raw: 0000000000000000 0000000080100010 00000000f5000000 0000000000000000
    [  174.892774][ T9784] page dumped because: kasan: bad access detected
    [  174.893327][ T9784] page_owner tracks the page as allocated
    [  174.893825][ T9784] page last allocated via order 0, migratetype Unmovable, gfp_mask 0x52c00(GFP_NOIO|__GFP_NOWARN|__GFP_NO1
    [  174.895373][ T9784]  post_alloc_hook+0x1c0/0x230
    [  174.895801][ T9784]  get_page_from_freelist+0xdeb/0x3b30
    [  174.896284][ T9784]  __alloc_frozen_pages_noprof+0x25c/0x2460
    [  174.896810][ T9784]  alloc_pages_mpol+0x1fb/0x550
    [  174.897242][ T9784]  new_slab+0x23b/0x340
    [  174.897614][ T9784]  ___slab_alloc+0xd81/0x1960
    [  174.898028][ T9784]  __slab_alloc.isra.0+0x56/0xb0
    [  174.898468][ T9784]  __kmalloc_noprof+0x2b0/0x550
    [  174.898896][ T9784]  usb_alloc_urb+0x73/0xa0
    [  174.899289][ T9784]  usb_control_msg+0x1cb/0x4a0
    [  174.899718][ T9784]  usb_get_string+0xab/0x1a0
    [  174.900133][ T9784]  usb_string_sub+0x107/0x3c0
    [  174.900549][ T9784]  usb_string+0x307/0x670
    [  174.900933][ T9784]  usb_cache_string+0x80/0x150
    [  174.901355][ T9784]  usb_new_device+0x1d0/0x19d0
    [  174.901786][ T9784]  register_root_hub+0x299/0x730
    [  174.902231][ T9784] page last free pid 10 tgid 10 stack trace:
    [  174.902757][ T9784]  __free_frozen_pages+0x80c/0x1250
    [  174.903217][ T9784]  vfree.part.0+0x12b/0xab0
    [  174.903645][ T9784]  delayed_vfree_work+0x93/0xd0
    [  174.904073][ T9784]  process_one_work+0x9b5/0x1b80
    [  174.904519][ T9784]  worker_thread+0x630/0xe60
    [  174.904927][ T9784]  kthread+0x3a8/0x770
    [  174.905291][ T9784]  ret_from_fork+0x517/0x6e0
    [  174.905709][ T9784]  ret_from_fork_asm+0x1a/0x30
    [  174.906128][ T9784]
    [  174.906338][ T9784] Memory state around the buggy address:
    [  174.906828][ T9784]  ffff88810b5fc580: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    [  174.907528][ T9784]  ffff88810b5fc600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  174.908222][ T9784] >ffff88810b5fc680: 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  174.908917][ T9784]                                            ^
    [  174.909481][ T9784]  ffff88810b5fc700: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    [  174.910432][ T9784]  ffff88810b5fc780: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    [  174.911401][ T9784] ==================================================================
    
    The reason of the issue that code doesn't check the correctness
    of the requested offset and length. As a result, incorrect value
    of offset or/and length could result in access out of allocated
    memory.
    
    This patch introduces is_bnode_offset_valid() method that checks
    the requested offset value. Also, it introduces
    check_and_correct_requested_length() method that checks and
    correct the requested length (if it is necessary). These methods
    are used in hfsplus_bnode_read(), hfsplus_bnode_write(),
    hfsplus_bnode_clear(), hfsplus_bnode_copy(), and hfsplus_bnode_move()
    with the goal to prevent the access out of allocated memory
    and triggering the crash.
    
    Reported-by: Kun Hu <huk23@m.fudan.edu.cn>
    Reported-by: Jiaji Qin <jjtan24@m.fudan.edu.cn>
    Reported-by: Shuoran Bai <baishuoran@hrbeu.edu.cn>
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Link: https://lore.kernel.org/r/20250703214804.244077-1-slava@dubeyko.com
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc() [+ + +]
Author: Viacheslav Dubeyko <slava@dubeyko.com>
Date:   Thu Jul 10 16:08:30 2025 -0700

    hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()
    
    [ Upstream commit 94458781aee6045bd3d0ad4b80b02886b9e2219b ]
    
    The hfsplus_readdir() method is capable to crash by calling
    hfsplus_uni2asc():
    
    [  667.121659][ T9805] ==================================================================
    [  667.122651][ T9805] BUG: KASAN: slab-out-of-bounds in hfsplus_uni2asc+0x902/0xa10
    [  667.123627][ T9805] Read of size 2 at addr ffff88802592f40c by task repro/9805
    [  667.124578][ T9805]
    [  667.124876][ T9805] CPU: 3 UID: 0 PID: 9805 Comm: repro Not tainted 6.16.0-rc3 #1 PREEMPT(full)
    [  667.124886][ T9805] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [  667.124890][ T9805] Call Trace:
    [  667.124893][ T9805]  <TASK>
    [  667.124896][ T9805]  dump_stack_lvl+0x10e/0x1f0
    [  667.124911][ T9805]  print_report+0xd0/0x660
    [  667.124920][ T9805]  ? __virt_addr_valid+0x81/0x610
    [  667.124928][ T9805]  ? __phys_addr+0xe8/0x180
    [  667.124934][ T9805]  ? hfsplus_uni2asc+0x902/0xa10
    [  667.124942][ T9805]  kasan_report+0xc6/0x100
    [  667.124950][ T9805]  ? hfsplus_uni2asc+0x902/0xa10
    [  667.124959][ T9805]  hfsplus_uni2asc+0x902/0xa10
    [  667.124966][ T9805]  ? hfsplus_bnode_read+0x14b/0x360
    [  667.124974][ T9805]  hfsplus_readdir+0x845/0xfc0
    [  667.124984][ T9805]  ? __pfx_hfsplus_readdir+0x10/0x10
    [  667.124994][ T9805]  ? stack_trace_save+0x8e/0xc0
    [  667.125008][ T9805]  ? iterate_dir+0x18b/0xb20
    [  667.125015][ T9805]  ? trace_lock_acquire+0x85/0xd0
    [  667.125022][ T9805]  ? lock_acquire+0x30/0x80
    [  667.125029][ T9805]  ? iterate_dir+0x18b/0xb20
    [  667.125037][ T9805]  ? down_read_killable+0x1ed/0x4c0
    [  667.125044][ T9805]  ? putname+0x154/0x1a0
    [  667.125051][ T9805]  ? __pfx_down_read_killable+0x10/0x10
    [  667.125058][ T9805]  ? apparmor_file_permission+0x239/0x3e0
    [  667.125069][ T9805]  iterate_dir+0x296/0xb20
    [  667.125076][ T9805]  __x64_sys_getdents64+0x13c/0x2c0
    [  667.125084][ T9805]  ? __pfx___x64_sys_getdents64+0x10/0x10
    [  667.125091][ T9805]  ? __x64_sys_openat+0x141/0x200
    [  667.125126][ T9805]  ? __pfx_filldir64+0x10/0x10
    [  667.125134][ T9805]  ? do_user_addr_fault+0x7fe/0x12f0
    [  667.125143][ T9805]  do_syscall_64+0xc9/0x480
    [  667.125151][ T9805]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  667.125158][ T9805] RIP: 0033:0x7fa8753b2fc9
    [  667.125164][ T9805] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 48
    [  667.125172][ T9805] RSP: 002b:00007ffe96f8e0f8 EFLAGS: 00000217 ORIG_RAX: 00000000000000d9
    [  667.125181][ T9805] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fa8753b2fc9
    [  667.125185][ T9805] RDX: 0000000000000400 RSI: 00002000000063c0 RDI: 0000000000000004
    [  667.125190][ T9805] RBP: 00007ffe96f8e110 R08: 00007ffe96f8e110 R09: 00007ffe96f8e110
    [  667.125195][ T9805] R10: 0000000000000000 R11: 0000000000000217 R12: 0000556b1e3b4260
    [  667.125199][ T9805] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [  667.125207][ T9805]  </TASK>
    [  667.125210][ T9805]
    [  667.145632][ T9805] Allocated by task 9805:
    [  667.145991][ T9805]  kasan_save_stack+0x20/0x40
    [  667.146352][ T9805]  kasan_save_track+0x14/0x30
    [  667.146717][ T9805]  __kasan_kmalloc+0xaa/0xb0
    [  667.147065][ T9805]  __kmalloc_noprof+0x205/0x550
    [  667.147448][ T9805]  hfsplus_find_init+0x95/0x1f0
    [  667.147813][ T9805]  hfsplus_readdir+0x220/0xfc0
    [  667.148174][ T9805]  iterate_dir+0x296/0xb20
    [  667.148549][ T9805]  __x64_sys_getdents64+0x13c/0x2c0
    [  667.148937][ T9805]  do_syscall_64+0xc9/0x480
    [  667.149291][ T9805]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  667.149809][ T9805]
    [  667.150030][ T9805] The buggy address belongs to the object at ffff88802592f000
    [  667.150030][ T9805]  which belongs to the cache kmalloc-2k of size 2048
    [  667.151282][ T9805] The buggy address is located 0 bytes to the right of
    [  667.151282][ T9805]  allocated 1036-byte region [ffff88802592f000, ffff88802592f40c)
    [  667.152580][ T9805]
    [  667.152798][ T9805] The buggy address belongs to the physical page:
    [  667.153373][ T9805] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x25928
    [  667.154157][ T9805] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
    [  667.154916][ T9805] anon flags: 0xfff00000000040(head|node=0|zone=1|lastcpupid=0x7ff)
    [  667.155631][ T9805] page_type: f5(slab)
    [  667.155997][ T9805] raw: 00fff00000000040 ffff88801b442f00 0000000000000000 dead000000000001
    [  667.156770][ T9805] raw: 0000000000000000 0000000080080008 00000000f5000000 0000000000000000
    [  667.157536][ T9805] head: 00fff00000000040 ffff88801b442f00 0000000000000000 dead000000000001
    [  667.158317][ T9805] head: 0000000000000000 0000000080080008 00000000f5000000 0000000000000000
    [  667.159088][ T9805] head: 00fff00000000003 ffffea0000964a01 00000000ffffffff 00000000ffffffff
    [  667.159865][ T9805] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
    [  667.160643][ T9805] page dumped because: kasan: bad access detected
    [  667.161216][ T9805] page_owner tracks the page as allocated
    [  667.161732][ T9805] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN9
    [  667.163566][ T9805]  post_alloc_hook+0x1c0/0x230
    [  667.164003][ T9805]  get_page_from_freelist+0xdeb/0x3b30
    [  667.164503][ T9805]  __alloc_frozen_pages_noprof+0x25c/0x2460
    [  667.165040][ T9805]  alloc_pages_mpol+0x1fb/0x550
    [  667.165489][ T9805]  new_slab+0x23b/0x340
    [  667.165872][ T9805]  ___slab_alloc+0xd81/0x1960
    [  667.166313][ T9805]  __slab_alloc.isra.0+0x56/0xb0
    [  667.166767][ T9805]  __kmalloc_cache_noprof+0x255/0x3e0
    [  667.167255][ T9805]  psi_cgroup_alloc+0x52/0x2d0
    [  667.167693][ T9805]  cgroup_mkdir+0x694/0x1210
    [  667.168118][ T9805]  kernfs_iop_mkdir+0x111/0x190
    [  667.168568][ T9805]  vfs_mkdir+0x59b/0x8d0
    [  667.168956][ T9805]  do_mkdirat+0x2ed/0x3d0
    [  667.169353][ T9805]  __x64_sys_mkdir+0xef/0x140
    [  667.169784][ T9805]  do_syscall_64+0xc9/0x480
    [  667.170195][ T9805]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  667.170730][ T9805] page last free pid 1257 tgid 1257 stack trace:
    [  667.171304][ T9805]  __free_frozen_pages+0x80c/0x1250
    [  667.171770][ T9805]  vfree.part.0+0x12b/0xab0
    [  667.172182][ T9805]  delayed_vfree_work+0x93/0xd0
    [  667.172612][ T9805]  process_one_work+0x9b5/0x1b80
    [  667.173067][ T9805]  worker_thread+0x630/0xe60
    [  667.173486][ T9805]  kthread+0x3a8/0x770
    [  667.173857][ T9805]  ret_from_fork+0x517/0x6e0
    [  667.174278][ T9805]  ret_from_fork_asm+0x1a/0x30
    [  667.174703][ T9805]
    [  667.174917][ T9805] Memory state around the buggy address:
    [  667.175411][ T9805]  ffff88802592f300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  667.176114][ T9805]  ffff88802592f380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  667.176830][ T9805] >ffff88802592f400: 00 04 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  667.177547][ T9805]                       ^
    [  667.177933][ T9805]  ffff88802592f480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  667.178640][ T9805]  ffff88802592f500: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  667.179350][ T9805] ==================================================================
    
    The hfsplus_uni2asc() method operates by struct hfsplus_unistr:
    
    struct hfsplus_unistr {
            __be16 length;
            hfsplus_unichr unicode[HFSPLUS_MAX_STRLEN];
    } __packed;
    
    where HFSPLUS_MAX_STRLEN is 255 bytes. The issue happens if length
    of the structure instance has value bigger than 255 (for example,
    65283). In such case, pointer on unicode buffer is going beyond of
    the allocated memory.
    
    The patch fixes the issue by checking the length value of
    hfsplus_unistr instance and using 255 value in the case if length
    value is bigger than HFSPLUS_MAX_STRLEN. Potential reason of such
    situation could be a corruption of Catalog File b-tree's node.
    
    Reported-by: Wenzhi Wang <wenzhi.wang@uwaterloo.ca>
    Signed-off-by: Liu Shixin <liushixin2@huawei.com>
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    cc: Yangtao Li <frank.li@vivo.com>
    cc: linux-fsdevel@vger.kernel.org
    Reviewed-by: Yangtao Li <frank.li@vivo.com>
    Link: https://lore.kernel.org/r/20250710230830.110500-1-slava@dubeyko.com
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
HID: apple: avoid setting up battery timer for devices without battery [+ + +]
Author: Aditya Garg <gargaditya08@live.com>
Date:   Mon Jun 30 12:37:13 2025 +0000

    HID: apple: avoid setting up battery timer for devices without battery
    
    commit c061046fe9ce3ff31fb9a807144a2630ad349c17 upstream.
    
    Currently, the battery timer is set up for all devices using hid-apple,
    irrespective of whether they actually have a battery or not.
    
    APPLE_RDESC_BATTERY is a quirk that indicates the device has a battery
    and needs the battery timer. This patch checks for this quirk before
    setting up the timer, ensuring that only devices with a battery will
    have the timer set up.
    
    Fixes: 6e143293e17a ("HID: apple: Report Magic Keyboard battery over USB")
    Cc: stable@vger.kernel.org
    Signed-off-by: Aditya Garg <gargaditya08@live.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

HID: magicmouse: avoid setting up battery timer when not needed [+ + +]
Author: Aditya Garg <gargaditya08@live.com>
Date:   Mon Jun 30 12:37:13 2025 +0000

    HID: magicmouse: avoid setting up battery timer when not needed
    
    commit 9bdc30e35cbc1aa78ccf01040354209f1e11ca22 upstream.
    
    Currently, the battery timer is set up for all devices using
    hid-magicmouse, irrespective of whether they actually need it or not.
    
    The current implementation requires the battery timer for Magic Mouse 2
    and Magic Trackpad 2 when connected via USB only. Add checks to ensure
    that the battery timer is only set up when they are connected via USB.
    
    Fixes: 0b91b4e4dae6 ("HID: magicmouse: Report battery level over USB")
    Cc: stable@vger.kernel.org
    Signed-off-by: Aditya Garg <gargaditya08@live.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hv_netvsc: Fix panic during namespace deletion with VF [+ + +]
Author: Haiyang Zhang <haiyangz@microsoft.com>
Date:   Wed Aug 6 13:21:51 2025 -0700

    hv_netvsc: Fix panic during namespace deletion with VF
    
    commit 33caa208dba6fa639e8a92fd0c8320b652e5550c upstream.
    
    The existing code move the VF NIC to new namespace when NETDEV_REGISTER is
    received on netvsc NIC. During deletion of the namespace,
    default_device_exit_batch() >> default_device_exit_net() is called. When
    netvsc NIC is moved back and registered to the default namespace, it
    automatically brings VF NIC back to the default namespace. This will cause
    the default_device_exit_net() >> for_each_netdev_safe loop unable to detect
    the list end, and hit NULL ptr:
    
    [  231.449420] mana 7870:00:00.0 enP30832s1: Moved VF to namespace with: eth0
    [  231.449656] BUG: kernel NULL pointer dereference, address: 0000000000000010
    [  231.450246] #PF: supervisor read access in kernel mode
    [  231.450579] #PF: error_code(0x0000) - not-present page
    [  231.450916] PGD 17b8a8067 P4D 0
    [  231.451163] Oops: Oops: 0000 [#1] SMP NOPTI
    [  231.451450] CPU: 82 UID: 0 PID: 1394 Comm: kworker/u768:1 Not tainted 6.16.0-rc4+ #3 VOLUNTARY
    [  231.452042] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.1 11/21/2024
    [  231.452692] Workqueue: netns cleanup_net
    [  231.452947] RIP: 0010:default_device_exit_batch+0x16c/0x3f0
    [  231.453326] Code: c0 0c f5 b3 e8 d5 db fe ff 48 85 c0 74 15 48 c7 c2 f8 fd ca b2 be 10 00 00 00 48 8d 7d c0 e8 7b 77 25 00 49 8b 86 28 01 00 00 <48> 8b 50 10 4c 8b 2a 4c 8d 62 f0 49 83 ed 10 4c 39 e0 0f 84 d6 00
    [  231.454294] RSP: 0018:ff75fc7c9bf9fd00 EFLAGS: 00010246
    [  231.454610] RAX: 0000000000000000 RBX: 0000000000000002 RCX: 61c8864680b583eb
    [  231.455094] RDX: ff1fa9f71462d800 RSI: ff75fc7c9bf9fd38 RDI: 0000000030766564
    [  231.455686] RBP: ff75fc7c9bf9fd78 R08: 0000000000000000 R09: 0000000000000000
    [  231.456126] R10: 0000000000000001 R11: 0000000000000004 R12: ff1fa9f70088e340
    [  231.456621] R13: ff1fa9f70088e340 R14: ffffffffb3f50c20 R15: ff1fa9f7103e6340
    [  231.457161] FS:  0000000000000000(0000) GS:ff1faa6783a08000(0000) knlGS:0000000000000000
    [  231.457707] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  231.458031] CR2: 0000000000000010 CR3: 0000000179ab2006 CR4: 0000000000b73ef0
    [  231.458434] Call Trace:
    [  231.458600]  <TASK>
    [  231.458777]  ops_undo_list+0x100/0x220
    [  231.459015]  cleanup_net+0x1b8/0x300
    [  231.459285]  process_one_work+0x184/0x340
    
    To fix it, move the ns change to a workqueue, and take rtnl_lock to avoid
    changing the netdev list when default_device_exit_net() is using it.
    
    Cc: stable@vger.kernel.org
    Fixes: 4c262801ea60 ("hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event")
    Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
    Link: https://patch.msgid.link/1754511711-11188-1-git-send-email-haiyangz@linux.microsoft.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hwmon: (emc2305) Set initial PWM minimum value during probe based on thermal state [+ + +]
Author: Florin Leotescu <florin.leotescu@nxp.com>
Date:   Tue Jun 3 14:31:25 2025 +0300

    hwmon: (emc2305) Set initial PWM minimum value during probe based on thermal state
    
    [ Upstream commit 0429415a084a15466e87d504e8c2a502488184a5 ]
    
    Prevent the PWM value from being set to minimum when thermal zone
    temperature exceeds any trip point during driver probe. Otherwise, the
    PWM fan speed will remains at minimum speed and not respond to
    temperature changes.
    
    Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
    Link: https://lore.kernel.org/r/20250603113125.3175103-5-florin.leotescu@oss.nxp.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: Force DLL0945 touchpad i2c freq to 100khz [+ + +]
Author: fangzhong.zhou <myth5@myth5.com>
Date:   Sun Aug 3 07:15:54 2025 +0800

    i2c: Force DLL0945 touchpad i2c freq to 100khz
    
    [ Upstream commit 0b7c9528facdb5a73ad78fea86d2e95a6c48dbc4 ]
    
    This patch fixes an issue where the touchpad cursor movement becomes
    slow on the Dell Precision 5560. Force the touchpad freq to 100khz
    as a workaround.
    
    Tested on Dell Precision 5560 with 6.14 to 6.14.6. Cursor movement
    is now smooth and responsive.
    
    Signed-off-by: fangzhong.zhou <myth5@myth5.com>
    [wsa: kept sorting and removed unnecessary parts from commit msg]
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i3c: add missing include to internal header [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Thu Jul 17 14:00:47 2025 +0200

    i3c: add missing include to internal header
    
    [ Upstream commit 3b661ca549b9e5bb11d0bc97ada6110aac3282d2 ]
    
    LKP found a random config which failed to build because IO accessors
    were not defined:
    
       In file included from drivers/i3c/master.c:21:
       drivers/i3c/internals.h: In function 'i3c_writel_fifo':
    >> drivers/i3c/internals.h:35:9: error: implicit declaration of function 'writesl' [-Werror=implicit-function-declaration]
    
    Add the proper header to where the IO accessors are used.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202507150208.BZDzzJ5E-lkp@intel.com/
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://lore.kernel.org/r/20250717120046.9022-2-wsa+renesas@sang-engineering.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i3c: don't fail if GETHDRCAP is unsupported [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Fri Jul 4 22:44:32 2025 +0200

    i3c: don't fail if GETHDRCAP is unsupported
    
    [ Upstream commit 447270cdb41b1c8c3621bb14b93a6749f942556e ]
    
    'I3C_BCR_HDR_CAP' is still spec v1.0 and has been renamed to 'advanced
    capabilities' in v1.1 onwards. The ST pressure sensor LPS22DF does not
    have HDR, but has the 'advanced cap' bit set. The core still wants to
    get additional information using the CCC 'GETHDRCAP' (or GETCAPS in v1.1
    onwards). Not all controllers support this CCC and will notify the upper
    layers about it. For instantiating the device, we can ignore this
    unsupported CCC as standard communication will work. Without this patch,
    the device will not be instantiated at all.
    
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://lore.kernel.org/r/20250704204524.6124-1-wsa+renesas@sang-engineering.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i3c: master: Initialize ret in i3c_i2c_notifier_call() [+ + +]
Author: Jorge Marques <jorge.marques@analog.com>
Date:   Sun Jun 22 12:11:07 2025 +0200

    i3c: master: Initialize ret in i3c_i2c_notifier_call()
    
    [ Upstream commit 290ce8b2d0745e45a3155268184523a8c75996f1 ]
    
    Set ret to -EINVAL if i3c_i2c_notifier_call() receives an invalid
    action, resolving uninitialized warning.
    
    Signed-off-by: Jorge Marques <jorge.marques@analog.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://lore.kernel.org/r/20250622-i3c-master-ret-uninitialized-v1-1-aabb5625c932@analog.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
idpf: preserve coalescing settings across resets [+ + +]
Author: Ahmed Zaki <ahmed.zaki@intel.com>
Date:   Fri Jun 20 11:15:48 2025 -0600

    idpf: preserve coalescing settings across resets
    
    [ Upstream commit e1e3fec3e34b4934a9d2c98e4ee00a4d87b19179 ]
    
    The IRQ coalescing config currently reside only inside struct
    idpf_q_vector. However, all idpf_q_vector structs are de-allocated and
    re-allocated during resets. This leads to user-set coalesce configuration
    to be lost.
    
    Add new fields to struct idpf_vport_user_config_data to save the user
    settings and re-apply them after reset.
    
    Reviewed-by: Madhu Chittim <madhu.chittim@intel.com>
    Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Tested-by: Samuel Salin <Samuel.salin@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iio: adc: ad7768-1: Ensure SYNC_IN pulse minimum timing requirement [+ + +]
Author: Jonathan Santos <Jonathan.Santos@analog.com>
Date:   Wed Jun 4 16:35:21 2025 -0300

    iio: adc: ad7768-1: Ensure SYNC_IN pulse minimum timing requirement
    
    [ Upstream commit 7e54d932873d91a55d1b89b7389876d78aeeab32 ]
    
    The SYNC_IN pulse width must be at least 1.5 x Tmclk, corresponding to
    ~2.5 µs at the lowest supported MCLK frequency. Add a 3 µs delay to
    ensure reliable synchronization timing even for the worst-case scenario.
    
    Signed-off-by: Jonathan Santos <Jonathan.Santos@analog.com>
    Reviewed-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://patch.msgid.link/d3ee92a533cd1207cf5c5cc4d7bdbb5c6c267f68.1749063024.git.Jonathan.Santos@analog.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iio: adc: ad_sigma_delta: don't overallocate scan buffer [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Tue Jul 1 16:37:49 2025 -0500

    iio: adc: ad_sigma_delta: don't overallocate scan buffer
    
    [ Upstream commit 5a2f15c5a8e017d0951e6dc62aa7b5b634f56881 ]
    
    Fix overallocating the size of the scan buffer by converting bits to
    bytes. The size is meant to be in bytes, so scanbits needs to be
    divided by 8.
    
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Nuno Sá <nuno.sa@analog.com>
    Link: https://patch.msgid.link/20250701-iio-adc-ad7173-add-spi-offload-support-v3-1-42abb83e3dac@baylibre.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
imx8m-blk-ctrl: set ISI panic write hurry level [+ + +]
Author: Krzysztof Hałasa <khalasa@piap.pl>
Date:   Fri May 9 11:26:55 2025 +0200

    imx8m-blk-ctrl: set ISI panic write hurry level
    
    [ Upstream commit c01fba0b4869cada5403fffff416cd1675dba078 ]
    
    Apparently, ISI needs cache settings similar to LCDIF.
    Otherwise we get artefacts in the image.
    Tested on i.MX8MP.
    
    Signed-off-by: Krzysztof Hałasa <khalasa@piap.pl>
    Link: https://lore.kernel.org/r/m3ldr69lsw.fsf@t19.piap.pl
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
intel_idle: Allow loading ACPI tables for any family [+ + +]
Author: Len Brown <len.brown@intel.com>
Date:   Fri Aug 8 15:37:14 2025 -0400

    intel_idle: Allow loading ACPI tables for any family
    
    [ Upstream commit e91a158b694d7f4bd937763dde79ed0afa472d8a ]
    
    There is no reason to limit intel_idle's loading of ACPI tables to
    family 6.  Upcoming Intel processors are not in family 6.
    
    Below "Fixes" really means "applies cleanly until".
    That syntax commit didn't change the previous logic,
    but shows this patch applies back 5-years.
    
    Fixes: 4a9f45a0533f ("intel_idle: Convert to new X86 CPU match macros")
    Signed-off-by: Len Brown <len.brown@intel.com>
    Link: https://patch.msgid.link/06101aa4fe784e5b0be1cb2c0bdd9afcf16bd9d4.1754681697.git.len.brown@intel.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
io_uring/rw: cast rw->flags assignment to rwf_t [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Mon Jul 7 16:46:30 2025 -0600

    io_uring/rw: cast rw->flags assignment to rwf_t
    
    commit 825aea662b492571877b32aeeae13689fd9fbee4 upstream.
    
    kernel test robot reports that a recent change of the sqe->rw_flags
    field throws a sparse warning on 32-bit archs:
    
    >> io_uring/rw.c:291:19: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __kernel_rwf_t [usertype] flags @@     got unsigned int @@
       io_uring/rw.c:291:19: sparse:     expected restricted __kernel_rwf_t [usertype] flags
       io_uring/rw.c:291:19: sparse:     got unsigned int
    
    Force cast it to rwf_t to silence that new sparse warning.
    
    Fixes: cf73d9970ea4 ("io_uring: don't use int for ABI")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202507032211.PwSNPNSP-lkp@intel.com/
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
io_uring: don't use int for ABI [+ + +]
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Wed Jul 2 21:31:54 2025 +0100

    io_uring: don't use int for ABI
    
    commit cf73d9970ea4f8cace5d8f02d2565a2723003112 upstream.
    
    __kernel_rwf_t is defined as int, the actual size of which is
    implementation defined. It won't go well if some compiler / archs
    ever defines it as i64, so replace it with __u32, hoping that
    there is no one using i16 for it.
    
    Cc: stable@vger.kernel.org
    Fixes: 2b188cc1bb857 ("Add io_uring IO interface")
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/47c666c4ee1df2018863af3a2028af18feef11ed.1751412511.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
iommu/arm-smmu-qcom: Add SM6115 MDSS compatible [+ + +]
Author: Alexey Klimov <alexey.klimov@linaro.org>
Date:   Fri Jun 13 18:32:38 2025 +0100

    iommu/arm-smmu-qcom: Add SM6115 MDSS compatible
    
    commit f7fa8520f30373ce99c436c4d57c76befdacbef3 upstream.
    
    Add the SM6115 MDSS compatible to clients compatible list, as it also
    needs that workaround.
    Without this workaround, for example, QRB4210 RB2 which is based on
    SM4250/SM6115 generates a lot of smmu unhandled context faults during
    boot:
    
    arm_smmu_context_fault: 116854 callbacks suppressed
    arm-smmu c600000.iommu: Unhandled context fault: fsr=0x402,
    iova=0x5c0ec600, fsynr=0x320021, cbfrsynra=0x420, cb=5
    arm-smmu c600000.iommu: FSR    = 00000402 [Format=2 TF], SID=0x420
    arm-smmu c600000.iommu: FSYNR0 = 00320021 [S1CBNDX=50 PNU PLVL=1]
    arm-smmu c600000.iommu: Unhandled context fault: fsr=0x402,
    iova=0x5c0d7800, fsynr=0x320021, cbfrsynra=0x420, cb=5
    arm-smmu c600000.iommu: FSR    = 00000402 [Format=2 TF], SID=0x420
    
    and also failed initialisation of lontium lt9611uxc, gpu and dpu is
    observed:
    (binding MDSS components triggered by lt9611uxc have failed)
    
     ------------[ cut here ]------------
     !aspace
     WARNING: CPU: 6 PID: 324 at drivers/gpu/drm/msm/msm_gem_vma.c:130 msm_gem_vma_init+0x150/0x18c [msm]
     Modules linked in: ... (long list of modules)
     CPU: 6 UID: 0 PID: 324 Comm: (udev-worker) Not tainted 6.15.0-03037-gaacc73ceeb8b #4 PREEMPT
     Hardware name: Qualcomm Technologies, Inc. QRB4210 RB2 (DT)
     pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : msm_gem_vma_init+0x150/0x18c [msm]
     lr : msm_gem_vma_init+0x150/0x18c [msm]
     sp : ffff80008144b280
                    ...
     Call trace:
      msm_gem_vma_init+0x150/0x18c [msm] (P)
      get_vma_locked+0xc0/0x194 [msm]
      msm_gem_get_and_pin_iova_range+0x4c/0xdc [msm]
      msm_gem_kernel_new+0x48/0x160 [msm]
      msm_gpu_init+0x34c/0x53c [msm]
      adreno_gpu_init+0x1b0/0x2d8 [msm]
      a6xx_gpu_init+0x1e8/0x9e0 [msm]
      adreno_bind+0x2b8/0x348 [msm]
      component_bind_all+0x100/0x230
      msm_drm_bind+0x13c/0x3d0 [msm]
      try_to_bring_up_aggregate_device+0x164/0x1d0
      __component_add+0xa4/0x174
      component_add+0x14/0x20
      dsi_dev_attach+0x20/0x34 [msm]
      dsi_host_attach+0x58/0x98 [msm]
      devm_mipi_dsi_attach+0x34/0x90
      lt9611uxc_attach_dsi.isra.0+0x94/0x124 [lontium_lt9611uxc]
      lt9611uxc_probe+0x540/0x5fc [lontium_lt9611uxc]
      i2c_device_probe+0x148/0x2a8
      really_probe+0xbc/0x2c0
      __driver_probe_device+0x78/0x120
      driver_probe_device+0x3c/0x154
      __driver_attach+0x90/0x1a0
      bus_for_each_dev+0x68/0xb8
      driver_attach+0x24/0x30
      bus_add_driver+0xe4/0x208
      driver_register+0x68/0x124
      i2c_register_driver+0x48/0xcc
      lt9611uxc_driver_init+0x20/0x1000 [lontium_lt9611uxc]
      do_one_initcall+0x60/0x1d4
      do_init_module+0x54/0x1fc
      load_module+0x1748/0x1c8c
      init_module_from_file+0x74/0xa0
      __arm64_sys_finit_module+0x130/0x2f8
      invoke_syscall+0x48/0x104
      el0_svc_common.constprop.0+0xc0/0xe0
      do_el0_svc+0x1c/0x28
      el0_svc+0x2c/0x80
      el0t_64_sync_handler+0x10c/0x138
      el0t_64_sync+0x198/0x19c
     ---[ end trace 0000000000000000 ]---
     msm_dpu 5e01000.display-controller: [drm:msm_gpu_init [msm]] *ERROR* could not allocate memptrs: -22
     msm_dpu 5e01000.display-controller: failed to load adreno gpu
     platform a400000.remoteproc:glink-edge:apr:service@7:dais: Adding to iommu group 19
     msm_dpu 5e01000.display-controller: failed to bind 5900000.gpu (ops a3xx_ops [msm]): -22
     msm_dpu 5e01000.display-controller: adev bind failed: -22
     lt9611uxc 0-002b: failed to attach dsi to host
     lt9611uxc 0-002b: probe with driver lt9611uxc failed with error -22
    
    Suggested-by: Bjorn Andersson <andersson@kernel.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Fixes: 3581b7062cec ("drm/msm/disp/dpu1: add support for display on SM6115")
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
    Link: https://lore.kernel.org/r/20250613173238.15061-1-alexey.klimov@linaro.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommu/vt-d: Optimize iotlb_sync_map for non-caching/non-RWBF modes [+ + +]
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Mon Jul 14 12:50:19 2025 +0800

    iommu/vt-d: Optimize iotlb_sync_map for non-caching/non-RWBF modes
    
    commit 12724ce3fe1a3d8f30d56e48b4f272d8860d1970 upstream.
    
    The iotlb_sync_map iommu ops allows drivers to perform necessary cache
    flushes when new mappings are established. For the Intel iommu driver,
    this callback specifically serves two purposes:
    
    - To flush caches when a second-stage page table is attached to a device
      whose iommu is operating in caching mode (CAP_REG.CM==1).
    - To explicitly flush internal write buffers to ensure updates to memory-
      resident remapping structures are visible to hardware (CAP_REG.RWBF==1).
    
    However, in scenarios where neither caching mode nor the RWBF flag is
    active, the cache_tag_flush_range_np() helper, which is called in the
    iotlb_sync_map path, effectively becomes a no-op.
    
    Despite being a no-op, cache_tag_flush_range_np() involves iterating
    through all cache tags of the iommu's attached to the domain, protected
    by a spinlock. This unnecessary execution path introduces overhead,
    leading to a measurable I/O performance regression. On systems with NVMes
    under the same bridge, performance was observed to drop from approximately
    ~6150 MiB/s down to ~4985 MiB/s.
    
    Introduce a flag in the dmar_domain structure. This flag will only be set
    when iotlb_sync_map is required (i.e., when CM or RWBF is set). The
    cache_tag_flush_range_np() is called only for domains where this flag is
    set. This flag, once set, is immutable, given that there won't be mixed
    configurations in real-world scenarios where some IOMMUs in a system
    operate in caching mode while others do not. Theoretically, the
    immutability of this flag does not impact functionality.
    
    Reported-by: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
    Closes: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2115738
    Link: https://lore.kernel.org/r/20250701171154.52435-1-ioanna-maria.alifieraki@canonical.com
    Fixes: 129dab6e1286 ("iommu/vt-d: Use cache_tag_flush_range_np() in iotlb_sync_map")
    Cc: stable@vger.kernel.org
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Link: https://lore.kernel.org/r/20250703031545.3378602-1-baolu.lu@linux.intel.com
    Link: https://lore.kernel.org/r/20250714045028.958850-3-baolu.lu@linux.intel.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iommufd: Prevent ALIGN() overflow [+ + +]
Author: Jason Gunthorpe <jgg@ziepe.ca>
Date:   Thu Jul 17 11:46:55 2025 -0300

    iommufd: Prevent ALIGN() overflow
    
    commit b42497e3c0e74db061eafad41c0cd7243c46436b upstream.
    
    When allocating IOVA the candidate range gets aligned to the target
    alignment. If the range is close to ULONG_MAX then the ALIGN() can
    wrap resulting in a corrupted iova.
    
    Open code the ALIGN() using get_add_overflow() to prevent this.
    This simplifies the checks as we don't need to check for length earlier
    either.
    
    Consolidate the two copies of this code under a single helper.
    
    This bug would allow userspace to create a mapping that overlaps with some
    other mapping or a reserved range.
    
    Cc: stable@vger.kernel.org
    Fixes: 51fe6141f0f6 ("iommufd: Data structure to provide IOVA to PFN mapping")
    Reported-by: syzbot+c2f65e2801743ca64e08@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/r/685af644.a00a0220.2e5631.0094.GAE@google.com
    Reviewed-by: Yi Liu <yi.l.liu@intel.com>
    Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
    Link: https://patch.msgid.link/all/1-v1-7b4a16fc390b+10f4-iommufd_alloc_overflow_jgg@nvidia.com/
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iommufd: Report unmapped bytes in the error path of iopt_unmap_iova_range [+ + +]
Author: Nicolin Chen <nicolinc@nvidia.com>
Date:   Wed Jul 9 22:58:53 2025 -0700

    iommufd: Report unmapped bytes in the error path of iopt_unmap_iova_range
    
    commit b23e09f9997771b4b739c1c694fa832b5fa2de02 upstream.
    
    There are callers that read the unmapped bytes even when rc != 0. Thus, do
    not forget to report it in the error path too.
    
    Fixes: 8d40205f6093 ("iommufd: Add kAPI toward external drivers for kernel access")
    Link: https://patch.msgid.link/r/e2b61303bbc008ba1a4e2d7c2a2894749b59fdac.1752126748.git.nicolinc@nvidia.com
    Cc: stable@vger.kernel.org
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ionic: clean dbpage in de-init [+ + +]
Author: Shannon Nelson <sln@onemain.com>
Date:   Mon Jun 9 14:46:43 2025 -0700

    ionic: clean dbpage in de-init
    
    [ Upstream commit c9080abea1e69b8b1408ec7dec0acdfdc577a3e2 ]
    
    Since the kern_dbpage gets set up in ionic_lif_init() and that
    function's error path will clean it if needed, the kern_dbpage
    on teardown should be cleaned in ionic_lif_deinit(), not in
    ionic_lif_free().  As it is currently we get a double call
    to iounmap() on kern_dbpage if the PCI ionic fails setting up
    the lif.  One example of this is when firmware isn't responding
    to AdminQ requests and ionic's first AdminQ call fails to
    setup the NotifyQ.
    
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Joe Damato <joe@dama.to>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipmi: Fix strcpy source and destination the same [+ + +]
Author: Corey Minyard <corey@minyard.net>
Date:   Fri Jun 13 19:06:26 2025 -0500

    ipmi: Fix strcpy source and destination the same
    
    [ Upstream commit 8ffcb7560b4a15faf821df95e3ab532b2b020f8c ]
    
    The source and destination of some strcpy operations was the same.
    Split out the part of the operations that needed to be done for those
    particular calls so the unnecessary copy wasn't done.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202506140756.EFXXvIP4-lkp@intel.com/
    Signed-off-by: Corey Minyard <corey@minyard.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ipmi: Use dev_warn_ratelimited() for incorrect message warnings [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Thu Jul 10 05:57:26 2025 -0700

    ipmi: Use dev_warn_ratelimited() for incorrect message warnings
    
    [ Upstream commit ec50ec378e3fd83bde9b3d622ceac3509a60b6b5 ]
    
    During BMC firmware upgrades on live systems, the ipmi_msghandler
    generates excessive "BMC returned incorrect response" warnings
    while the BMC is temporarily offline. This can flood system logs
    in large deployments.
    
    Replace dev_warn() with dev_warn_ratelimited() to throttle these
    warnings and prevent log spam during BMC maintenance operations.
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Message-ID: <20250710-ipmi_ratelimit-v1-1-6d417015ebe9@debian.org>
    Signed-off-by: Corey Minyard <corey@minyard.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv6: mcast: Check inet6_dev->dead under idev->mc_lock in __ipv6_dev_mc_inc(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Wed Jul 2 16:01:20 2025 -0700

    ipv6: mcast: Check inet6_dev->dead under idev->mc_lock in __ipv6_dev_mc_inc().
    
    [ Upstream commit dbd40f318cf2f59759bd170c401adc20ba360a3e ]
    
    Since commit 63ed8de4be81 ("mld: add mc_lock for protecting
    per-interface mld data"), every multicast resource is protected
    by inet6_dev->mc_lock.
    
    RTNL is unnecessary in terms of protection but still needed for
    synchronisation between addrconf_ifdown() and __ipv6_dev_mc_inc().
    
    Once we removed RTNL, there would be a race below, where we could
    add a multicast address to a dead inet6_dev.
    
      CPU1                            CPU2
      ====                            ====
      addrconf_ifdown()               __ipv6_dev_mc_inc()
                                        if (idev->dead) <-- false
        dead = true                       return -ENODEV;
        ipv6_mc_destroy_dev() / ipv6_mc_down()
          mutex_lock(&idev->mc_lock)
          ...
          mutex_unlock(&idev->mc_lock)
                                        mutex_lock(&idev->mc_lock)
                                        ...
                                        mutex_unlock(&idev->mc_lock)
    
    The race window can be easily closed by checking inet6_dev->dead
    under inet6_dev->mc_lock in __ipv6_dev_mc_inc() as addrconf_ifdown()
    will acquire it after marking inet6_dev dead.
    
    Let's check inet6_dev->dead under mc_lock in __ipv6_dev_mc_inc().
    
    Note that now __ipv6_dev_mc_inc() no longer depends on RTNL and
    we can remove ASSERT_RTNL() there and the RTNL comment above
    addrconf_join_solict().
    
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250702230210.3115355-4-kuni1840@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jfs: Regular file corruption check [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Wed Jun 4 14:48:43 2025 +0800

    jfs: Regular file corruption check
    
    [ Upstream commit 2d04df8116426b6c7b9f8b9b371250f666a2a2fb ]
    
    The reproducer builds a corrupted file on disk with a negative i_size value.
    Add a check when opening this file to avoid subsequent operation failures.
    
    Reported-by: syzbot+630f6d40b3ccabc8e96e@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=630f6d40b3ccabc8e96e
    Tested-by: syzbot+630f6d40b3ccabc8e96e@syzkaller.appspotmail.com
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

jfs: truncate good inode pages when hard link is 0 [+ + +]
Author: Lizhi Xu <lizhi.xu@windriver.com>
Date:   Fri Jun 13 11:05:34 2025 +0800

    jfs: truncate good inode pages when hard link is 0
    
    [ Upstream commit 2d91b3765cd05016335cd5df5e5c6a29708ec058 ]
    
    The fileset value of the inode copy from the disk by the reproducer is
    AGGR_RESERVED_I. When executing evict, its hard link number is 0, so its
    inode pages are not truncated. This causes the bugon to be triggered when
    executing clear_inode() because nrpages is greater than 0.
    
    Reported-by: syzbot+6e516bb515d93230bc7b@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=6e516bb515d93230bc7b
    Signed-off-by: Lizhi Xu <lizhi.xu@windriver.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

jfs: upper bound check of tree index in dbAllocAG [+ + +]
Author: Arnaud Lecomte <contact@arnaud-lcm.com>
Date:   Thu Apr 24 00:13:51 2025 +0200

    jfs: upper bound check of tree index in dbAllocAG
    
    [ Upstream commit c214006856ff52a8ff17ed8da52d50601d54f9ce ]
    
    When computing the tree index in dbAllocAG, we never check if we are
    out of bounds realative to the size of the stree.
    This could happen in a scenario where the filesystem metadata are
    corrupted.
    
    Reported-by: syzbot+cffd18309153948f3c3e@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=cffd18309153948f3c3e
    Tested-by: syzbot+cffd18309153948f3c3e@syzkaller.appspotmail.com
    Signed-off-by: Arnaud Lecomte <contact@arnaud-lcm.com>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kconfig: gconf: avoid hardcoding model2 in on_treeview2_cursor_changed() [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Wed Jun 25 00:05:20 2025 +0900

    kconfig: gconf: avoid hardcoding model2 in on_treeview2_cursor_changed()
    
    [ Upstream commit cae9cdbcd9af044810bcceeb43a87accca47c71d ]
    
    The on_treeview2_cursor_changed() handler is connected to both the left
    and right tree views, but it hardcodes model2 (the GtkTreeModel of the
    right tree view). This is incorrect. Get the associated model from the
    view.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kconfig: gconf: fix potential memory leak in renderer_edited() [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Wed Jun 25 00:04:55 2025 +0900

    kconfig: gconf: fix potential memory leak in renderer_edited()
    
    [ Upstream commit f72ed4c6a375e52a3f4b75615e4a89d29d8acea7 ]
    
    If gtk_tree_model_get_iter() fails, gtk_tree_path_free() is not called.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Acked-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kconfig: lxdialog: fix 'space' to (de)select options [+ + +]
Author: Yann E. MORIN <yann.morin.1998@free.fr>
Date:   Thu Nov 14 00:53:32 2013 +0100

    kconfig: lxdialog: fix 'space' to (de)select options
    
    [ Upstream commit 694174f94ebeeb5ec5cc0e9de9b40c82057e1d95 ]
    
    In case a menu has comment without letters/numbers (eg. characters
    matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *),
    hitting space will cycle through those comments, rather than
    selecting/deselecting the currently-highlighted option.
    
    This is the behaviour of hitting any letter/digit: jump to the next
    option which prompt starts with that letter. The only letters that
    do not behave as such are 'y' 'm' and 'n'. Prompts that start with
    one of those three letters are instead matched on the first letter
    that is not 'y', 'm' or 'n'.
    
    Fix that by treating 'space' as we treat y/m/n, ie. as an action key,
    not as shortcut to jump to  prompt.
    
    Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
    Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
    Signed-off-by: Cherniaev Andrei <dungeonlords789@naver.com>
    [masahiro: took from Buildroot, adjusted the commit subject]
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kconfig: lxdialog: replace strcpy() with strncpy() in inputbox.c [+ + +]
Author: Suchit Karunakaran <suchitkarunakaran@gmail.com>
Date:   Sun Jul 27 22:14:33 2025 +0530

    kconfig: lxdialog: replace strcpy() with strncpy() in inputbox.c
    
    [ Upstream commit 5ac726653a1029a2eccba93bbe59e01fc9725828 ]
    
    strcpy() performs no bounds checking and can lead to buffer overflows if
    the input string exceeds the destination buffer size. This patch replaces
    it with strncpy(), and null terminates the input string.
    
    Signed-off-by: Suchit Karunakaran <suchitkarunakaran@gmail.com>
    Reviewed-by: Nicolas Schier <nicolas.schier@linux.dev>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

kconfig: nconf: Ensure null termination where strncpy is used [+ + +]
Author: Shankari Anand <shankari.ak0208@gmail.com>
Date:   Thu Jun 26 00:36:54 2025 +0530

    kconfig: nconf: Ensure null termination where strncpy is used
    
    [ Upstream commit f468992936894c9ce3b1659cf38c230d33b77a16 ]
    
    strncpy() does not guarantee null-termination if the source string is
    longer than the destination buffer.
    
    Ensure the buffer is explicitly null-terminated to prevent potential
    string overflows or undefined behavior.
    
    Signed-off-by: Shankari Anand <shankari.ak0208@gmail.com>
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Acked-by: Randy Dunlap <rdunlap@infradead.org>
    Tested-by: Randy Dunlap <rdunlap@infradead.org>
    Tested-by: Nicolas Schier <n.schier@avm.de>
    Acked-by: Nicolas Schier <n.schier@avm.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kselftest/arm64: Specify SVE data when testing VL set in sve-ptrace [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Mon Jun 9 16:25:33 2025 +0100

    kselftest/arm64: Specify SVE data when testing VL set in sve-ptrace
    
    [ Upstream commit 9e8ebfe677f9101bbfe1f75d548a5aec581e8213 ]
    
    Since f916dd32a943 ("arm64/fpsimd: ptrace: Mandate SVE payload for
    streaming-mode state") we reject attempts to write to the streaming mode
    regset even if there is no register data supplied, causing the tests for
    setting vector lengths and setting SVE_VL_INHERIT in sve-ptrace to
    spuriously fail. Set the flag to avoid the issue, we still support not
    supplying register data.
    
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20250609-kselftest-arm64-ssve-fixups-v2-3-998fcfa6f240@kernel.org
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ktest.pl: Prevent recursion of default variable options [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Fri Jul 18 16:18:44 2025 -0400

    ktest.pl: Prevent recursion of default variable options
    
    [ Upstream commit 61f7e318e99d3b398670518dd3f4f8510d1800fc ]
    
    If a default variable contains itself, do not recurse on it.
    
    For example:
    
      ADD_CONFIG := ${CONFIG_DIR}/temp_config
      DEFAULTS
      ADD_CONFIG = ${CONFIG_DIR}/default_config ${ADD_CONFIG}
    
    The above works because the temp variable ADD_CONFIG (is a temp because it
    is created with ":=") is already defined, it will be substituted in the
    variable option. But if it gets commented out:
    
      # ADD_CONFIG := ${CONFIG_DIR}/temp_config
      DEFAULTS
      ADD_CONFIG = ${CONFIG_DIR}/default_config ${ADD_CONFIG}
    
    Then the above will go into a recursive loop where ${ADD_CONFIG} will
    get replaced with the current definition of ADD_CONFIG which contains the
    ${ADD_CONFIG} and that will also try to get converted. ktest.pl will error
    after 100 attempts of recursion and fail.
    
    When replacing a variable with the default variable, if the default
    variable contains itself, do not replace it.
    
    Cc: "John Warthog9 Hawley" <warthog9@kernel.org>
    Cc: Dhaval Giani <dhaval.giani@gmail.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/20250718202053.732189428@kernel.org
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: nVMX: Check vmcs12->guest_ia32_debugctl on nested VM-Enter [+ + +]
Author: Maxim Levitsky <mlevitsk@redhat.com>
Date:   Thu Aug 14 17:57:23 2025 -0700

    KVM: nVMX: Check vmcs12->guest_ia32_debugctl on nested VM-Enter
    
    [ Upstream commit 095686e6fcb4150f0a55b1a25987fad3d8af58d6 ]
    
    Add a consistency check for L2's guest_ia32_debugctl, as KVM only supports
    a subset of hardware functionality, i.e. KVM can't rely on hardware to
    detect illegal/unsupported values.  Failure to check the vmcs12 value
    would allow the guest to load any harware-supported value while running L2.
    
    Take care to exempt BTF and LBR from the validity check in order to match
    KVM's behavior for writes via WRMSR, but without clobbering vmcs12.  Even
    if VM_EXIT_SAVE_DEBUG_CONTROLS is set in vmcs12, L1 can reasonably expect
    that vmcs12->guest_ia32_debugctl will not be modified if writes to the MSR
    are being intercepted.
    
    Arguably, KVM _should_ update vmcs12 if VM_EXIT_SAVE_DEBUG_CONTROLS is set
    *and* writes to MSR_IA32_DEBUGCTLMSR are not being intercepted by L1, but
    that would incur non-trivial complexity and wouldn't change the fact that
    KVM's handling of DEBUGCTL is blatantly broken.  I.e. the extra complexity
    is not worth carrying.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
    Co-developed-by: Sean Christopherson <seanjc@google.com>
    Link: https://lore.kernel.org/r/20250610232010.162191-7-seanjc@google.com
    Stable-dep-of: 7d0cce6cbe71 ("KVM: VMX: Wrap all accesses to IA32_DEBUGCTL with getter/setter APIs")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

KVM: VMX: Allow guest to set DEBUGCTL.RTM_DEBUG if RTM is supported [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Thu Aug 14 17:57:21 2025 -0700

    KVM: VMX: Allow guest to set DEBUGCTL.RTM_DEBUG if RTM is supported
    
    [ Upstream commit 17ec2f965344ee3fd6620bef7ef68792f4ac3af0 ]
    
    Let the guest set DEBUGCTL.RTM_DEBUG if RTM is supported according to the
    guest CPUID model, as debug support is supposed to be available if RTM is
    supported, and there are no known downsides to letting the guest debug RTM
    aborts.
    
    Note, there are no known bug reports related to RTM_DEBUG, the primary
    motivation is to reduce the probability of breaking existing guests when a
    future change adds a missing consistency check on vmcs12.GUEST_DEBUGCTL
    (KVM currently lets L2 run with whatever hardware supports; whoops).
    
    Note #2, KVM already emulates DR6.RTM, and doesn't restrict access to
    DR7.RTM.
    
    Fixes: 83c529151ab0 ("KVM: x86: expose Intel cpu new features (HLE, RTM) to guest")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250610232010.162191-5-seanjc@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

KVM: VMX: Extract checking of guest's DEBUGCTL into helper [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Thu Aug 14 17:57:22 2025 -0700

    KVM: VMX: Extract checking of guest's DEBUGCTL into helper
    
    [ Upstream commit 8a4351ac302cd8c19729ba2636acfd0467c22ae8 ]
    
    Move VMX's logic to check DEBUGCTL values into a standalone helper so that
    the code can be used by nested VM-Enter to apply the same logic to the
    value being loaded from vmcs12.
    
    KVM needs to explicitly check vmcs12->guest_ia32_debugctl on nested
    VM-Enter, as hardware may support features that KVM does not, i.e. relying
    on hardware to detect invalid guest state will result in false negatives.
    Unfortunately, that means applying KVM's funky suppression of BTF and LBR
    to vmcs12 so as not to break existing guests.
    
    No functional change intended.
    
    Reviewed-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
    Link: https://lore.kernel.org/r/20250610232010.162191-6-seanjc@google.com
    Stable-dep-of: 7d0cce6cbe71 ("KVM: VMX: Wrap all accesses to IA32_DEBUGCTL with getter/setter APIs")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

KVM: VMX: Preserve host's DEBUGCTLMSR_FREEZE_IN_SMM while running the guest [+ + +]
Author: Maxim Levitsky <mlevitsk@redhat.com>
Date:   Thu Aug 14 17:57:25 2025 -0700

    KVM: VMX: Preserve host's DEBUGCTLMSR_FREEZE_IN_SMM while running the guest
    
    [ Upstream commit 6b1dd26544d045f6a79e8c73572c0c0db3ef3c1a ]
    
    Set/clear DEBUGCTLMSR_FREEZE_IN_SMM in GUEST_IA32_DEBUGCTL based on the
    host's pre-VM-Enter value, i.e. preserve the host's FREEZE_IN_SMM setting
    while running the guest.  When running with the "default treatment of SMIs"
    in effect (the only mode KVM supports), SMIs do not generate a VM-Exit that
    is visible to host (non-SMM) software, and instead transitions directly
    from VMX non-root to SMM.  And critically, DEBUGCTL isn't context switched
    by hardware on SMI or RSM, i.e. SMM will run with whatever value was
    resident in hardware at the time of the SMI.
    
    Failure to preserve FREEZE_IN_SMM results in the PMU unexpectedly counting
    events while the CPU is executing in SMM, which can pollute profiling and
    potentially leak information into the guest.
    
    Check for changes in FREEZE_IN_SMM prior to every entry into KVM's inner
    run loop, as the bit can be toggled in IRQ context via IPI callback (SMP
    function call), by way of /sys/devices/cpu/freeze_on_smi.
    
    Add a field in kvm_x86_ops to communicate which DEBUGCTL bits need to be
    preserved, as FREEZE_IN_SMM is only supported and defined for Intel CPUs,
    i.e. explicitly checking FREEZE_IN_SMM in common x86 is at best weird, and
    at worst could lead to undesirable behavior in the future if AMD CPUs ever
    happened to pick up a collision with the bit.
    
    Exempt TDX vCPUs, i.e. protected guests, from the check, as the TDX Module
    owns and controls GUEST_IA32_DEBUGCTL.
    
    WARN in SVM if KVM_RUN_LOAD_DEBUGCTL is set, mostly to document that the
    lack of handling isn't a KVM bug (TDX already WARNs on any run_flag).
    
    Lastly, explicitly reload GUEST_IA32_DEBUGCTL on a VM-Fail that is missed
    by KVM but detected by hardware, i.e. in nested_vmx_restore_host_state().
    Doing so avoids the need to track host_debugctl on a per-VMCS basis, as
    GUEST_IA32_DEBUGCTL is unconditionally written by prepare_vmcs02() and
    load_vmcs12_host_state().  For the VM-Fail case, even though KVM won't
    have actually entered the guest, vcpu_enter_guest() will have run with
    vmcs02 active and thus could result in vmcs01 being run with a stale value.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
    Co-developed-by: Sean Christopherson <seanjc@google.com>
    Link: https://lore.kernel.org/r/20250610232010.162191-9-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    [sean: resolve syntactic conflict in vt_x86_ops definition]
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

KVM: VMX: Wrap all accesses to IA32_DEBUGCTL with getter/setter APIs [+ + +]
Author: Maxim Levitsky <mlevitsk@redhat.com>
Date:   Thu Aug 14 17:57:24 2025 -0700

    KVM: VMX: Wrap all accesses to IA32_DEBUGCTL with getter/setter APIs
    
    [ Upstream commit 7d0cce6cbe71af6e9c1831bff101a2b9c249c4a2 ]
    
    Introduce vmx_guest_debugctl_{read,write}() to handle all accesses to
    vmcs.GUEST_IA32_DEBUGCTL. This will allow stuffing FREEZE_IN_SMM into
    GUEST_IA32_DEBUGCTL based on the host setting without bleeding the state
    into the guest, and without needing to copy+paste the FREEZE_IN_SMM
    logic into every patch that accesses GUEST_IA32_DEBUGCTL.
    
    No functional change intended.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
    [sean: massage changelog, make inline, use in all prepare_vmcs02() cases]
    Reviewed-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
    Link: https://lore.kernel.org/r/20250610232010.162191-8-seanjc@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

KVM: x86: Convert vcpu_run()'s immediate exit param into a generic bitmap [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Thu Aug 14 17:57:19 2025 -0700

    KVM: x86: Convert vcpu_run()'s immediate exit param into a generic bitmap
    
    [ Upstream commit 2478b1b220c49d25cb1c3f061ec4f9b351d9a131 ]
    
    Convert kvm_x86_ops.vcpu_run()'s "force_immediate_exit" boolean parameter
    into an a generic bitmap so that similar "take action" information can be
    passed to vendor code without creating a pile of boolean parameters.
    
    This will allow dropping kvm_x86_ops.set_dr6() in favor of a new flag, and
    will also allow for adding similar functionality for re-loading debugctl
    in the active VMCS.
    
    Opportunistically massage the TDX WARN and comment to prepare for adding
    more run_flags, all of which are expected to be mutually exclusive with
    TDX, i.e. should be WARNed on.
    
    No functional change intended.
    
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250610232010.162191-3-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    [sean: drop TDX changes]
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

KVM: x86: Drop kvm_x86_ops.set_dr6() in favor of a new KVM_RUN flag [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Thu Aug 14 17:57:20 2025 -0700

    KVM: x86: Drop kvm_x86_ops.set_dr6() in favor of a new KVM_RUN flag
    
    [ Upstream commit 80c64c7afea1da6a93ebe88d3d29d8a60377ef80 ]
    
    Instruct vendor code to load the guest's DR6 into hardware via a new
    KVM_RUN flag, and remove kvm_x86_ops.set_dr6(), whose sole purpose was to
    load vcpu->arch.dr6 into hardware when DR6 can be read/written directly
    by the guest.
    
    Note, TDX already WARNs on any run_flag being set, i.e. will yell if KVM
    thinks DR6 needs to be reloaded.  TDX vCPUs force KVM_DEBUGREG_AUTO_SWITCH
    and never clear the flag, i.e. should never observe KVM_RUN_LOAD_GUEST_DR6.
    
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250610232010.162191-4-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    [sean: drop TDX changes]
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
leds: flash: leds-qcom-flash: Fix registry access after re-bind [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Thu May 29 08:33:36 2025 +0200

    leds: flash: leds-qcom-flash: Fix registry access after re-bind
    
    commit fab15f57360b1e6620a1d0d6b0fbee896e6c1f07 upstream.
    
    Driver in probe() updates each of 'reg_field' with 'reg_base':
    
            for (i = 0; i < REG_MAX_COUNT; i++)
                    regs[i].reg += reg_base;
    
    'reg_field' array (under variable 'regs' above) is statically allocated,
    thus each re-bind would add another 'reg_base' leading to bogus
    register addresses.  Constify the local 'reg_field' array and duplicate
    it in probe to solve this.
    
    Fixes: 96a2e242a5dc ("leds: flash: Add driver to support flash LED module in QCOM PMICs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250529063335.8785-2-krzysztof.kozlowski@linaro.org
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

leds: leds-lp50xx: Handle reg to get correct multi_index [+ + +]
Author: Johan Adolfsson <johan.adolfsson@axis.com>
Date:   Tue Jun 17 12:23:54 2025 +0200

    leds: leds-lp50xx: Handle reg to get correct multi_index
    
    [ Upstream commit 2e84a5e5374232e6f356ce5c079a5658d7e4af2c ]
    
    mc_subled used for multi_index needs well defined array indexes,
    to guarantee the desired result, use reg for that.
    
    If devicetree child nodes is processed in random or reverse order
    you may end up with multi_index "blue green red" instead of the expected
    "red green blue".
    If user space apps uses multi_index to deduce how to control the leds
    they would most likely be broken without this patch if devicetree
    processing is reversed (which it appears to be).
    
    arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-fuji.dts has reg set
    but I don't see how it can have worked without this change.
    
    If reg is not set, an error is returned,
    If reg is out of range, an error is returned.
    reg within led child nodes starts with 0, to map to the iout in each bank.
    
    Signed-off-by: Johan Adolfsson <johan.adolfsson@axis.com>
    Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Link: https://lore.kernel.org/r/20250617-led-fix-v7-1-cdbe8efc88fa@axis.com
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
lib/sbitmap: convert shallow_depth from one word to the whole sbitmap [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Thu Aug 7 11:24:12 2025 +0800

    lib/sbitmap: convert shallow_depth from one word to the whole sbitmap
    
    [ Upstream commit 42e6c6ce03fd3e41e39a0f93f9b1a1d9fa664338 ]
    
    Currently elevators will record internal 'async_depth' to throttle
    asynchronous requests, and they both calculate shallow_dpeth based on
    sb->shift, with the respect that sb->shift is the available tags in one
    word.
    
    However, sb->shift is not the availbale tags in the last word, see
    __map_depth:
    
    if (index == sb->map_nr - 1)
      return sb->depth - (index << sb->shift);
    
    For consequence, if the last word is used, more tags can be get than
    expected, for example, assume nr_requests=256 and there are four words,
    in the worst case if user set nr_requests=32, then the first word is
    the last word, and still use bits per word, which is 64, to calculate
    async_depth is wrong.
    
    One the ohter hand, due to cgroup qos, bfq can allow only one request
    to be allocated, and set shallow_dpeth=1 will still allow the number
    of words request to be allocated.
    
    Fix this problems by using shallow_depth to the whole sbitmap instead
    of per word, also change kyber, mq-deadline and bfq to follow this,
    a new helper __map_depth_with_shallow() is introduced to calculate
    available bits in each word.
    
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Link: https://lore.kernel.org/r/20250807032413.1469456-2-yukuai1@huaweicloud.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
lib: packing: Include necessary headers [+ + +]
Author: Nathan Lynch <nathan.lynch@amd.com>
Date:   Tue Jun 24 08:50:44 2025 -0500

    lib: packing: Include necessary headers
    
    [ Upstream commit 8bd0af3154b2206ce19f8b1410339f7a2a56d0c3 ]
    
    packing.h uses ARRAY_SIZE(), BUILD_BUG_ON_MSG(), min(), max(), and
    sizeof_field() without including the headers where they are defined,
    potentially causing build failures.
    
    Fix this in packing.h and sort the result.
    
    Signed-off-by: Nathan Lynch <nathan.lynch@amd.com>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Link: https://patch.msgid.link/20250624-packing-includes-v1-1-c23c81fab508@amd.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
libbpf: Verify that arena map exists when adding arena relocations [+ + +]
Author: Eduard Zingerman <eddyz87@gmail.com>
Date:   Fri Jul 18 15:20:59 2025 -0700

    libbpf: Verify that arena map exists when adding arena relocations
    
    [ Upstream commit 42be23e8f2dcb100cb9944b2b54b6bf41aff943d ]
    
    Fuzzer reported a memory access error in bpf_program__record_reloc()
    that happens when:
    - ".addr_space.1" section exists
    - there is a relocation referencing this section
    - there are no arena maps defined in BTF.
    
    Sanity checks for maps existence are already present in
    bpf_program__record_reloc(), hence this commit adds another one.
    
    [1] https://github.com/libbpf/libbpf/actions/runs/16375110681/job/46272998064
    
    Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20250718222059.281526-1-eddyz87@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 6.12.43 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Aug 20 18:30:58 2025 +0200

    Linux 6.12.43
    
    Link: https://lore.kernel.org/r/20250818124448.879659024@linuxfoundation.org
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Link: https://lore.kernel.org/r/20250819122820.553053307@linuxfoundation.org
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Tested-by: Florian Fainelli <floria.fainelli@broadcom.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Brett Mastbergen <bmastbergen@ciq.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: Avoid in-place string operation on FDT content [+ + +]
Author: Yao Zi <ziyao@disroot.org>
Date:   Sun Aug 3 22:49:47 2025 +0800

    LoongArch: Avoid in-place string operation on FDT content
    
    commit 70a2365e18affc5ebdaab1ca6a0b3c4f3aac2ee8 upstream.
    
    In init_cpu_fullname(), a constant pointer to "model" property is
    retrieved. It's later modified by the strsep() function, which is
    illegal and corrupts kernel's FDT copy. This is shown by dmesg,
    
            OF: fdt: not creating '/sys/firmware/fdt': CRC check failed
    
    Create a mutable copy of the model property and do in-place operations
    on the mutable copy instead. loongson_sysconf.cpuname lives across the
    kernel lifetime, thus manually releasing isn't necessary.
    
    Also move the of_node_put() call for the root node after the usage of
    its property, since of_node_put() decreases the reference counter thus
    usage after the call is unsafe.
    
    Cc: stable@vger.kernel.org
    Fixes: 44a01f1f726a ("LoongArch: Parsing CPU-related information from DTS")
    Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Signed-off-by: Yao Zi <ziyao@disroot.org>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: BPF: Fix jump offset calculation in tailcall [+ + +]
Author: Haoran Jiang <jianghaoran@kylinos.cn>
Date:   Tue Aug 5 19:00:22 2025 +0800

    LoongArch: BPF: Fix jump offset calculation in tailcall
    
    commit cd39d9e6b7e4c58fa77783e7aedf7ada51d02ea3 upstream.
    
    The extra pass of bpf_int_jit_compile() skips JIT context initialization
    which essentially skips offset calculation leaving out_offset = -1, so
    the jmp_offset in emit_bpf_tail_call is calculated by
    
    "#define jmp_offset (out_offset - (cur_offset))"
    
    is a negative number, which is wrong. The final generated assembly are
    as follow.
    
    54:     bgeu            $a2, $t1, -8        # 0x0000004c
    58:     addi.d          $a6, $s5, -1
    5c:     bltz            $a6, -16            # 0x0000004c
    60:     alsl.d          $t2, $a2, $a1, 0x3
    64:     ld.d            $t2, $t2, 264
    68:     beq             $t2, $zero, -28     # 0x0000004c
    
    Before apply this patch, the follow test case will reveal soft lock issues.
    
    cd tools/testing/selftests/bpf/
    ./test_progs --allow=tailcalls/tailcall_bpf2bpf_1
    
    dmesg:
    watchdog: BUG: soft lockup - CPU#2 stuck for 26s! [test_progs:25056]
    
    Cc: stable@vger.kernel.org
    Fixes: 5dc615520c4d ("LoongArch: Add BPF JIT support")
    Reviewed-by: Hengqi Chen <hengqi.chen@gmail.com>
    Signed-off-by: Haoran Jiang <jianghaoran@kylinos.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Don't use %pK through printk() in unwinder [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Date:   Sun Aug 3 22:49:47 2025 +0800

    LoongArch: Don't use %pK through printk() in unwinder
    
    commit 2362e8124ed21445c6886806e5deaee717629ddd upstream.
    
    In the past %pK was preferable to %p as it would not leak raw pointer
    values into the kernel log.
    
    Since commit ad67b74d2469 ("printk: hash addresses printed with %p")
    the regular %p has been improved to avoid this issue.
    
    Furthermore, restricted pointers ("%pK") were never meant to be used
    through printk(). They can still unintentionally leak raw pointers or
    acquire sleeping locks in atomic contexts.
    
    Switch to the regular pointer formatting which is safer and easier to
    reason about.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Make relocate_new_kernel_size be a .quad value [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Sun Aug 3 22:49:47 2025 +0800

    LoongArch: Make relocate_new_kernel_size be a .quad value
    
    commit a1a81b5477196ca1290b367404a461e046e647d5 upstream.
    
    Now relocate_new_kernel_size is a .long value, which means 32bit, so its
    high 32bit is undefined. This causes memcpy((void *)reboot_code_buffer,
    relocate_new_kernel, relocate_new_kernel_size) in machine_kexec_prepare()
    access out of range memories in some cases, and then end up with an ADE
    exception.
    
    So make relocate_new_kernel_size be a .quad value, which means 64bit, to
    avoid such errors.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
loop: Avoid updating block size under exclusive owner [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Fri Jul 11 18:32:03 2025 +0200

    loop: Avoid updating block size under exclusive owner
    
    [ Upstream commit 7e49538288e523427beedd26993d446afef1a6fb ]
    
    Syzbot came up with a reproducer where a loop device block size is
    changed underneath a mounted filesystem. This causes a mismatch between
    the block device block size and the block size stored in the superblock
    causing confusion in various places such as fs/buffer.c. The particular
    issue triggered by syzbot was a warning in __getblk_slow() due to
    requested buffer size not matching block device block size.
    
    Fix the problem by getting exclusive hold of the loop device to change
    its block size. This fails if somebody (such as filesystem) has already
    an exclusive ownership of the block device and thus prevents modifying
    the loop device under some exclusive owner which doesn't expect it.
    
    Reported-by: syzbot+01ef7a8da81a975e1ccd@syzkaller.appspotmail.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Tested-by: syzbot+01ef7a8da81a975e1ccd@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20250711163202.19623-2-jack@suse.cz
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md/raid10: set chunk_sectors limit [+ + +]
Author: John Garry <john.g.garry@oracle.com>
Date:   Fri Jul 11 10:52:56 2025 +0000

    md/raid10: set chunk_sectors limit
    
    [ Upstream commit 7ef50c4c6a9c36fa3ea6f1681a80c0bf9a797345 ]
    
    Same as done for raid0, set chunk_sectors limit to appropriately set the
    atomic write size limit.
    
    Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: John Garry <john.g.garry@oracle.com>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Link: https://lore.kernel.org/r/20250711105258.3135198-5-john.g.garry@oracle.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md: dm-zoned-target: Initialize return variable r to avoid uninitialized use [+ + +]
Author: Purva Yeshi <purvayeshi550@gmail.com>
Date:   Thu Jul 10 13:11:57 2025 +0530

    md: dm-zoned-target: Initialize return variable r to avoid uninitialized use
    
    [ Upstream commit 487767bff572d46f7c37ad846c4078f6d6c9cc55 ]
    
    Fix Smatch-detected error:
    drivers/md/dm-zoned-target.c:1073 dmz_iterate_devices()
    error: uninitialized symbol 'r'.
    
    Smatch detects a possible use of the uninitialized variable 'r' in
    dmz_iterate_devices() because if dmz->nr_ddevs is zero, the loop is
    skipped and 'r' is returned without being set, leading to undefined
    behavior.
    
    Initialize 'r' to 0 before the loop. This ensures that if there are no
    devices to iterate over, the function still returns a defined value.
    
    Signed-off-by: Purva Yeshi <purvayeshi550@gmail.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: dvb-frontends: dib7090p: fix null-ptr-deref in dib7090p_rw_on_apb() [+ + +]
Author: Alex Guo <alexguo1023@gmail.com>
Date:   Sun Jun 15 21:32:31 2025 -0400

    media: dvb-frontends: dib7090p: fix null-ptr-deref in dib7090p_rw_on_apb()
    
    [ Upstream commit ce5cac69b2edac3e3246fee03e8f4c2a1075238b ]
    
    In dib7090p_rw_on_apb, msg is controlled by user. When msg[0].buf is null and
    msg[0].len is zero, former checks on msg[0].buf would be passed. If accessing
    msg[0].buf[2] without sanity check, null pointer deref would happen. We add
    check on msg[0].len to prevent crash. Similar issue occurs when access
    msg[1].buf[0] and msg[1].buf[1].
    
    Similar commit: commit 0ed554fd769a ("media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()")
    
    Signed-off-by: Alex Guo <alexguo1023@gmail.com>
    Link: https://lore.kernel.org/r/20250616013231.730221-1-alexguo1023@gmail.com
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: dvb-frontends: w7090p: fix null-ptr-deref in w7090p_tuner_write_serpar and w7090p_tuner_read_serpar [+ + +]
Author: Alex Guo <alexguo1023@gmail.com>
Date:   Sun Jun 15 21:33:53 2025 -0400

    media: dvb-frontends: w7090p: fix null-ptr-deref in w7090p_tuner_write_serpar and w7090p_tuner_read_serpar
    
    [ Upstream commit ed0234c8458b3149f15e496b48a1c9874dd24a1b ]
    
    In w7090p_tuner_write_serpar, msg is controlled by user. When msg[0].buf is null and msg[0].len is zero, former checks on msg[0].buf would be passed. If accessing msg[0].buf[2] without sanity check, null pointer deref would happen. We add
    check on msg[0].len to prevent crash.
    
    Similar commit: commit 0ed554fd769a ("media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()")
    
    Signed-off-by: Alex Guo <alexguo1023@gmail.com>
    Link: https://lore.kernel.org/r/20250616013353.738790-1-alexguo1023@gmail.com
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: hi556: Fix reset GPIO timings [+ + +]
Author: Hans de Goede <hansg@kernel.org>
Date:   Sat May 31 21:05:33 2025 +0200

    media: hi556: Fix reset GPIO timings
    
    [ Upstream commit 99f2211a9d89fe34b3fa847fd7a4475171406cd0 ]
    
    probe() requests the reset GPIO to be set to high when getting it.
    Immeditately after this hi556_resume() is called and sets the GPIO low.
    
    If the GPIO was low before requesting it this will result in the GPIO
    only very briefly spiking high and the sensor not being properly reset.
    The same problem also happens on back to back runtime suspend + resume.
    
    Fix this by adding a sleep of 2 ms in hi556_resume() before setting
    the GPIO low (if there is a reset GPIO).
    
    The final sleep is kept unconditional, because if there is e.g. no reset
    GPIO but a controllable clock then the sensor also needs some time after
    enabling the clock.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: ipu-bridge: Add _HID for OV5670 [+ + +]
Author: Daniel Scally <dan.scally@ideasonboard.com>
Date:   Tue May 20 14:17:46 2025 +0100

    media: ipu-bridge: Add _HID for OV5670
    
    [ Upstream commit 484f8bec3ddb453321ef0b8621c25de6ce3d0302 ]
    
    The OV5670 is found on Dell 7212 tablets paired with an IPU3 ISP
    and needs to be connected by the ipu-bridge. Add it to the list
    of supported devices.
    
    Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: tc358743: Check I2C succeeded during probe [+ + +]
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date:   Wed Jun 11 19:37:15 2025 +0100

    media: tc358743: Check I2C succeeded during probe
    
    [ Upstream commit 303d81635e1d9c949b370215cc94526ed81f2e3d ]
    
    The probe for the TC358743 reads the CHIPID register from
    the device and compares it to the expected value of 0.
    If the I2C request fails then that also returns 0, so
    the driver loads thinking that the device is there.
    
    Generally I2C communications are reliable so there is
    limited need to check the return value on every transfer,
    therefore only amend the one read during probe to check
    for I2C errors.
    
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: tc358743: Increase FIFO trigger level to 374 [+ + +]
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date:   Wed Jun 11 19:37:14 2025 +0100

    media: tc358743: Increase FIFO trigger level to 374
    
    [ Upstream commit 86addd25314a1e77dbdcfddfeed0bab2f27da0e2 ]
    
    The existing fixed value of 16 worked for UYVY 720P60 over
    2 lanes at 594MHz, or UYVY 1080P60 over 4 lanes. (RGB888
    1080P60 needs 6 lanes at 594MHz).
    It doesn't allow for lower resolutions to work as the FIFO
    underflows.
    
    374 is required for 1080P24 or 1080P30 UYVY over 2 lanes @
    972Mbit/s, but >374 means that the FIFO underflows on 1080P50
    UYVY over 2 lanes @ 972Mbit/s.
    
    Whilst it would be nice to compute it, the required information
    isn't published by Toshiba.
    
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: tc358743: Return an appropriate colorspace from tc358743_set_fmt [+ + +]
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date:   Wed Jun 11 19:37:16 2025 +0100

    media: tc358743: Return an appropriate colorspace from tc358743_set_fmt
    
    [ Upstream commit 377cc006a364dfdab2f3f221cfad63a9265200b8 ]
    
    When calling tc358743_set_fmt, the code was calling tc358743_get_fmt
    to choose a valid format. However that sets the colorspace
    based on information read back from the chip, not the colour
    format requested.
    
    The result was that if you called try or set format for UYVY
    when the current format was RGB3 then you would get told SRGB,
    and try RGB3 when current was UYVY and you would get told
    SMPTE170M.
    
    The value programmed in the VI_REP register for the colorspace
    is always set by this driver, therefore there is no need to read
    back the value, and never set to REC709.
    Return the colorspace based on the format set/tried instead.
    
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: usb: hdpvr: disable zero-length read messages [+ + +]
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Thu May 22 10:09:54 2025 +0200

    media: usb: hdpvr: disable zero-length read messages
    
    [ Upstream commit b5ae5a79825ba8037b0be3ef677a24de8c063abf ]
    
    This driver passes the length of an i2c_msg directly to
    usb_control_msg(). If the message is now a read and of length 0, it
    violates the USB protocol and a warning will be printed. Enable the
    I2C_AQ_NO_ZERO_LEN_READ quirk for this adapter thus forbidding 0-length
    read messages altogether.
    
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Add quirk for HP Webcam HD 2300 [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Mon Jun 2 18:21:57 2025 +0000

    media: uvcvideo: Add quirk for HP Webcam HD 2300
    
    [ Upstream commit 53b0b80e5240fec7c5a420bffb310edc83faf4fd ]
    
    HP Webcam HD 2300 does not seem to flip the FID bit according to spec.
    
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2 [unknown]
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x03f0 HP, Inc
      idProduct          0xe207 HP Webcam HD 2300
      bcdDevice           10.20
      iManufacturer           3 Hewlett Packard
      iProduct                1 HP Webcam HD 2300
      iSerial                 0
      bNumConfigurations      1
    
    Reported-by: Michaël Melchiore <rohel01@gmail.com>
    Closes: https://lore.kernel.org/linux-media/CA+q66aRvTigH15cUyfvzPJ2mfsDFMt=CjuYNwvAZb29w8b1KDA@mail.gmail.com
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20250602-uvc-hp-quirk-v1-1-7047d94d679f@chromium.org
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Do not mark valid metadata as invalid [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Mon Jul 7 18:34:01 2025 +0000

    media: uvcvideo: Do not mark valid metadata as invalid
    
    commit bda2859bff0b9596a19648f3740c697ce4c71496 upstream.
    
    Currently, the driver performs a length check of the metadata buffer
    before the actual metadata size is known and before the metadata is
    decided to be copied. This results in valid metadata buffers being
    incorrectly marked as invalid.
    
    Move the length check to occur after the metadata size is determined and
    is decided to be copied.
    
    Cc: stable@vger.kernel.org
    Fixes: 088ead255245 ("media: uvcvideo: Add a metadata device node")
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: Hans de Goede <hansg@kernel.org>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Link: https://lore.kernel.org/r/20250707-uvc-meta-v8-1-ed17f8b1218b@chromium.org
    Signed-off-by: Hans de Goede <hansg@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: uvcvideo: Fix 1-byte out-of-bounds read in uvc_parse_format() [+ + +]
Author: Youngjun Lee <yjjuny.lee@samsung.com>
Date:   Tue Jun 10 21:41:07 2025 +0900

    media: uvcvideo: Fix 1-byte out-of-bounds read in uvc_parse_format()
    
    commit 782b6a718651eda3478b1824b37a8b3185d2740c upstream.
    
    The buffer length check before calling uvc_parse_format() only ensured
    that the buffer has at least 3 bytes (buflen > 2), buf the function
    accesses buffer[3], requiring at least 4 bytes.
    
    This can lead to an out-of-bounds read if the buffer has exactly 3 bytes.
    
    Fix it by checking that the buffer has at least 4 bytes in
    uvc_parse_format().
    
    Signed-off-by: Youngjun Lee <yjjuny.lee@samsung.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Fixes: c0efd232929c ("V4L/DVB (8145a): USB Video Class driver")
    Cc: stable@vger.kernel.org
    Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
    Link: https://lore.kernel.org/r/20250610124107.37360-1-yjjuny.lee@samsung.com
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: uvcvideo: Fix bandwidth issue for Alcor camera [+ + +]
Author: chenchangcheng <chenchangcheng@kylinos.cn>
Date:   Sat May 10 14:18:03 2025 +0800

    media: uvcvideo: Fix bandwidth issue for Alcor camera
    
    [ Upstream commit 9764401bf6f8a20eb11c2e78470f20fee91a9ea7 ]
    
    Some broken device return wrong dwMaxPayloadTransferSize fields as
    follows:
    
    [  218.632537] uvcvideo: Device requested 2752512 B/frame bandwidth.
    [  218.632598] uvcvideo: No fast enough alt setting for requested bandwidth.
    
    When dwMaxPayloadTransferSize is greater than maxpsize, it will prevent
    the camera from starting. So use the bandwidth of maxpsize.
    
    Signed-off-by: chenchangcheng <chenchangcheng@kylinos.cn>
    Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20250510061803.811433-1-ccc194101@163.com
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: v4l2-common: Reduce warnings about missing V4L2_CID_LINK_FREQ control [+ + +]
Author: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Date:   Thu May 8 10:37:45 2025 +0200

    media: v4l2-common: Reduce warnings about missing V4L2_CID_LINK_FREQ control
    
    [ Upstream commit 5a0abb8909b9dcf347fce1d201ac6686ac33fd64 ]
    
    When operating a pipeline with a missing V4L2_CID_LINK_FREQ control this
    two line warning is printed each time the pipeline is started. Reduce
    this excessive logging by only warning once for the missing control.
    
    Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: v4l2: Add support for NV12M tiled variants to v4l2_format_info() [+ + +]
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Fri Jul 11 11:41:58 2025 +0200

    media: v4l2: Add support for NV12M tiled variants to v4l2_format_info()
    
    commit f7546da1d6eb8928efb89b7faacbd6c2f8f0de5c upstream.
    
    Commit 6f1466123d73 ("media: s5p-mfc: Add YV12 and I420 multiplanar
    format support") added support for the new formats to s5p-mfc driver,
    what in turn required some internal calls to the v4l2_format_info()
    function while setting up formats. This in turn broke support for the
    "old" tiled NV12MT* formats, which are not recognized by this function.
    Fix this by adding those variants of NV12M pixel format to
    v4l2_format_info() function database.
    
    Fixes: 6f1466123d73 ("media: s5p-mfc: Add YV12 and I420 multiplanar format support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: venus: Fix OOB read due to missing payload bound check [+ + +]
Author: Vedang Nagar <quic_vnagar@quicinc.com>
Date:   Mon May 19 12:42:22 2025 +0530

    media: venus: Fix OOB read due to missing payload bound check
    
    commit 06d6770ff0d8cc8dfd392329a8cc03e2a83e7289 upstream.
    
    Currently, The event_seq_changed() handler processes a variable number
    of properties sent by the firmware. The number of properties is indicated
    by the firmware and used to iterate over the payload. However, the
    payload size is not being validated against the actual message length.
    
    This can lead to out-of-bounds memory access if the firmware provides a
    property count that exceeds the data available in the payload. Such a
    condition can result in kernel crashes or potential information leaks if
    memory beyond the buffer is accessed.
    
    Fix this by properly validating the remaining size of the payload before
    each property access and updating bounds accordingly as properties are
    parsed.
    
    This ensures that property parsing is safely bounded within the received
    message buffer and protects against malformed or malicious firmware
    behavior.
    
    Fixes: 09c2845e8fe4 ("[media] media: venus: hfi: add Host Firmware Interface (HFI)")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vedang Nagar <quic_vnagar@quicinc.com>
    Reviewed-by: Vikash Garodia <quic_vgarodia@quicinc.com>
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Co-developed-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
    Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
    Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mei: bus: Check for still connected devices in mei_cl_bus_dev_release() [+ + +]
Author: Hans de Goede <hansg@kernel.org>
Date:   Mon Jun 23 10:50:52 2025 +0200

    mei: bus: Check for still connected devices in mei_cl_bus_dev_release()
    
    [ Upstream commit 35e8a426b16adbecae7a4e0e3c00fc8d0273db53 ]
    
    mei_cl_bus_dev_release() also frees the mei-client (struct mei_cl)
    belonging to the device being released.
    
    If there are bugs like the just fixed bug in the ACE/CSI2 mei drivers,
    the mei-client being freed might still be part of the mei_device's
    file_list and iterating over this list after the freeing will then trigger
    a use-afer-free bug.
    
    Add a check to mei_cl_bus_dev_release() to make sure that the to-be-freed
    mei-client is not on the mei_device's file_list.
    
    Signed-off-by: Hans de Goede <hansg@kernel.org>
    Link: https://lore.kernel.org/r/20250623085052.12347-11-hansg@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mfd: axp20x: Set explicit ID for AXP313 regulator [+ + +]
Author: Chen-Yu Tsai <wens@csie.org>
Date:   Fri Jun 20 01:32:07 2025 +0800

    mfd: axp20x: Set explicit ID for AXP313 regulator
    
    [ Upstream commit 88828c7e940dd45d139ad4a39d702b23840a37c5 ]
    
    On newer boards featuring the A523 SoC, the AXP323 (related to the
    AXP313) is paired with the AXP717 and serves as a secondary PMIC
    providing additional regulator outputs. However the MFD cells are all
    registered with PLATFORM_DEVID_NONE, which causes the regulator cells
    to conflict with each other.
    
    Commit e37ec3218870 ("mfd: axp20x: Allow multiple regulators") attempted
    to fix this by switching to PLATFORM_DEVID_AUTO so that the device names
    would all be different, however that broke IIO channel mapping, which is
    also tied to the device names. As a result the change was later reverted.
    
    Instead, here we attempt to make sure the AXP313/AXP323 regulator cell
    does not conflict by explicitly giving it an ID number. This was
    previously done for the AXP809+AXP806 pair used with the A80 SoC.
    
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Link: https://lore.kernel.org/r/20250619173207.3367126-1-wens@kernel.org
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mfd: cros_ec: Separate charge-control probing from USB-PD [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Wed May 21 16:42:51 2025 +0200

    mfd: cros_ec: Separate charge-control probing from USB-PD
    
    commit e40fc1160d491c3bcaf8e940ae0dde0a7c5e8e14 upstream.
    
    The charge-control subsystem in the ChromeOS EC is not strictly tied to
    its USB-PD subsystem.
    
    Since commit 7613bc0d116a ("mfd: cros_ec: Don't load charger with UCSI")
    the presence of EC_FEATURE_UCSI_PPM would inhibit the probing of the
    charge-control driver.
    
    Furthermore recent versions of the EC firmware in Framework laptops
    hard-disable EC_FEATURE_USB_PD to avoid probing cros-usbpd-charger,
    which then also breaks cros-charge-control.
    
    Instead use the dedicated EC_FEATURE_CHARGER.
    
    Cc: stable@vger.kernel.org
    Link: https://github.com/FrameworkComputer/EmbeddedController/commit/1d7bcf1d50137c8c01969eb65880bc83e424597e
    Fixes: 555b5fcdb844 ("mfd: cros_ec: Register charge control subdevice")
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Tested-by: Tom Vincent <linux@tlvince.com>
    Link: https://lore.kernel.org/r/20250521-cros-ec-mfd-chctl-probe-v1-1-6ebfe3a6efa7@weissschuh.net
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
MIPS: Don't crash in stack_top() for tasks without ABI or vDSO [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Date:   Wed Jun 11 13:28:26 2025 +0200

    MIPS: Don't crash in stack_top() for tasks without ABI or vDSO
    
    [ Upstream commit e9f4a6b3421e936c3ee9d74710243897d74dbaa2 ]
    
    Not all tasks have an ABI associated or vDSO mapped,
    for example kthreads never do.
    If such a task ever ends up calling stack_top(), it will derefence the
    NULL ABI pointer and crash.
    
    This can for example happen when using kunit:
    
        mips_stack_top+0x28/0xc0
        arch_pick_mmap_layout+0x190/0x220
        kunit_vm_mmap_init+0xf8/0x138
        __kunit_add_resource+0x40/0xa8
        kunit_vm_mmap+0x88/0xd8
        usercopy_test_init+0xb8/0x240
        kunit_try_run_case+0x5c/0x1a8
        kunit_generic_run_threadfn_adapter+0x28/0x50
        kthread+0x118/0x240
        ret_from_kernel_thread+0x14/0x1c
    
    Only dereference the ABI point if it is set.
    
    The GIC page is also included as it is specific to the vDSO.
    Also move the randomization adjustment into the same conditional.
    
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Reviewed-by: David Gow <davidgow@google.com>
    Reviewed-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: lantiq: falcon: sysctrl: fix request memory check logic [+ + +]
Author: Shiji Yang <yangshiji66@outlook.com>
Date:   Wed Jun 18 22:53:23 2025 +0800

    MIPS: lantiq: falcon: sysctrl: fix request memory check logic
    
    [ Upstream commit 9c9a7ff9882fc6ba7d2f4050697e8bb80383e8dc ]
    
    request_mem_region() will return NULL instead of error code
    when the memory request fails. Therefore, we should check if
    the return value is non-zero instead of less than zero. In
    this way, this patch also fixes the build warnings:
    
    arch/mips/lantiq/falcon/sysctrl.c:214:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
      214 |                                 res_status.name) < 0) ||
          |                                                  ^
    arch/mips/lantiq/falcon/sysctrl.c:216:47: error: ordered comparison of pointer with integer zero [-Werror=extra]
      216 |                                 res_ebu.name) < 0) ||
          |                                               ^
    arch/mips/lantiq/falcon/sysctrl.c:219:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
      219 |                                 res_sys[0].name) < 0) ||
          |                                                  ^
    arch/mips/lantiq/falcon/sysctrl.c:222:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
      222 |                                 res_sys[1].name) < 0) ||
          |                                                  ^
    arch/mips/lantiq/falcon/sysctrl.c:225:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
      225 |                                 res_sys[2].name) < 0))
          |
    
    Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: vpe-mt: add missing prototypes for vpe_{alloc,start,stop,free} [+ + +]
Author: Shiji Yang <yangshiji66@outlook.com>
Date:   Thu Jul 3 21:06:32 2025 +0800

    MIPS: vpe-mt: add missing prototypes for vpe_{alloc,start,stop,free}
    
    [ Upstream commit 844615dd0f2d95c018ec66b943e08af22b62aff3 ]
    
    These functions are exported but their prototypes are not defined.
    This patch adds the missing function prototypes to fix the following
    compilation warnings:
    
    arch/mips/kernel/vpe-mt.c:180:7: error: no previous prototype for 'vpe_alloc' [-Werror=missing-prototypes]
      180 | void *vpe_alloc(void)
          |       ^~~~~~~~~
    arch/mips/kernel/vpe-mt.c:198:5: error: no previous prototype for 'vpe_start' [-Werror=missing-prototypes]
      198 | int vpe_start(void *vpe, unsigned long start)
          |     ^~~~~~~~~
    arch/mips/kernel/vpe-mt.c:208:5: error: no previous prototype for 'vpe_stop' [-Werror=missing-prototypes]
      208 | int vpe_stop(void *vpe)
          |     ^~~~~~~~
    arch/mips/kernel/vpe-mt.c:229:5: error: no previous prototype for 'vpe_free' [-Werror=missing-prototypes]
      229 | int vpe_free(void *vpe)
          |     ^~~~~~~~
    
    Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
misc: rtsx: usb: Ensure mmc child device is active when card is present [+ + +]
Author: Ricky Wu <ricky_wu@realtek.com>
Date:   Fri Jul 11 22:01:43 2025 +0800

    misc: rtsx: usb: Ensure mmc child device is active when card is present
    
    commit 966c5cd72be8989c8a559ddef8e8ff07a37c5eb0 upstream.
    
    When a card is present in the reader, the driver currently defers
    autosuspend by returning -EAGAIN during the suspend callback to
    trigger USB remote wakeup signaling. However, this does not guarantee
    that the mmc child device has been resumed, which may cause issues if
    it remains suspended while the card is accessible.
    This patch ensures that all child devices, including the mmc host
    controller, are explicitly resumed before returning -EAGAIN. This
    fixes a corner case introduced by earlier remote wakeup handling,
    improving reliability of runtime PM when a card is inserted.
    
    Fixes: 883a87ddf2f1 ("misc: rtsx_usb: Use USB remote wakeup signaling for card insertion detection")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ricky Wu <ricky_wu@realtek.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Link: https://lore.kernel.org/r/20250711140143.2105224-1-ricky_wu@realtek.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm, slab: restore NUMA policy support for large kmalloc [+ + +]
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Mon Jun 2 13:02:12 2025 +0200

    mm, slab: restore NUMA policy support for large kmalloc
    
    commit e2d18cbf178775ad377ad88ee55e6e183c38d262 upstream.
    
    The slab allocator observes the task's NUMA policy in various places
    such as allocating slab pages. Large kmalloc() allocations used to do
    that too, until an unintended change by c4cab557521a ("mm/slab_common:
    cleanup kmalloc_large()") resulted in ignoring mempolicy and just
    preferring the local node. Restore the NUMA policy support.
    
    Fixes: c4cab557521a ("mm/slab_common: cleanup kmalloc_large()")
    Cc: <stable@vger.kernel.org>
    Acked-by: Christoph Lameter (Ampere) <cl@gentwo.org>
    Acked-by: Roman Gushchin <roman.gushchin@linux.dev>
    Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/damon/core: commit damos->target_nid [+ + +]
Author: Bijan Tabatabai <bijantabatab@micron.com>
Date:   Tue Jul 8 19:47:29 2025 -0500

    mm/damon/core: commit damos->target_nid
    
    commit 579bd5006fe7f4a7abb32da0160d376476cab67d upstream.
    
    When committing new scheme parameters from the sysfs, the target_nid field
    of the damos struct would not be copied.  This would result in the
    target_nid field to retain its original value, despite being updated in
    the sysfs interface.
    
    This patch fixes this issue by copying target_nid in damos_commit().
    
    Link: https://lkml.kernel.org/r/20250709004729.17252-1-bijan311@gmail.com
    Fixes: 83dc7bbaecae ("mm/damon/sysfs: use damon_commit_ctx()")
    Signed-off-by: Bijan Tabatabai <bijantabatab@micron.com>
    Reviewed-by: SeongJae Park <sj@kernel.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Ravi Shankar Jonnalagadda <ravis.opensrc@micron.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/kmemleak: avoid deadlock by moving pr_warn() outside kmemleak_lock [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Thu Jul 31 02:57:18 2025 -0700

    mm/kmemleak: avoid deadlock by moving pr_warn() outside kmemleak_lock
    
    commit 47b0f6d8f0d2be4d311a49e13d2fd5f152f492b2 upstream.
    
    When netpoll is enabled, calling pr_warn_once() while holding
    kmemleak_lock in mem_pool_alloc() can cause a deadlock due to lock
    inversion with the netconsole subsystem.  This occurs because
    pr_warn_once() may trigger netpoll, which eventually leads to
    __alloc_skb() and back into kmemleak code, attempting to reacquire
    kmemleak_lock.
    
    This is the path for the deadlock.
    
    mem_pool_alloc()
      -> raw_spin_lock_irqsave(&kmemleak_lock, flags);
          -> pr_warn_once()
              -> netconsole subsystem
                 -> netpoll
                     -> __alloc_skb
                       -> __create_object
                         -> raw_spin_lock_irqsave(&kmemleak_lock, flags);
    
    Fix this by setting a flag and issuing the pr_warn_once() after
    kmemleak_lock is released.
    
    Link: https://lkml.kernel.org/r/20250731-kmemleak_lock-v1-1-728fd470198f@debian.org
    Fixes: c5665868183f ("mm: kmemleak: use the memory pool for early allocations")
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Reported-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Catalin Marinas <catalin.marinas@arm.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/kmemleak: avoid soft lockup in __kmemleak_do_cleanup() [+ + +]
Author: Waiman Long <longman@redhat.com>
Date:   Mon Jul 28 15:02:48 2025 -0400

    mm/kmemleak: avoid soft lockup in __kmemleak_do_cleanup()
    
    commit d1534ae23c2b6be350c8ab060803fbf6e9682adc upstream.
    
    A soft lockup warning was observed on a relative small system x86-64
    system with 16 GB of memory when running a debug kernel with kmemleak
    enabled.
    
      watchdog: BUG: soft lockup - CPU#8 stuck for 33s! [kworker/8:1:134]
    
    The test system was running a workload with hot unplug happening in
    parallel.  Then kemleak decided to disable itself due to its inability to
    allocate more kmemleak objects.  The debug kernel has its
    CONFIG_DEBUG_KMEMLEAK_MEM_POOL_SIZE set to 40,000.
    
    The soft lockup happened in kmemleak_do_cleanup() when the existing
    kmemleak objects were being removed and deleted one-by-one in a loop via a
    workqueue.  In this particular case, there are at least 40,000 objects
    that need to be processed and given the slowness of a debug kernel and the
    fact that a raw_spinlock has to be acquired and released in
    __delete_object(), it could take a while to properly handle all these
    objects.
    
    As kmemleak has been disabled in this case, the object removal and
    deletion process can be further optimized as locking isn't really needed.
    However, it is probably not worth the effort to optimize for such an edge
    case that should rarely happen.  So the simple solution is to call
    cond_resched() at periodic interval in the iteration loop to avoid soft
    lockup.
    
    Link: https://lkml.kernel.org/r/20250728190248.605750-1-longman@redhat.com
    Signed-off-by: Waiman Long <longman@redhat.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.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/memory-tier: fix abstract distance calculation overflow [+ + +]
Author: Li Zhijian <lizhijian@fujitsu.com>
Date:   Tue Jun 10 14:27:51 2025 +0800

    mm/memory-tier: fix abstract distance calculation overflow
    
    commit cce35103135c7ffc7bebc32ebfc74fe1f2c3cb5d upstream.
    
    In mt_perf_to_adistance(), the calculation of abstract distance (adist)
    involves multiplying several int values including
    MEMTIER_ADISTANCE_DRAM.
    
    *adist = MEMTIER_ADISTANCE_DRAM *
                    (perf->read_latency + perf->write_latency) /
                    (default_dram_perf.read_latency + default_dram_perf.write_latency) *
                    (default_dram_perf.read_bandwidth + default_dram_perf.write_bandwidth) /
                    (perf->read_bandwidth + perf->write_bandwidth);
    
    Since these values can be large, the multiplication may exceed the
    maximum value of an int (INT_MAX) and overflow (Our platform did),
    leading to an incorrect adist.
    
    User-visible impact:
    The memory tiering subsystem will misinterpret slow memory (like CXL)
    as faster than DRAM, causing inappropriate demotion of pages from
    CXL (slow memory) to DRAM (fast memory).
    
    For example, we will see the following demotion chains from the dmesg, where
    Node0,1 are DRAM, and Node2,3 are CXL node:
     Demotion targets for Node 0: null
     Demotion targets for Node 1: null
     Demotion targets for Node 2: preferred: 0-1, fallback: 0-1
     Demotion targets for Node 3: preferred: 0-1, fallback: 0-1
    
    Change MEMTIER_ADISTANCE_DRAM to be a long constant by writing it with
    the 'L' suffix.  This prevents the overflow because the multiplication
    will then be done in the long type which has a larger range.
    
    Link: https://lkml.kernel.org/r/20250611023439.2845785-1-lizhijian@fujitsu.com
    Link: https://lkml.kernel.org/r/20250610062751.2365436-1-lizhijian@fujitsu.com
    Fixes: 3718c02dbd4c ("acpi, hmat: calculate abstract distance with HMAT")
    Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
    Reviewed-by: Huang Ying <ying.huang@linux.alibaba.com>
    Acked-by: Balbir Singh <balbirs@nvidia.com>
    Reviewed-by: Donet Tom <donettom@linux.ibm.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/ptdump: take the memory hotplug lock inside ptdump_walk_pgd() [+ + +]
Author: Anshuman Khandual <anshuman.khandual@arm.com>
Date:   Fri Jun 20 10:54:27 2025 +0530

    mm/ptdump: take the memory hotplug lock inside ptdump_walk_pgd()
    
    commit 59305202c67fea50378dcad0cc199dbc13a0e99a upstream.
    
    Memory hot remove unmaps and tears down various kernel page table regions
    as required.  The ptdump code can race with concurrent modifications of
    the kernel page tables.  When leaf entries are modified concurrently, the
    dump code may log stale or inconsistent information for a VA range, but
    this is otherwise not harmful.
    
    But when intermediate levels of kernel page table are freed, the dump code
    will continue to use memory that has been freed and potentially
    reallocated for another purpose.  In such cases, the ptdump code may
    dereference bogus addresses, leading to a number of potential problems.
    
    To avoid the above mentioned race condition, platforms such as arm64,
    riscv and s390 take memory hotplug lock, while dumping kernel page table
    via the sysfs interface /sys/kernel/debug/kernel_page_tables.
    
    Similar race condition exists while checking for pages that might have
    been marked W+X via /sys/kernel/debug/kernel_page_tables/check_wx_pages
    which in turn calls ptdump_check_wx().  Instead of solving this race
    condition again, let's just move the memory hotplug lock inside generic
    ptdump_check_wx() which will benefit both the scenarios.
    
    Drop get_online_mems() and put_online_mems() combination from all existing
    platform ptdump code paths.
    
    Link: https://lkml.kernel.org/r/20250620052427.2092093-1-anshuman.khandual@arm.com
    Fixes: bbd6ec605c0f ("arm64/mm: Enable memory hot remove")
    Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Dev Jain <dev.jain@arm.com>
    Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>    [s390]
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Alexander Gordeev <agordeev@linux.ibm.com>
    Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
    Cc: Sven Schnelle <svens@linux.ibm.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/smaps: fix race between smaps_hugetlb_range and migration [+ + +]
Author: Jinjiang Tu <tujinjiang@huawei.com>
Date:   Thu Jul 24 17:09:56 2025 +0800

    mm/smaps: fix race between smaps_hugetlb_range and migration
    
    [ Upstream commit 45d19b4b6c2d422771c29b83462d84afcbb33f01 ]
    
    smaps_hugetlb_range() handles the pte without holdling ptl, and may be
    concurrenct with migration, leaing to BUG_ON in pfn_swap_entry_to_page().
    The race is as follows.
    
    smaps_hugetlb_range              migrate_pages
      huge_ptep_get
                                       remove_migration_ptes
                                       folio_unlock
      pfn_swap_entry_folio
        BUG_ON
    
    To fix it, hold ptl lock in smaps_hugetlb_range().
    
    Link: https://lkml.kernel.org/r/20250724090958.455887-1-tujinjiang@huawei.com
    Link: https://lkml.kernel.org/r/20250724090958.455887-2-tujinjiang@huawei.com
    Fixes: 25ee01a2fca0 ("mm: hugetlb: proc: add hugetlb-related fields to /proc/PID/smaps")
    Signed-off-by: Jinjiang Tu <tujinjiang@huawei.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Andrei Vagin <avagin@gmail.com>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: Brahmajit Das <brahmajit.xyz@gmail.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Dev Jain <dev.jain@arm.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Joern Engel <joern@logfs.org>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mmc: rtsx_usb_sdmmc: Fix error-path in sd_set_power_mode() [+ + +]
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Tue Jun 10 13:16:23 2025 +0200

    mmc: rtsx_usb_sdmmc: Fix error-path in sd_set_power_mode()
    
    [ Upstream commit 47a255f7d2eabee06cfbf5b1c2379749442fd01d ]
    
    In the error path of sd_set_power_mode() we don't update host->power_mode,
    which could lead to an imbalance of the runtime PM usage count. Fix this by
    always updating host->power_mode.
    
    Reviewed-by: Avri Altman <avri.altman@sandisk.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Acked-by: Ricky Wu <ricky_wu@realtek.com>
    Link: https://lore.kernel.org/r/20250610111633.504366-2-ulf.hansson@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mmc: sdhci-msm: Ensure SD card power isn't ON when card removed [+ + +]
Author: Sarthak Garg <quic_sartgarg@quicinc.com>
Date:   Tue Jul 1 15:36:59 2025 +0530

    mmc: sdhci-msm: Ensure SD card power isn't ON when card removed
    
    [ Upstream commit db58532188ebf51d52b1d7693d9e94c76b926e9f ]
    
    Many mobile phones feature multi-card tray designs, where the same
    tray is used for both SD and SIM cards. If the SD card is placed
    at the outermost location in the tray, the SIM card may come in
    contact with SD card power-supply while removing the tray, possibly
    resulting in SIM damage.
    
    To prevent that, make sure the SD card is really inserted by reading
    the Card Detect pin state. If it's not, turn off the power in
    sdhci_msm_check_power_status() and also set the BUS_FAIL power state
    on the controller as part of pwr_irq handling for BUS_ON request.
    
    Signed-off-by: Sarthak Garg <quic_sartgarg@quicinc.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Link: https://lore.kernel.org/r/20250701100659.3310386-1-quic_sartgarg@quicinc.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
module: Prevent silent truncation of module name in delete_module(2) [+ + +]
Author: Petr Pavlu <petr.pavlu@suse.com>
Date:   Mon Jun 30 16:32:32 2025 +0200

    module: Prevent silent truncation of module name in delete_module(2)
    
    [ Upstream commit a6323bd4e611567913e23df5b58f2d4e4da06789 ]
    
    Passing a module name longer than MODULE_NAME_LEN to the delete_module
    syscall results in its silent truncation. This really isn't much of
    a problem in practice, but it could theoretically lead to the removal of an
    incorrect module. It is more sensible to return ENAMETOOLONG or ENOENT in
    such a case.
    
    Update the syscall to return ENOENT, as documented in the delete_module(2)
    man page to mean "No module by that name exists." This is appropriate
    because a module with a name longer than MODULE_NAME_LEN cannot be loaded
    in the first place.
    
    Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
    Reviewed-by: Daniel Gomez <da.gomez@samsung.com>
    Link: https://lore.kernel.org/r/20250630143535.267745-2-petr.pavlu@suse.com
    Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
neighbour: add support for NUD_PERMANENT proxy entries [+ + +]
Author: Nicolas Escande <nico.escande@gmail.com>
Date:   Tue Jun 17 16:13:34 2025 +0200

    neighbour: add support for NUD_PERMANENT proxy entries
    
    [ Upstream commit c7d78566bbd30544a0618a6ffbc97bc0ddac7035 ]
    
    As discussesd before in [0] proxy entries (which are more configuration
    than runtime data) should stay when the link (carrier) goes does down.
    This is what happens for regular neighbour entries.
    
    So lets fix this by:
      - storing in proxy entries the fact that it was added as NUD_PERMANENT
      - not removing NUD_PERMANENT proxy entries when the carrier goes down
        (same as how it's done in neigh_flush_dev() for regular neigh entries)
    
    [0]: https://lore.kernel.org/netdev/c584ef7e-6897-01f3-5b80-12b53f7b4bf4@kernel.org/
    
    Signed-off-by: Nicolas Escande <nico.escande@gmail.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250617141334.3724863-1-nico.escande@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5e: Properly access RCU protected qdisc_sleeping variable [+ + +]
Author: Leon Romanovsky <leon@kernel.org>
Date:   Wed Jul 16 17:17:49 2025 +0300

    net/mlx5e: Properly access RCU protected qdisc_sleeping variable
    
    [ Upstream commit 2a601b2d35623065d31ebaf697b07502d54878c9 ]
    
    qdisc_sleeping variable is declared as "struct Qdisc __rcu" and
    as such needs proper annotation while accessing it.
    
    Without rtnl_dereference(), the following error is generated by sparse:
    
    drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:377:40: warning:
      incorrect type in initializer (different address spaces)
    drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:377:40:    expected
      struct Qdisc *qdisc
    drivers/net/ethernet/mellanox/mlx5/core/en/qos.c:377:40:    got struct
      Qdisc [noderef] __rcu *qdisc_sleeping
    
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Link: https://patch.msgid.link/1752675472-201445-4-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/sched: ets: use old 'nbands' while purging unused classes [+ + +]
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Tue Aug 12 18:40:29 2025 +0200

    net/sched: ets: use old 'nbands' while purging unused classes
    
    commit 87c6efc5ce9c126ae4a781bc04504b83780e3650 upstream.
    
    Shuang reported sch_ets test-case [1] crashing in ets_class_qlen_notify()
    after recent changes from Lion [2]. The problem is: in ets_qdisc_change()
    we purge unused DWRR queues; the value of 'q->nbands' is the new one, and
    the cleanup should be done with the old one. The problem is here since my
    first attempts to fix ets_qdisc_change(), but it surfaced again after the
    recent qdisc len accounting fixes. Fix it purging idle DWRR queues before
    assigning a new value of 'q->nbands', so that all purge operations find a
    consistent configuration:
    
     - old 'q->nbands' because it's needed by ets_class_find()
     - old 'q->nstrict' because it's needed by ets_class_is_strict()
    
     BUG: kernel NULL pointer dereference, address: 0000000000000000
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 0 P4D 0
     Oops: Oops: 0000 [#1] SMP NOPTI
     CPU: 62 UID: 0 PID: 39457 Comm: tc Kdump: loaded Not tainted 6.12.0-116.el10.x86_64 #1 PREEMPT(voluntary)
     Hardware name: Dell Inc. PowerEdge R640/06DKY5, BIOS 2.12.2 07/09/2021
     RIP: 0010:__list_del_entry_valid_or_report+0x4/0x80
     Code: ff 4c 39 c7 0f 84 39 19 8e ff b8 01 00 00 00 c3 cc cc cc cc 66 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <48> 8b 17 48 8b 4f 08 48 85 d2 0f 84 56 19 8e ff 48 85 c9 0f 84 ab
     RSP: 0018:ffffba186009f400 EFLAGS: 00010202
     RAX: 00000000000000d6 RBX: 0000000000000000 RCX: 0000000000000004
     RDX: ffff9f0fa29b69c0 RSI: 0000000000000000 RDI: 0000000000000000
     RBP: ffffffffc12c2400 R08: 0000000000000008 R09: 0000000000000004
     R10: ffffffffffffffff R11: 0000000000000004 R12: 0000000000000000
     R13: ffff9f0f8cfe0000 R14: 0000000000100005 R15: 0000000000000000
     FS:  00007f2154f37480(0000) GS:ffff9f269c1c0000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000000 CR3: 00000001530be001 CR4: 00000000007726f0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     PKRU: 55555554
     Call Trace:
      <TASK>
      ets_class_qlen_notify+0x65/0x90 [sch_ets]
      qdisc_tree_reduce_backlog+0x74/0x110
      ets_qdisc_change+0x630/0xa40 [sch_ets]
      __tc_modify_qdisc.constprop.0+0x216/0x7f0
      tc_modify_qdisc+0x7c/0x120
      rtnetlink_rcv_msg+0x145/0x3f0
      netlink_rcv_skb+0x53/0x100
      netlink_unicast+0x245/0x390
      netlink_sendmsg+0x21b/0x470
      ____sys_sendmsg+0x39d/0x3d0
      ___sys_sendmsg+0x9a/0xe0
      __sys_sendmsg+0x7a/0xd0
      do_syscall_64+0x7d/0x160
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
     RIP: 0033:0x7f2155114084
     Code: 89 02 b8 ff ff ff ff eb bb 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 80 3d 25 f0 0c 00 00 74 13 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89
     RSP: 002b:00007fff1fd7a988 EFLAGS: 00000202 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 0000560ec063e5e0 RCX: 00007f2155114084
     RDX: 0000000000000000 RSI: 00007fff1fd7a9f0 RDI: 0000000000000003
     RBP: 00007fff1fd7aa60 R08: 0000000000000010 R09: 000000000000003f
     R10: 0000560ee9b3a010 R11: 0000000000000202 R12: 00007fff1fd7aae0
     R13: 000000006891ccde R14: 0000560ec063e5e0 R15: 00007fff1fd7aad0
      </TASK>
    
     [1] https://lore.kernel.org/netdev/e08c7f4a6882f260011909a868311c6e9b54f3e4.1639153474.git.dcaratti@redhat.com/
     [2] https://lore.kernel.org/netdev/d912cbd7-193b-4269-9857-525bee8bbb6a@gmail.com/
    
    Cc: stable@vger.kernel.org
    Fixes: 103406b38c60 ("net/sched: Always pass notifications when child class becomes empty")
    Fixes: c062f2a0b04d ("net/sched: sch_ets: don't remove idle classes from the round-robin list")
    Fixes: dcc68b4d8084 ("net: sch_ets: Add a new Qdisc")
    Reported-by: Li Shuang <shuali@redhat.com>
    Closes: https://issues.redhat.com/browse/RHEL-108026
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Co-developed-by: Ivan Vecera <ivecera@redhat.com>
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Link: https://patch.msgid.link/7928ff6d17db47a2ae7cc205c44777b1f1950545.1755016081.git.dcaratti@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: Add net_passive_inc() and net_passive_dec(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Tue Aug 12 14:32:05 2025 -0400

    net: Add net_passive_inc() and net_passive_dec().
    
    [ Upstream commit e57a6320215c3967f51ab0edeff87db2095440e4 ]
    
    net_drop_ns() is NULL when CONFIG_NET_NS is disabled.
    
    The next patch introduces a function that increments
    and decrements net->passive.
    
    As a prep, let's rename and export net_free() to
    net_passive_dec() and add net_passive_inc().
    
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/netdev/CANn89i+oUCt2VGvrbrweniTendZFEh+nwS=uonc004-aPkWy-Q@mail.gmail.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250217191129.19967-2-kuniyu@amazon.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 59b33fab4ca4 ("smb: client: fix netns refcount leak after net_passive changes")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ag71xx: Add missing check after DMA map [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Wed Jul 16 11:57:25 2025 +0200

    net: ag71xx: Add missing check after DMA map
    
    [ Upstream commit 96a1e15e60216b52da0e6da5336b6d7f5b0188b0 ]
    
    The DMA map functions can fail and should be tested for errors.
    
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250716095733.37452-3-fourier.thomas@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: atlantic: add set_power to fw_ops for atl2 to fix wol [+ + +]
Author: Eric Work <work.eric@gmail.com>
Date:   Sat Jun 28 22:15:28 2025 -0700

    net: atlantic: add set_power to fw_ops for atl2 to fix wol
    
    [ Upstream commit fad9cf216597a71936ac87143d1618fbbcf97cbe ]
    
    Aquantia AQC113(C) using ATL2FW doesn't properly prepare the NIC for
    enabling wake-on-lan. The FW operation `set_power` was only implemented
    for `hw_atl` and not `hw_atl2`. Implement the `set_power` functionality
    for `hw_atl2`.
    
    Tested with both AQC113 and AQC113C devices. Confirmed you can shutdown
    the system and wake from S5 using magic packets. NIC was previously
    powered off when entering S5. If the NIC was configured for WOL by the
    Windows driver, loading the atlantic driver would disable WOL.
    
    Partially cherry-picks changes from commit,
    https://github.com/Aquantia/AQtion/commit/37bd5cc
    
    Attributing original authors from Marvell for the referenced commit.
    
    Closes: https://github.com/Aquantia/AQtion/issues/70
    Co-developed-by: Igor Russkikh <irusskikh@marvell.com>
    Co-developed-by: Mark Starovoitov <mstarovoitov@marvell.com>
    Co-developed-by: Dmitry Bogdanov <dbogdanov@marvell.com>
    Co-developed-by: Pavel Belous <pbelous@marvell.com>
    Co-developed-by: Nikita Danilov <ndanilov@marvell.com>
    Signed-off-by: Eric Work <work.eric@gmail.com>
    Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
    Link: https://patch.msgid.link/20250629051535.5172-1-work.eric@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: better track kernel sockets lifetime [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Aug 12 14:32:06 2025 -0400

    net: better track kernel sockets lifetime
    
    [ Upstream commit 5c70eb5c593d64d93b178905da215a9fd288a4b5 ]
    
    While kernel sockets are dismantled during pernet_operations->exit(),
    their freeing can be delayed by any tx packets still held in qdisc
    or device queues, due to skb_set_owner_w() prior calls.
    
    This then trigger the following warning from ref_tracker_dir_exit() [1]
    
    To fix this, make sure that kernel sockets own a reference on net->passive.
    
    Add sk_net_refcnt_upgrade() helper, used whenever a kernel socket
    is converted to a refcounted one.
    
    [1]
    
    [  136.263918][   T35] ref_tracker: net notrefcnt@ffff8880638f01e0 has 1/2 users at
    [  136.263918][   T35]      sk_alloc+0x2b3/0x370
    [  136.263918][   T35]      inet6_create+0x6ce/0x10f0
    [  136.263918][   T35]      __sock_create+0x4c0/0xa30
    [  136.263918][   T35]      inet_ctl_sock_create+0xc2/0x250
    [  136.263918][   T35]      igmp6_net_init+0x39/0x390
    [  136.263918][   T35]      ops_init+0x31e/0x590
    [  136.263918][   T35]      setup_net+0x287/0x9e0
    [  136.263918][   T35]      copy_net_ns+0x33f/0x570
    [  136.263918][   T35]      create_new_namespaces+0x425/0x7b0
    [  136.263918][   T35]      unshare_nsproxy_namespaces+0x124/0x180
    [  136.263918][   T35]      ksys_unshare+0x57d/0xa70
    [  136.263918][   T35]      __x64_sys_unshare+0x38/0x40
    [  136.263918][   T35]      do_syscall_64+0xf3/0x230
    [  136.263918][   T35]      entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  136.263918][   T35]
    [  136.343488][   T35] ref_tracker: net notrefcnt@ffff8880638f01e0 has 1/2 users at
    [  136.343488][   T35]      sk_alloc+0x2b3/0x370
    [  136.343488][   T35]      inet6_create+0x6ce/0x10f0
    [  136.343488][   T35]      __sock_create+0x4c0/0xa30
    [  136.343488][   T35]      inet_ctl_sock_create+0xc2/0x250
    [  136.343488][   T35]      ndisc_net_init+0xa7/0x2b0
    [  136.343488][   T35]      ops_init+0x31e/0x590
    [  136.343488][   T35]      setup_net+0x287/0x9e0
    [  136.343488][   T35]      copy_net_ns+0x33f/0x570
    [  136.343488][   T35]      create_new_namespaces+0x425/0x7b0
    [  136.343488][   T35]      unshare_nsproxy_namespaces+0x124/0x180
    [  136.343488][   T35]      ksys_unshare+0x57d/0xa70
    [  136.343488][   T35]      __x64_sys_unshare+0x38/0x40
    [  136.343488][   T35]      do_syscall_64+0xf3/0x230
    [  136.343488][   T35]      entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 0cafd77dcd03 ("net: add a refcount tracker for kernel sockets")
    Reported-by: syzbot+30a19e01a97420719891@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/67b72aeb.050a0220.14d86d.0283.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20250220131854.4048077-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dpaa: fix device leak when querying time stamp info [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jul 25 19:12:09 2025 +0200

    net: dpaa: fix device leak when querying time stamp info
    
    commit 3fa840230f534385b34a4f39c8dd313fbe723f05 upstream.
    
    Make sure to drop the reference to the ptp device taken by
    of_find_device_by_node() when querying the time stamping capabilities.
    
    Note that holding a reference to the ptp device does not prevent its
    driver data from going away.
    
    Fixes: 17ae0b0ee9db ("dpaa_eth: add the get_ts_info interface for ethtool")
    Cc: stable@vger.kernel.org      # 4.19
    Cc: Yangbo Lu <yangbo.lu@nxp.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250725171213.880-2-johan@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dsa: b53: ensure BCM5325 PHYs are enabled [+ + +]
Author: Álvaro Fernández Rojas <noltari@gmail.com>
Date:   Sat Jun 14 10:00:00 2025 +0200

    net: dsa: b53: ensure BCM5325 PHYs are enabled
    
    [ Upstream commit 966a83df36c6f27476ac3501771422e7852098bc ]
    
    According to the datasheet, BCM5325 uses B53_PD_MODE_CTRL_25 register to
    disable clocking to individual PHYs.
    Only ports 1-4 can be enabled or disabled and the datasheet is explicit
    about not toggling BIT(0) since it disables the PLL power and the switch.
    
    Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20250614080000.1884236-15-noltari@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: b53: fix b53_imp_vlan_setup for BCM5325 [+ + +]
Author: Álvaro Fernández Rojas <noltari@gmail.com>
Date:   Sat Jun 14 09:59:59 2025 +0200

    net: dsa: b53: fix b53_imp_vlan_setup for BCM5325
    
    [ Upstream commit c00df1018791185ea398f78af415a2a0aaa0c79c ]
    
    CPU port should be B53_CPU_PORT instead of B53_CPU_PORT_25 for
    B53_PVLAN_PORT_MASK register.
    
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
    Link: https://patch.msgid.link/20250614080000.1884236-14-noltari@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325 [+ + +]
Author: Álvaro Fernández Rojas <noltari@gmail.com>
Date:   Sat Jun 14 09:59:54 2025 +0200

    net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325
    
    [ Upstream commit 044d5ce2788b165798bfd173548e61bf7b6baf4d ]
    
    BCM5325 doesn't implement B53_UC_FWD_EN, B53_MC_FWD_EN or B53_IPMC_FWD_EN.
    
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
    Link: https://patch.msgid.link/20250614080000.1884236-9-noltari@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: b53: prevent DIS_LEARNING access on BCM5325 [+ + +]
Author: Álvaro Fernández Rojas <noltari@gmail.com>
Date:   Sat Jun 14 09:59:55 2025 +0200

    net: dsa: b53: prevent DIS_LEARNING access on BCM5325
    
    [ Upstream commit 800728abd9f83bda4de62a30ce62a8b41c242020 ]
    
    BCM5325 doesn't implement DIS_LEARNING register so we should avoid reading
    or writing it.
    
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
    Link: https://patch.msgid.link/20250614080000.1884236-10-noltari@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on BCM5325 [+ + +]
Author: Álvaro Fernández Rojas <noltari@gmail.com>
Date:   Sat Jun 14 09:59:57 2025 +0200

    net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on BCM5325
    
    [ Upstream commit 37883bbc45a8555d6eca88d3a9730504d2dac86c ]
    
    BCM5325 doesn't implement GMII_PORT_OVERRIDE_CTRL register so we should
    avoid reading or writing it.
    PORT_OVERRIDE_RX_FLOW and PORT_OVERRIDE_TX_FLOW aren't defined on BCM5325
    and we should use PORT_OVERRIDE_LP_FLOW_25 instead.
    
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
    Link: https://patch.msgid.link/20250614080000.1884236-12-noltari@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: b53: prevent SWITCH_CTRL access on BCM5325 [+ + +]
Author: Álvaro Fernández Rojas <noltari@gmail.com>
Date:   Sat Jun 14 09:59:53 2025 +0200

    net: dsa: b53: prevent SWITCH_CTRL access on BCM5325
    
    [ Upstream commit 22ccaaca43440e90a3b68d2183045b42247dc4be ]
    
    BCM5325 doesn't implement SWITCH_CTRL register so we should avoid reading
    or writing it.
    
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
    Link: https://patch.msgid.link/20250614080000.1884236-8-noltari@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: enetc: fix device and OF node leak at probe [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jul 25 19:12:10 2025 +0200

    net: enetc: fix device and OF node leak at probe
    
    commit 70458f8a6b44daf3ad39f0d9b6d1097c8a7780ed upstream.
    
    Make sure to drop the references to the IERB OF node and platform device
    taken by of_parse_phandle() and of_find_device_by_node() during probe.
    
    Fixes: e7d48e5fbf30 ("net: enetc: add a mini driver for the Integrated Endpoint Register Block")
    Cc: stable@vger.kernel.org      # 5.13
    Cc: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250725171213.880-3-johan@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: fec: allow disable coalescing [+ + +]
Author: Jonas Rebmann <jre@pengutronix.de>
Date:   Thu Jun 26 15:44:02 2025 +0200

    net: fec: allow disable coalescing
    
    [ Upstream commit b7ad21258f9e9a7f58b19595d5ceed2cde3bed68 ]
    
    In the current implementation, IP coalescing is always enabled and
    cannot be disabled.
    
    As setting maximum frames to 0 or 1, or setting delay to zero implies
    immediate delivery of single packets/IRQs, disable coalescing in
    hardware in these cases.
    
    This also guarantees that coalescing is never enabled with ICFT or ICTT
    set to zero, a configuration that could lead to unpredictable behaviour
    according to i.MX8MP reference manual.
    
    Signed-off-by: Jonas Rebmann <jre@pengutronix.de>
    Reviewed-by: Wei Fang <wei.fang@nxp.com>
    Link: https://patch.msgid.link/20250626-fec_deactivate_coalescing-v2-1-0b217f2e80da@pengutronix.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ftgmac100: fix potential NULL pointer access in ftgmac100_phy_disconnect [+ + +]
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Wed Jul 30 22:23:23 2025 +0200

    net: ftgmac100: fix potential NULL pointer access in ftgmac100_phy_disconnect
    
    commit e88fbc30dda1cb7438515303704ceddb3ade4ecd upstream.
    
    After the call to phy_disconnect() netdev->phydev is reset to NULL.
    So fixed_phy_unregister() would be called with a NULL pointer as argument.
    Therefore cache the phy_device before this call.
    
    Fixes: e24a6c874601 ("net: ftgmac100: Get link speed and duplex for NC-SI")
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
    Link: https://patch.msgid.link/2b80a77a-06db-4dd7-85dc-3a8e0de55a1d@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: gianfar: fix device leak when querying time stamp info [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jul 25 19:12:11 2025 +0200

    net: gianfar: fix device leak when querying time stamp info
    
    commit da717540acd34e5056e3fa35791d50f6b3303f55 upstream.
    
    Make sure to drop the reference to the ptp device taken by
    of_find_device_by_node() when querying the time stamping capabilities.
    
    Note that holding a reference to the ptp device does not prevent its
    driver data from going away.
    
    Fixes: 7349a74ea75c ("net: ethernet: gianfar_ethtool: get phc index through drvdata")
    Cc: stable@vger.kernel.org      # 4.18
    Cc: Yangbo Lu <yangbo.lu@nxp.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250725171213.880-4-johan@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ieee8021q: fix insufficient table-size assertion [+ + +]
Author: RubenKelevra <rubenkelevra@gmail.com>
Date:   Thu Jun 26 22:59:07 2025 +0200

    net: ieee8021q: fix insufficient table-size assertion
    
    [ Upstream commit 21deb2d966920f0d4dd098ca6c3a55efbc0b2f23 ]
    
    _Static_assert(ARRAY_SIZE(map) != IEEE8021Q_TT_MAX - 1) rejects only a
    length of 7 and allows any other mismatch. Replace it with a strict
    equality test via a helper macro so that every mapping table must have
    exactly IEEE8021Q_TT_MAX (8) entries.
    
    Signed-off-by: RubenKelevra <rubenkelevra@gmail.com>
    Link: https://patch.msgid.link/20250626205907.1566384-1-rubenkelevra@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ipv4: fix incorrect MTU in broadcast routes [+ + +]
Author: Oscar Maes <oscmaes92@gmail.com>
Date:   Thu Jul 10 16:27:13 2025 +0200

    net: ipv4: fix incorrect MTU in broadcast routes
    
    [ Upstream commit 9e30ecf23b1b8f091f7d08b27968dea83aae7908 ]
    
    Currently, __mkroute_output overrules the MTU value configured for
    broadcast routes.
    
    This buggy behaviour can be reproduced with:
    
    ip link set dev eth1 mtu 9000
    ip route del broadcast 192.168.0.255 dev eth1 proto kernel scope link src 192.168.0.2
    ip route add broadcast 192.168.0.255 dev eth1 proto kernel scope link src 192.168.0.2 mtu 1500
    
    The maximum packet size should be 1500, but it is actually 8000:
    
    ping -b 192.168.0.255 -s 8000
    
    Fix __mkroute_output to allow MTU values to be configured for
    for broadcast routes (to support a mixed-MTU local-area-network).
    
    Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
    Link: https://patch.msgid.link/20250710142714.12986-1-oscmaes92@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: kcm: Fix race condition in kcm_unattach() [+ + +]
Author: Sven Stegemann <sven@stegemann.de>
Date:   Tue Aug 12 21:18:03 2025 +0200

    net: kcm: Fix race condition in kcm_unattach()
    
    [ Upstream commit 52565a935213cd6a8662ddb8efe5b4219343a25d ]
    
    syzbot found a race condition when kcm_unattach(psock)
    and kcm_release(kcm) are executed at the same time.
    
    kcm_unattach() is missing a check of the flag
    kcm->tx_stopped before calling queue_work().
    
    If the kcm has a reserved psock, kcm_unattach() might get executed
    between cancel_work_sync() and unreserve_psock() in kcm_release(),
    requeuing kcm->tx_work right before kcm gets freed in kcm_done().
    
    Remove kcm->tx_stopped and replace it by the less
    error-prone disable_work_sync().
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Reported-by: syzbot+e62c9db591c30e174662@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=e62c9db591c30e174662
    Reported-by: syzbot+d199b52665b6c3069b94@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=d199b52665b6c3069b94
    Reported-by: syzbot+be6b1fdfeae512726b4e@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=be6b1fdfeae512726b4e
    Signed-off-by: Sven Stegemann <sven@stegemann.de>
    Link: https://patch.msgid.link/20250812191810.27777-1-sven@stegemann.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mctp: Prevent duplicate binds [+ + +]
Author: Matt Johnston <matt@codeconstruct.com.au>
Date:   Thu Jul 10 16:55:55 2025 +0800

    net: mctp: Prevent duplicate binds
    
    [ Upstream commit 3954502377ec05a1b37e2dc9bef0bacd4bbd71b2 ]
    
    Disallow bind() calls that have the same arguments as existing bound
    sockets.  Previously multiple sockets could bind() to the same
    type/local address, with an arbitrary socket receiving matched messages.
    
    This is only a partial fix, a future commit will define precedence order
    for MCTP_ADDR_ANY versus specific EID bind(), which are allowed to exist
    together.
    
    Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
    Link: https://patch.msgid.link/20250710-mctp-bind-v4-2-8ec2f6460c56@codeconstruct.com.au
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mtk_eth_soc: fix device leak at probe [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jul 25 19:12:12 2025 +0200

    net: mtk_eth_soc: fix device leak at probe
    
    commit 3e13274ca8750823e8b68181bdf185d238febe0d upstream.
    
    The reference count to the WED devices has already been incremented when
    looking them up using of_find_device_by_node() so drop the bogus
    additional reference taken during probe.
    
    Fixes: 804775dfc288 ("net: ethernet: mtk_eth_soc: add support for Wireless Ethernet Dispatch (WED)")
    Cc: stable@vger.kernel.org      # 5.19
    Cc: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250725171213.880-5-johan@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ncsi: Fix buffer overflow in fetching version id [+ + +]
Author: Hari Kalavakunta <kalavakunta.hari.prasad@gmail.com>
Date:   Tue Jun 10 12:33:38 2025 -0700

    net: ncsi: Fix buffer overflow in fetching version id
    
    [ Upstream commit 8e16170ae972c7fed132bc928914a2ffb94690fc ]
    
    In NC-SI spec v1.2 section 8.4.44.2, the firmware name doesn't
    need to be null terminated while its size occupies the full size
    of the field. Fix the buffer overflow issue by adding one
    additional byte for null terminator.
    
    Signed-off-by: Hari Kalavakunta <kalavakunta.hari.prasad@gmail.com>
    Reviewed-by: Paul Fertser <fercerpav@gmail.com>
    Link: https://patch.msgid.link/20250610193338.1368-1-kalavakunta.hari.prasad@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: pcs: xpcs: mask readl() return value to 16 bits [+ + +]
Author: Jack Ping CHNG <jchng@maxlinear.com>
Date:   Wed Jul 16 11:03:49 2025 +0800

    net: pcs: xpcs: mask readl() return value to 16 bits
    
    [ Upstream commit 2b0ba7b5b010455c4e43ab557860f8b1089e7424 ]
    
    readl() returns 32-bit value but Clause 22/45 registers are 16-bit wide.
    Masking with 0xFFFF avoids using garbage upper bits.
    
    Signed-off-by: Jack Ping CHNG <jchng@maxlinear.com>
    Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Link: https://patch.msgid.link/20250716030349.3796806-1-jchng@maxlinear.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: bcm54811: PHY initialization [+ + +]
Author: Kamil Horák - 2N <kamilh@axis.com>
Date:   Tue Jul 8 11:01:40 2025 +0200

    net: phy: bcm54811: PHY initialization
    
    [ Upstream commit 3117a11fff5af9e74f4946f07cb3ca083cbbdf4b ]
    
    Reset the bit 12 in PHY's LRE Control register upon initialization.
    According to the datasheet, this bit must be written to zero after
    every device reset.
    
    Signed-off-by: Kamil Horák - 2N <kamilh@axis.com>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20250708090140.61355-5-kamilh@axis.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: micrel: Add ksz9131_resume() [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Fri Jul 11 06:40:21 2025 +0100

    net: phy: micrel: Add ksz9131_resume()
    
    [ Upstream commit f25a7eaa897f21396e99f90809af82ca553c9d14 ]
    
    The Renesas RZ/G3E SMARC EVK uses KSZ9131RNXC phy. On deep power state,
    PHY loses the power and on wakeup the rgmii delays are not reconfigured
    causing it to fail.
    
    Replace the callback kszphy_resume()->ksz9131_resume() for reconfiguring
    the rgmii_delay when it exits from PM suspend state.
    
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250711054029.48536-1-biju.das.jz@bp.renesas.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: micrel: fix KSZ8081/KSZ8091 cable test [+ + +]
Author: Florian Larysch <fl@n621.de>
Date:   Thu Jul 24 00:20:42 2025 +0200

    net: phy: micrel: fix KSZ8081/KSZ8091 cable test
    
    commit 49db61c27c4bbd24364086dc0892bd3e14c1502e upstream.
    
    Commit 21b688dabecb ("net: phy: micrel: Cable Diag feature for lan8814
    phy") introduced cable_test support for the LAN8814 that reuses parts of
    the KSZ886x logic and introduced the cable_diag_reg and pair_mask
    parameters to account for differences between those chips.
    
    However, it did not update the ksz8081_type struct, so those members are
    now 0, causing no pairs to be tested in ksz886x_cable_test_get_status
    and ksz886x_cable_test_wait_for_completion to poll the wrong register
    for the affected PHYs (Basic Control/Reset, which is 0 in normal
    operation) and exit immediately.
    
    Fix this by setting both struct members accordingly.
    
    Fixes: 21b688dabecb ("net: phy: micrel: Cable Diag feature for lan8814 phy")
    Cc: stable@vger.kernel.org
    Signed-off-by: Florian Larysch <fl@n621.de>
    Link: https://patch.msgid.link/20250723222250.13960-1-fl@n621.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: phy: smsc: add proper reset flags for LAN8710A [+ + +]
Author: Buday Csaba <buday.csaba@prolan.hu>
Date:   Mon Jul 28 17:29:16 2025 +0200

    net: phy: smsc: add proper reset flags for LAN8710A
    
    [ Upstream commit 57ec5a8735dc5dccd1ee68afdb1114956a3fce0d ]
    
    According to the LAN8710A datasheet (Rev. B, section 3.8.5.1), a hardware
    reset is required after power-on, and the reference clock (REF_CLK) must be
    established before asserting reset.
    
    Signed-off-by: Buday Csaba <buday.csaba@prolan.hu>
    Cc: Csókás Bence <csokas.bence@prolan.hu>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250728152916.46249-2-csokas.bence@prolan.hu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: thunderbolt: Enable end-to-end flow control also in transmit [+ + +]
Author: zhangjianrong <zhangjianrong5@huawei.com>
Date:   Sat Jun 28 17:38:13 2025 +0800

    net: thunderbolt: Enable end-to-end flow control also in transmit
    
    [ Upstream commit a8065af3346ebd7c76ebc113451fb3ba94cf7769 ]
    
    According to USB4 specification, if E2E flow control is disabled for
    the Transmit Descriptor Ring, the Host Interface Adapter Layer shall
    not require any credits to be available before transmitting a Tunneled
    Packet from this Transmit Descriptor Ring, so e2e flow control should
    be enabled in both directions.
    
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/20250624153805.GC2824380@black.fi.intel.com
    Signed-off-by: zhangjianrong <zhangjianrong5@huawei.com>
    Link: https://patch.msgid.link/20250628093813.647005-1-zhangjianrong5@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: thunderbolt: Fix the parameter passing of tb_xdomain_enable_paths()/tb_xdomain_disable_paths() [+ + +]
Author: zhangjianrong <zhangjianrong5@huawei.com>
Date:   Sat Jun 28 17:49:20 2025 +0800

    net: thunderbolt: Fix the parameter passing of tb_xdomain_enable_paths()/tb_xdomain_disable_paths()
    
    [ Upstream commit 8ec31cb17cd355cea25cdb8496d9b3fbf1321647 ]
    
    According to the description of tb_xdomain_enable_paths(), the third
    parameter represents the transmit ring and the fifth parameter represents
    the receive ring. tb_xdomain_disable_paths() is the same case.
    
    [Jakub] Mika says: it works now because both rings ->hop is the same
    
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/20250625051149.GD2824380@black.fi.intel.com
    Signed-off-by: zhangjianrong <zhangjianrong5@huawei.com>
    Link: https://patch.msgid.link/20250628094920.656658-1-zhangjianrong5@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: thunderx: Fix format-truncation warning in bgx_acpi_match_id() [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Fri Jul 11 07:05:30 2025 -0700

    net: thunderx: Fix format-truncation warning in bgx_acpi_match_id()
    
    [ Upstream commit 53d20606c40678d425cc03f0978c614dca51f25e ]
    
    The buffer bgx_sel used in snprintf() was too small to safely hold
    the formatted string "BGX%d" for all valid bgx_id values. This caused
    a -Wformat-truncation warning with `Werror` enabled during build.
    
    Increase the buffer size from 5 to 7 and use `sizeof(bgx_sel)` in
    snprintf() to ensure safety and suppress the warning.
    
    Build warning:
      CC      drivers/net/ethernet/cavium/thunder/thunder_bgx.o
      drivers/net/ethernet/cavium/thunder/thunder_bgx.c: In function
    ‘bgx_acpi_match_id’:
      drivers/net/ethernet/cavium/thunder/thunder_bgx.c:1434:27: error: ‘%d’
    directive output may be truncated writing between 1 and 3 bytes into a
    region of size 2 [-Werror=format-truncation=]
        snprintf(bgx_sel, 5, "BGX%d", bgx->bgx_id);
                                 ^~
      drivers/net/ethernet/cavium/thunder/thunder_bgx.c:1434:23: note:
    directive argument in the range [0, 255]
        snprintf(bgx_sel, 5, "BGX%d", bgx->bgx_id);
                             ^~~~~~~
      drivers/net/ethernet/cavium/thunder/thunder_bgx.c:1434:2: note:
    ‘snprintf’ output between 5 and 7 bytes into a destination of size 5
        snprintf(bgx_sel, 5, "BGX%d", bgx->bgx_id);
    
    compiler warning due to insufficient snprintf buffer size.
    
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250711140532.2463602-1-alok.a.tiwari@oracle.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ti: icss-iep: fix device and OF node leaks at probe [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jul 25 19:12:13 2025 +0200

    net: ti: icss-iep: fix device and OF node leaks at probe
    
    commit e05c54974a05ab19658433545d6ced88d9075cf0 upstream.
    
    Make sure to drop the references to the IEP OF node and device taken by
    of_parse_phandle() and of_find_device_by_node() when looking up IEP
    devices during probe.
    
    Drop the bogus additional reference taken on successful lookup so that
    the device is released correctly by icss_iep_put().
    
    Fixes: c1e0230eeaab ("net: ti: icss-iep: Add IEP driver")
    Cc: stable@vger.kernel.org      # 6.6
    Cc: Roger Quadros <rogerq@kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250725171213.880-6-johan@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ti: icss-iep: Fix incorrect type for return value in extts_enable() [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Tue Aug 5 07:23:18 2025 -0700

    net: ti: icss-iep: Fix incorrect type for return value in extts_enable()
    
    [ Upstream commit 5f1d1d14db7dabce9c815e7d7cd351f8d58b8585 ]
    
    The variable ret in icss_iep_extts_enable() was incorrectly declared
    as u32, while the function returns int and may return negative error
    codes. This will cause sign extension issues and incorrect error
    propagation. Update ret to be int to fix error handling.
    
    This change corrects the declaration to avoid potential type mismatch.
    
    Fixes: c1e0230eeaab ("net: ti: icss-iep: Add IEP driver")
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20250805142323.1949406-1-alok.a.tiwari@oracle.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ti: icssg-prueth: Fix emac link speed handling [+ + +]
Author: MD Danish Anwar <danishanwar@ti.com>
Date:   Tue Aug 5 23:08:12 2025 +0530

    net: ti: icssg-prueth: Fix emac link speed handling
    
    [ Upstream commit 06feac15406f4f66f4c0c6ea60b10d44775d4133 ]
    
    When link settings are changed emac->speed is populated by
    emac_adjust_link(). The link speed and other settings are then written into
    the DRAM. However if both ports are brought down after this and brought up
    again or if the operating mode is changed and a firmware reload is needed,
    the DRAM is cleared by icssg_config(). As a result the link settings are
    lost.
    
    Fix this by calling emac_adjust_link() after icssg_config(). This re
    populates the settings in the DRAM after a new firmware load.
    
    Fixes: 9facce84f406 ("net: ti: icssg-prueth: Fix firmware load sequence.")
    Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Message-ID: <20250805173812.2183161-1-danishanwar@ti.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: asix_devices: add phy_mask for ax88772 mdio bus [+ + +]
Author: Xu Yang <xu.yang_2@nxp.com>
Date:   Mon Aug 11 17:29:31 2025 +0800

    net: usb: asix_devices: add phy_mask for ax88772 mdio bus
    
    commit 4faff70959d51078f9ee8372f8cff0d7045e4114 upstream.
    
    Without setting phy_mask for ax88772 mdio bus, current driver may create
    at most 32 mdio phy devices with phy address range from 0x00 ~ 0x1f.
    DLink DUB-E100 H/W Ver B1 is such a device. However, only one main phy
    device will bind to net phy driver. This is creating issue during system
    suspend/resume since phy_polling_mode() in phy_state_machine() will
    directly deference member of phydev->drv for non-main phy devices. Then
    NULL pointer dereference issue will occur. Due to only external phy or
    internal phy is necessary, add phy_mask for ax88772 mdio bus to workarnoud
    the issue.
    
    Closes: https://lore.kernel.org/netdev/20250806082931.3289134-1-xu.yang_2@nxp.com
    Fixes: e532a096be0e ("net: usb: asix: ax88772: add phylib support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
    Tested-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://patch.msgid.link/20250811092931.860333-1-xu.yang_2@nxp.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: usb: cdc-ncm: check for filtering capability [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Jul 17 14:06:17 2025 +0200

    net: usb: cdc-ncm: check for filtering capability
    
    [ Upstream commit 61c3e8940f2d8b5bfeaeec4bedc2f3e7d873abb3 ]
    
    If the decice does not support filtering, filtering
    must not be used and all packets delivered for the
    upper layers to sort.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Link: https://patch.msgid.link/20250717120649.2090929-1-oneukum@suse.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: vlan: Make is_vlan_dev() a stub when VLAN is not configured [+ + +]
Author: Gal Pressman <gal@nvidia.com>
Date:   Mon Jun 16 16:26:24 2025 +0300

    net: vlan: Make is_vlan_dev() a stub when VLAN is not configured
    
    [ Upstream commit 2de1ba0887e5d3bf02d7c212f380039b34e10aa3 ]
    
    Add a stub implementation of is_vlan_dev() that returns false when
    VLAN support is not compiled in (CONFIG_VLAN_8021Q=n).
    
    This allows us to compile-out VLAN-dependent dead code when it is not
    needed.
    
    This also resolves the following compilation error when:
    * CONFIG_VLAN_8021Q=n
    * CONFIG_OBJTOOL=y
    * CONFIG_OBJTOOL_WERROR=y
    
    drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.o: error: objtool: parse_mirred.isra.0+0x370: mlx5e_tc_act_vlan_add_push_action() missing __noreturn in .c/.h or NORETURN() in noreturns.h
    
    The error occurs because objtool cannot determine that unreachable BUG()
    (which doesn't return) calls in VLAN code paths are actually dead code
    when VLAN support is disabled.
    
    Signed-off-by: Gal Pressman <gal@nvidia.com>
    Link: https://patch.msgid.link/20250616132626.1749331-2-gal@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: vlan: Replace BUG() with WARN_ON_ONCE() in vlan_dev_* stubs [+ + +]
Author: Gal Pressman <gal@nvidia.com>
Date:   Mon Jun 16 16:26:25 2025 +0300

    net: vlan: Replace BUG() with WARN_ON_ONCE() in vlan_dev_* stubs
    
    [ Upstream commit 60a8b1a5d0824afda869f18dc0ecfe72f8dfda42 ]
    
    When CONFIG_VLAN_8021Q=n, a set of stub helpers are used, three of these
    helpers use BUG() unconditionally.
    
    This code should not be reached, as callers of these functions should
    always check for is_vlan_dev() first, but the usage of BUG() is not
    recommended, replace it with WARN_ON() instead.
    
    Reviewed-by: Alex Lazar <alazar@nvidia.com>
    Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
    Signed-off-by: Gal Pressman <gal@nvidia.com>
    Link: https://patch.msgid.link/20250616132626.1749331-3-gal@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: ctnetlink: fix refcount leak on table dump [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Aug 1 17:25:08 2025 +0200

    netfilter: ctnetlink: fix refcount leak on table dump
    
    [ Upstream commit de788b2e6227462b6dcd0e07474e72c089008f74 ]
    
    There is a reference count leak in ctnetlink_dump_table():
          if (res < 0) {
                    nf_conntrack_get(&ct->ct_general); // HERE
                    cb->args[1] = (unsigned long)ct;
                    ...
    
    While its very unlikely, its possible that ct == last.
    If this happens, then the refcount of ct was already incremented.
    This 2nd increment is never undone.
    
    This prevents the conntrack object from being released, which in turn
    keeps prevents cnet->count from dropping back to 0.
    
    This will then block the netns dismantle (or conntrack rmmod) as
    nf_conntrack_cleanup_net_list() will wait forever.
    
    This can be reproduced by running conntrack_resize.sh selftest in a loop.
    It takes ~20 minutes for me on a preemptible kernel on average before
    I see a runaway kworker spinning in nf_conntrack_cleanup_net_list.
    
    One fix would to change this to:
            if (res < 0) {
                    if (ct != last)
                            nf_conntrack_get(&ct->ct_general);
    
    But this reference counting isn't needed in the first place.
    We can just store a cookie value instead.
    
    A followup patch will do the same for ctnetlink_exp_dump_table,
    it looks to me as if this has the same problem and like
    ctnetlink_dump_table, we only need a 'skip hint', not the actual
    object so we can apply the same cookie strategy there as well.
    
    Fixes: d205dc40798d ("[NETFILTER]: ctnetlink: fix deadlock in table dumping")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nft_set_pipapo: prefer kvmalloc for scratch maps [+ + +]
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Jul 9 19:05:16 2025 +0200

    netfilter: nft_set_pipapo: prefer kvmalloc for scratch maps
    
    [ Upstream commit 897eefee2eb73ec6c119a0ca357d7b4a3e92c5ef ]
    
    The scratchmap size depends on the number of elements in the set.
    For huge sets, each scratch map can easily require very large
    allocations, e.g. for 100k entries each scratch map will require
    close to 64kbyte of memory.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netlink: avoid infinite retry looping in netlink_unicast() [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Mon Jul 28 11:06:47 2025 +0300

    netlink: avoid infinite retry looping in netlink_unicast()
    
    commit 759dfc7d04bab1b0b86113f1164dc1fec192b859 upstream.
    
    netlink_attachskb() checks for the socket's read memory allocation
    constraints. Firstly, it has:
    
      rmem < READ_ONCE(sk->sk_rcvbuf)
    
    to check if the just increased rmem value fits into the socket's receive
    buffer. If not, it proceeds and tries to wait for the memory under:
    
      rmem + skb->truesize > READ_ONCE(sk->sk_rcvbuf)
    
    The checks don't cover the case when skb->truesize + sk->sk_rmem_alloc is
    equal to sk->sk_rcvbuf. Thus the function neither successfully accepts
    these conditions, nor manages to reschedule the task - and is called in
    retry loop for indefinite time which is caught as:
    
      rcu: INFO: rcu_sched self-detected stall on CPU
      rcu:     0-....: (25999 ticks this GP) idle=ef2/1/0x4000000000000000 softirq=262269/262269 fqs=6212
      (t=26000 jiffies g=230833 q=259957)
      NMI backtrace for cpu 0
      CPU: 0 PID: 22 Comm: kauditd Not tainted 5.10.240 #68
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-4.fc42 04/01/2014
      Call Trace:
      <IRQ>
      dump_stack lib/dump_stack.c:120
      nmi_cpu_backtrace.cold lib/nmi_backtrace.c:105
      nmi_trigger_cpumask_backtrace lib/nmi_backtrace.c:62
      rcu_dump_cpu_stacks kernel/rcu/tree_stall.h:335
      rcu_sched_clock_irq.cold kernel/rcu/tree.c:2590
      update_process_times kernel/time/timer.c:1953
      tick_sched_handle kernel/time/tick-sched.c:227
      tick_sched_timer kernel/time/tick-sched.c:1399
      __hrtimer_run_queues kernel/time/hrtimer.c:1652
      hrtimer_interrupt kernel/time/hrtimer.c:1717
      __sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1113
      asm_call_irq_on_stack arch/x86/entry/entry_64.S:808
      </IRQ>
    
      netlink_attachskb net/netlink/af_netlink.c:1234
      netlink_unicast net/netlink/af_netlink.c:1349
      kauditd_send_queue kernel/audit.c:776
      kauditd_thread kernel/audit.c:897
      kthread kernel/kthread.c:328
      ret_from_fork arch/x86/entry/entry_64.S:304
    
    Restore the original behavior of the check which commit in Fixes
    accidentally missed when restructuring the code.
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: ae8f160e7eb2 ("netlink: Fix wraparounds of sk->sk_rmem_alloc.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250728080727.255138-1-pchelkin@ispras.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
netmem: fix skb_frag_address_safe with unreadable skbs [+ + +]
Author: Mina Almasry <almasrymina@google.com>
Date:   Thu Jun 19 17:52:38 2025 +0000

    netmem: fix skb_frag_address_safe with unreadable skbs
    
    [ Upstream commit 4672aec56d2e8edabcb74c3e2320301d106a377e ]
    
    skb_frag_address_safe() needs a check that the
    skb_frag_page exists check similar to skb_frag_address().
    
    Cc: ap420073@gmail.com
    
    Signed-off-by: Mina Almasry <almasrymina@google.com>
    Acked-by: Stanislav Fomichev <sdf@fomichev.me>
    Link: https://patch.msgid.link/20250619175239.3039329-1-almasrymina@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFS: Fix the setting of capabilities when automounting a new filesystem [+ + +]
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sun Aug 3 14:31:59 2025 -0700

    NFS: Fix the setting of capabilities when automounting a new filesystem
    
    commit b01f21cacde9f2878492cf318fee61bf4ccad323 upstream.
    
    Capabilities cannot be inherited when we cross into a new filesystem.
    They need to be reset to the minimal defaults, and then probed for
    again.
    
    Fixes: 54ceac451598 ("NFS: Share NFS superblocks per-protocol per-server per-FSID")
    Cc: stable@vger.kernel.org
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFSD: detect mismatch of file handle and delegation stateid in OPEN op [+ + +]
Author: Dai Ngo <dai.ngo@oracle.com>
Date:   Tue Jun 10 08:35:28 2025 -0700

    NFSD: detect mismatch of file handle and delegation stateid in OPEN op
    
    commit 9c65001c57164033ad08b654c8b5ae35512ddf4a upstream.
    
    When the client sends an OPEN with claim type CLAIM_DELEG_CUR_FH or
    CLAIM_DELEGATION_CUR, the delegation stateid and the file handle
    must belong to the same file, otherwise return NFS4ERR_INVAL.
    
    Note that RFC8881, section 8.2.4, mandates the server to return
    NFS4ERR_BAD_STATEID if the selected table entry does not match the
    current filehandle. However returning NFS4ERR_BAD_STATEID in the
    OPEN causes the client to retry the operation and therefor get the
    client into a loop. To avoid this situation we return NFS4ERR_INVAL
    instead.
    
    Reported-by: Petro Pavlov <petro.pavlov@vastdata.com>
    Fixes: c44c5eeb2c02 ("[PATCH] nfsd4: add open state code for CLAIM_DELEGATE_CUR")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dai Ngo <dai.ngo@oracle.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfsd: handle get_client_locked() failure in nfsd4_setclientid_confirm() [+ + +]
Author: Jeff Layton <jlayton@kernel.org>
Date:   Wed Jun 4 12:01:10 2025 -0400

    nfsd: handle get_client_locked() failure in nfsd4_setclientid_confirm()
    
    commit 908e4ead7f757504d8b345452730636e298cbf68 upstream.
    
    Lei Lu recently reported that nfsd4_setclientid_confirm() did not check
    the return value from get_client_locked(). a SETCLIENTID_CONFIRM could
    race with a confirmed client expiring and fail to get a reference. That
    could later lead to a UAF.
    
    Fix this by getting a reference early in the case where there is an
    extant confirmed client. If that fails then treat it as if there were no
    confirmed client found at all.
    
    In the case where the unconfirmed client is expiring, just fail and
    return the result from get_client_locked().
    
    Reported-by: lei lu <llfamsec@gmail.com>
    Closes: https://lore.kernel.org/linux-nfs/CAEBF3_b=UvqzNKdnfD_52L05Mqrqui9vZ2eFamgAbV0WG+FNWQ@mail.gmail.com/
    Fixes: d20c11d86d8f ("nfsd: Protect session creation and client confirm using client_lock")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme-pci: try function level reset on init failure [+ + +]
Author: Keith Busch <kbusch@kernel.org>
Date:   Tue Jul 15 12:16:27 2025 -0700

    nvme-pci: try function level reset on init failure
    
    [ Upstream commit 5b2c214a95942f7997d1916a4c44017becbc3cac ]
    
    NVMe devices from multiple vendors appear to get stuck in a reset state
    that we can't get out of with an NVMe level Controller Reset. The kernel
    would report these with messages that look like:
    
      Device not ready; aborting reset, CSTS=0x1
    
    These have historically required a power cycle to make them usable
    again, but in many cases, a PCIe FLR is sufficient to restart operation
    without a power cycle. Try it if the initial controller reset fails
    during any nvme reset attempt.
    
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme-tcp: log TLS handshake failures at error level [+ + +]
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Wed Jul 2 16:06:29 2025 +0200

    nvme-tcp: log TLS handshake failures at error level
    
    [ Upstream commit 5a58ac9bfc412a58c3cf26c6a7e54d4308e9d109 ]
    
    Update the nvme_tcp_start_tls() function to use dev_err() instead of
    dev_dbg() when a TLS error is detected. This ensures that handshake
    failures are visible by default, aiding in debugging.
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Reviewed-by: Laurence Oberman <loberman@redhat.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
parisc: Makefile: fix a typo in palo.conf [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Wed Jun 25 00:39:33 2025 -0700

    parisc: Makefile: fix a typo in palo.conf
    
    commit 963f1b20a8d2a098954606b9725cd54336a2a86c upstream.
    
    Correct "objree" to "objtree". "objree" is not defined.
    
    Fixes: 75dd47472b92 ("kbuild: remove src and obj from the top Makefile")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Masahiro Yamada <masahiroy@kernel.org>
    Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: linux-parisc@vger.kernel.org
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org # v5.3+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Fri Aug 15 18:08:24 2025 -0400

    PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports
    
    [ Upstream commit 6cff20ce3b92ffbf2fc5eb9e5a030b3672aa414a ]
    
    pci_bridge_d3_possible() is called from both pcie_portdrv_probe() and
    pcie_portdrv_remove() to determine whether runtime power management shall
    be enabled (on probe) or disabled (on remove) on a PCIe port.
    
    The underlying assumption is that pci_bridge_d3_possible() always returns
    the same value, else a runtime PM reference imbalance would occur.  That
    assumption is not given if the PCIe port is inaccessible on remove due to
    hot-unplug:  pci_bridge_d3_possible() calls pciehp_is_native(), which
    accesses Config Space to determine whether the port is Hot-Plug Capable.
    An inaccessible port returns "all ones", which is converted to "all
    zeroes" by pcie_capability_read_dword().  Hence the port no longer seems
    Hot-Plug Capable on remove even though it was on probe.
    
    The resulting runtime PM ref imbalance causes warning messages such as:
    
      pcieport 0000:02:04.0: Runtime PM usage count underflow!
    
    Avoid the Config Space access (and thus the runtime PM ref imbalance) by
    caching the Hot-Plug Capable bit in struct pci_dev.
    
    The struct already contains an "is_hotplug_bridge" flag, which however is
    not only set on Hot-Plug Capable PCIe ports, but also Conventional PCI
    Hot-Plug bridges and ACPI slots.  The flag identifies bridges which are
    allocated additional MMIO and bus number resources to allow for hierarchy
    expansion.
    
    The kernel is somewhat sloppily using "is_hotplug_bridge" in a number of
    places to identify Hot-Plug Capable PCIe ports, even though the flag
    encompasses other devices.  Subsequent commits replace these occurrences
    with the new flag to clearly delineate Hot-Plug Capable PCIe ports from
    other kinds of hotplug bridges.
    
    Document the existing "is_hotplug_bridge" and the new "is_pciehp" flag
    and document the (non-obvious) requirement that pci_bridge_d3_possible()
    always returns the same value across the entire lifetime of a bridge,
    including its hot-removal.
    
    Fixes: 5352a44a561d ("PCI: pciehp: Make pciehp_is_native() stricter")
    Reported-by: Laurent Bigonville <bigon@bigon.be>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220216
    Reported-by: Mario Limonciello <mario.limonciello@amd.com>
    Closes: https://lore.kernel.org/r/20250609020223.269407-3-superm1@kernel.org/
    Link: https://lore.kernel.org/all/20250620025535.3425049-3-superm1@kernel.org/T/#u
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Rafael J. Wysocki <rafael@kernel.org>
    Cc: stable@vger.kernel.org # v4.18+
    Link: https://patch.msgid.link/fe5dcc3b2e62ee1df7905d746bde161eb1b3291c.1752390101.git.lukas@wunner.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PCI: Allow PCI bridges to go to D3Hot on all non-x86 [+ + +]
Author: Manivannan Sadhasivam <mani@kernel.org>
Date:   Fri Aug 15 18:08:23 2025 -0400

    PCI: Allow PCI bridges to go to D3Hot on all non-x86
    
    [ Upstream commit a5fb3ff632876d63ee1fc5ed3af2464240145a00 ]
    
    Currently, pci_bridge_d3_possible() encodes a variety of decision factors
    when deciding whether a given bridge can be put into D3. A particular one
    of note is for "recent enough PCIe ports." Per Rafael [0]:
    
      "There were hardware issues related to PM on x86 platforms predating
       the introduction of Connected Standby in Windows.  For instance,
       programming a port into D3hot by writing to its PMCSR might cause the
       PCIe link behind it to go down and the only way to revive it was to
       power cycle the Root Complex.  And similar."
    
    Thus, this function contains a DMI-based check for post-2015 BIOS.
    
    The above factors (Windows, x86) don't really apply to non-x86 systems, and
    also, many such systems don't have BIOS or DMI. However, we'd like to be
    able to suspend bridges on non-x86 systems too.
    
    Restrict the "recent enough" check to x86. If we find further
    incompatibilities, it probably makes sense to expand on the deny-list
    approach (i.e., bridge_d3_blacklist or similar).
    
    Link: https://lore.kernel.org/r/20250320110604.v6.1.Id0a0e78ab0421b6bce51c4b0b87e6aebdfc69ec7@changeid
    Link: https://lore.kernel.org/linux-pci/CAJZ5v0j_6jeMAQ7eFkZBe5Yi+USGzysxAgfemYh=-zq4h5W+Qg@mail.gmail.com/ [0]
    Link: https://lore.kernel.org/linux-pci/20240227225442.GA249898@bhelgaas/ [1]
    Link: https://lore.kernel.org/linux-pci/20240828210705.GA37859@bhelgaas/ [2]
    [Brian: rewrite to !X86 based on Rafael's suggestions]
    Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Stable-dep-of: 6cff20ce3b92 ("PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: Extend isolated function probing to LoongArch [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Tue Jun 24 14:29:27 2025 +0800

    PCI: Extend isolated function probing to LoongArch
    
    commit a02fd05661d73a8507dd70dd820e9b984490c545 upstream.
    
    Like s390 and the jailhouse hypervisor, LoongArch's PCI architecture allows
    passing isolated PCI functions to a guest OS instance. So it is possible
    that there is a multi-function device without function 0 for the host or
    guest.
    
    Allow probing such functions by adding a IS_ENABLED(CONFIG_LOONGARCH) case
    in the hypervisor_isolated_pci_functions() helper.
    
    This is similar to commit 189c6c33ff42 ("PCI: Extend isolated function
    probing to s390").
    
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250624062927.4037734-1-chenhuacai@loongson.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: Honor Max Link Speed when determining supported speeds [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Dec 17 10:51:01 2024 +0100

    PCI: Honor Max Link Speed when determining supported speeds
    
    commit 3202ca221578850f34e0fea39dc6cfa745ed7aac upstream.
    
    The Supported Link Speeds Vector in the Link Capabilities 2 Register
    indicates the *supported* link speeds.  The Max Link Speed field in the
    Link Capabilities Register indicates the *maximum* of those speeds.
    
    pcie_get_supported_speeds() neglects to honor the Max Link Speed field and
    will thus incorrectly deem higher speeds as supported.  Fix it.
    
    One user-visible issue addressed here is an incorrect value in the sysfs
    attribute "max_link_speed".
    
    But the main motivation is a boot hang reported by Niklas:  Intel JHL7540
    "Titan Ridge 2018" Thunderbolt controllers supports 2.5-8 GT/s speeds,
    but indicate 2.5 GT/s as maximum.  Ilpo recalls seeing this on more
    devices.  It can be explained by the controller's Downstream Ports
    supporting 8 GT/s if an Endpoint is attached, but limiting to 2.5 GT/s
    if the port interfaces to a PCIe Adapter, in accordance with USB4 v2
    sec 11.2.1:
    
       "This section defines the functionality of an Internal PCIe Port that
        interfaces to a PCIe Adapter. [...]
        The Logical sub-block shall update the PCIe configuration registers
        with the following characteristics: [...]
        Max Link Speed field in the Link Capabilities Register set to 0001b
        (data rate of 2.5 GT/s only).
        Note: These settings do not represent actual throughput. Throughput
        is implementation specific and based on the USB4 Fabric performance."
    
    The present commit is not sufficient on its own to fix Niklas' boot hang,
    but it is a prerequisite:  A subsequent commit will fix the boot hang by
    enabling bandwidth control only if more than one speed is supported.
    
    The GENMASK() macro used herein specifies 0 as lowest bit, even though
    the Supported Link Speeds Vector ends at bit 1.  This is done on purpose
    to avoid a GENMASK(0, 1) macro if Max Link Speed is zero.  That macro
    would be invalid as the lowest bit is greater than the highest bit.
    Ilpo has witnessed a zero Max Link Speed on Root Complex Integrated
    Endpoints in particular, so it does occur in practice.  (The Link
    Capabilities Register is optional on RCiEPs per PCIe r6.2 sec 7.5.3.)
    
    Fixes: d2bd39c0456b ("PCI: Store all PCIe Supported Link Speeds")
    Closes: https://lore.kernel.org/r/70829798889c6d779ca0f6cd3260a765780d1369.camel@kernel.org
    Link: https://lore.kernel.org/r/fe03941e3e1cc42fb9bf4395e302bff53ee2198b.1734428762.git.lukas@wunner.de
    Reported-by: Niklas Schnelle <niks@kernel.org>
    Tested-by: Niklas Schnelle <niks@kernel.org>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

PCI: Store all PCIe Supported Link Speeds [+ + +]
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Fri Aug 15 18:08:22 2025 -0400

    PCI: Store all PCIe Supported Link Speeds
    
    [ Upstream commit d2bd39c0456b75be9dfc7d774b8d021355c26ae3 ]
    
    The PCIe bandwidth controller added by a subsequent commit will require
    selecting PCIe Link Speeds that are lower than the Maximum Link Speed.
    
    The struct pci_bus only stores max_bus_speed. Even if PCIe r6.1 sec 8.2.1
    currently disallows gaps in supported Link Speeds, the Implementation Note
    in PCIe r6.1 sec 7.5.3.18, recommends determining supported Link Speeds
    using the Supported Link Speeds Vector in the Link Capabilities 2 Register
    (when available) to "avoid software being confused if a future
    specification defines Links that do not require support for all slower
    speeds."
    
    Reuse code in pcie_get_speed_cap() to add pcie_get_supported_speeds() to
    query the Supported Link Speeds Vector of a PCIe device. The value is taken
    directly from the Supported Link Speeds Vector or synthesized from the Max
    Link Speed in the Link Capabilities Register when the Link Capabilities 2
    Register is not available.
    
    The Supported Link Speeds Vector in the Link Capabilities Register 2
    corresponds to the bus below on Root Ports and Downstream Ports, whereas it
    corresponds to the bus above on Upstream Ports and Endpoints (PCIe r6.1 sec
    7.5.3.18):
    
      Supported Link Speeds Vector - This field indicates the supported Link
      speed(s) of the associated Port.
    
    Add supported_speeds into the struct pci_dev that caches the
    Supported Link Speeds Vector.
    
    supported_speeds contains a set of Link Speeds only in the case where PCIe
    Link Speed can be determined. Root Complex Integrated Endpoints do not have
    a well-defined Link Speed because they do not implement either of the Link
    Capabilities Registers, which is allowed by PCIe r6.1 sec 7.5.3 (the same
    limitation applies to determining cur_bus_speed and max_bus_speed that are
    PCI_SPEED_UNKNOWN in such case). This is of no concern from PCIe bandwidth
    controller point of view because such devices are not attached into a PCIe
    Root Port that could be controlled.
    
    The supported_speeds field keeps the extra reserved zero at the least
    significant bit to match the Link Capabilities 2 Register layout.
    
    An attempt was made to store supported_speeds field into the struct pci_bus
    as an intersection of both ends of the Link, however, the subordinate
    struct pci_bus is not available early enough. The Target Speed quirk (in
    pcie_failed_link_retrain()) can run either during initial scan or later,
    requiring it to use the API provided by the PCIe bandwidth controller to
    set the Target Link Speed in order to co-exist with the bandwidth
    controller. When the Target Speed quirk is calling the bandwidth controller
    during initial scan, the struct pci_bus is not yet initialized. As such,
    storing supported_speeds into the struct pci_bus is not viable.
    
    Suggested-by: Lukas Wunner <lukas@wunner.de>
    Link: https://lore.kernel.org/r/20241018144755.7875-4-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    [bhelgaas: move pcie_get_supported_speeds() decl to drivers/pci/pci.h]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Stable-dep-of: 6cff20ce3b92 ("PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
perf/arm: Add missing .suppress_bind_attrs [+ + +]
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Wed Jul 2 15:08:13 2025 +0100

    perf/arm: Add missing .suppress_bind_attrs
    
    [ Upstream commit 860a831de138a7ad6bc86019adaf10eb84c02655 ]
    
    PMU drivers should set .suppress_bind_attrs so that userspace is denied
    the opportunity to pull the driver out from underneath an in-use PMU
    (with predictably unpleasant consequences). Somehow both the CMN and NI
    drivers have managed to miss this; put that right.
    
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Reviewed-by: Leo Yan <leo.yan@arm.com>
    Link: https://lore.kernel.org/r/acd48c341b33b96804a3969ee00b355d40c546e2.1751465293.git.robin.murphy@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf/cxlpmu: Remove unintended newline from IRQ name format string [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Tue Jun 24 12:43:39 2025 -0700

    perf/cxlpmu: Remove unintended newline from IRQ name format string
    
    [ Upstream commit 3e870815ccf5bc75274158f0b5e234fce6f93229 ]
    
    The IRQ name format string used in devm_kasprintf() mistakenly included
    a newline character "\n".
    This could lead to confusing log output or misformatted names in sysfs
    or debug messages.
    
    This fix removes the newline to ensure proper IRQ naming.
    
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
    Link: https://lore.kernel.org/r/20250624194350.109790-3-alok.a.tiwari@oracle.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
phy: rockchip-pcie: Properly disable TEST_WRITE strobe signal [+ + +]
Author: Geraldo Nascimento <geraldogabriel@gmail.com>
Date:   Mon Jun 30 19:25:28 2025 -0300

    phy: rockchip-pcie: Properly disable TEST_WRITE strobe signal
    
    [ Upstream commit 25facbabc3fc33c794ad09d73f73268c0f8cbc7d ]
    
    pcie_conf is used to touch TEST_WRITE strobe signal. This signal should
    be enabled, a little time waited, and then disabled. Current code clearly
    was copy-pasted and never disables the strobe signal. Adjust the define.
    While at it, remove PHY_CFG_RD_MASK which has been unused since
    64cdc0360811 ("phy: rockchip-pcie: remove unused phy_rd_cfg function").
    
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Geraldo Nascimento <geraldogabriel@gmail.com>
    Link: https://lore.kernel.org/r/d514d5d5627680caafa8b7548cbdfee4307f5440.1751322015.git.geraldogabriel@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pidfs: raise SB_I_NODEV and SB_I_NOEXEC [+ + +]
Author: Christian Brauner <brauner@kernel.org>
Date:   Wed Jun 18 22:53:35 2025 +0200

    pidfs: raise SB_I_NODEV and SB_I_NOEXEC
    
    [ Upstream commit 1a1ad73aa1a66787f05f7f10f686b74bab77be72 ]
    
    Similar to commit 1ed95281c0c7 ("anon_inode: raise SB_I_NODEV and SB_I_NOEXEC"):
    it shouldn't be possible to execute pidfds via
    execveat(fd_anon_inode, "", NULL, NULL, AT_EMPTY_PATH)
    so raise SB_I_NOEXEC so that no one gets any creative ideas.
    
    Also raise SB_I_NODEV as we don't expect or support any devices on pidfs.
    
    Link: https://lore.kernel.org/20250618-work-pidfs-persistent-v2-1-98f3456fd552@kernel.org
    Reviewed-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pinctrl: stm32: Manage irq affinity settings [+ + +]
Author: Cheick Traore <cheick.traore@foss.st.com>
Date:   Tue Jun 10 16:30:39 2025 +0200

    pinctrl: stm32: Manage irq affinity settings
    
    [ Upstream commit 4c5cc2f65386e22166ce006efe515c667aa075e4 ]
    
    Trying to set the affinity of the interrupts associated to stm32
    pinctrl results in a write error.
    
    Fill struct irq_chip::irq_set_affinity to use the default helper
    function.
    
    Signed-off-by: Cheick Traore <cheick.traore@foss.st.com>
    Signed-off-by: Antonio Borneo <antonio.borneo@foss.st.com>
    Link: https://lore.kernel.org/20250610143042.295376-3-antonio.borneo@foss.st.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/chrome: cros_ec_sensorhub: Retries when a sensor is not ready [+ + +]
Author: Gwendal Grignou <gwendal@chromium.org>
Date:   Mon Jun 23 14:05:18 2025 -0700

    platform/chrome: cros_ec_sensorhub: Retries when a sensor is not ready
    
    [ Upstream commit 981d7f91aeda17424b29f033249f4fa7cd2a7556 ]
    
    When the EC/ISH starts, it can take a while for all the sensors to be up
    and running or declared broken.
    
    If the sensor stack return -EBUSY when checking for sensor information,
    retry up to 50 times.
    It has been observed 100ms wait time is enough to have valid sensors
    ready. It can take more time in case a sensor is really broken and is
    not coming up.
    
    Signed-off-by: Gwendal Grignou <gwendal@google.com>
    Link: https://lore.kernel.org/r/20250623210518.306740-1-gwendal@google.com
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/chrome: cros_ec_typec: Defer probe on missing EC parent [+ + +]
Author: Tomasz Michalec <tmichalec@google.com>
Date:   Tue Jun 10 17:37:47 2025 +0200

    platform/chrome: cros_ec_typec: Defer probe on missing EC parent
    
    [ Upstream commit 8866f4e557eba43e991f99711515217a95f62d2e ]
    
    If cros_typec_probe is called before EC device is registered,
    cros_typec_probe will fail. It may happen when cros-ec-typec.ko is
    loaded before EC bus layer module (e.g. cros_ec_lpcs.ko,
    cros_ec_spi.ko).
    
    Return -EPROBE_DEFER when cros_typec_probe doesn't get EC device, so
    the probe function can be called again after EC device is registered.
    
    Signed-off-by: Tomasz Michalec <tmichalec@google.com>
    Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
    Link: https://lore.kernel.org/r/20250610153748.1858519-1-tmichalec@google.com
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86/amd: pmc: Add Lenovo Yoga 6 13ALC6 to pmc quirk list [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Fri Jul 18 12:23:05 2025 -0500

    platform/x86/amd: pmc: Add Lenovo Yoga 6 13ALC6 to pmc quirk list
    
    [ Upstream commit 4ff3aeb664f7dfe824ba91ffb0b203397a8d431e ]
    
    The Lenovo Yoga 6 13ACL6 82ND has a similar BIOS problem as other Lenovo
    laptops from that vintage that causes a rather long resume from suspend.
    
    Add it to the quirk list that manipulates the scratch register to avoid
    the issue.
    
    Reported-by: Adam Berglund <adam.f.berglund@hotmail.com>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4434
    Tested-by: Adam Berglund <adam.f.berglund@hotmail.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Hans de Goede <hansg@kernel.org>
    Link: https://lore.kernel.org/r/20250718172307.1928744-1-superm1@kernel.org
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86: thinkpad_acpi: Handle KCOV __init vs inline mismatches [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Thu May 29 11:18:37 2025 -0700

    platform/x86: thinkpad_acpi: Handle KCOV __init vs inline mismatches
    
    [ Upstream commit 6418a8504187dc7f5b6f9d0649c03e362cb0664b ]
    
    When KCOV is enabled all functions get instrumented, unless the
    __no_sanitize_coverage attribute is used. To prepare for
    __no_sanitize_coverage being applied to __init functions[1], we have
    to handle differences in how GCC's inline optimizations get resolved.
    For thinkpad_acpi routines, this means forcing two functions to be
    inline with __always_inline.
    
    Link: https://lore.kernel.org/lkml/20250523043935.2009972-11-kees@kernel.org/ [1]
    Signed-off-by: Kees Cook <kees@kernel.org>
    Link: https://lore.kernel.org/r/20250529181831.work.439-kees@kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() [+ + +]
Author: Lifeng Zheng <zhenglifeng1@huawei.com>
Date:   Mon Apr 21 11:00:17 2025 +0800

    PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()
    
    [ Upstream commit 914cc799b28f17d369d5b4db3b941957d18157e8 ]
    
    Replace sscanf() with kstrtoul() in set_freq_store() and check the result
    to avoid invalid input.
    
    Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
    Link: https://lore.kernel.org/lkml/20250421030020.3108405-2-zhenglifeng1@huawei.com/
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop() [+ + +]
Author: Gautham R. Shenoy <gautham.shenoy@amd.com>
Date:   Thu Jun 12 17:53:54 2025 +0530

    pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop()
    
    [ Upstream commit cda7ac8ce7de84cf32a3871ba5f318aa3b79381e ]
    
    In the function mperf_start(), mperf_monitor snapshots the time, tsc
    and finally the aperf,mperf MSRs. However, this order of snapshotting
    in is reversed in mperf_stop(). As a result, the C0 residency (which
    is computed as delta_mperf * 100 / delta_tsc) is under-reported on
    CPUs that is 100% busy.
    
    Fix this by snapshotting time, tsc and then aperf,mperf in
    mperf_stop() in the same order as in mperf_start().
    
    Link: https://lore.kernel.org/r/20250612122355.19629-2-gautham.shenoy@amd.com
    Signed-off-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit() [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Jun 27 21:16:05 2025 +0200

    PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit()
    
    [ Upstream commit 89d9cec3b1e9c49bae9375a2db6dc49bc7468af0 ]
    
    Clear power.needs_force_resume in pm_runtime_reinit() in case it has
    been set by pm_runtime_force_suspend() invoked from a driver remove
    callback.
    
    Suggested-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Link: https://patch.msgid.link/9495163.CDJkKcVGEf@rjwysocki.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PM: sleep: console: Fix the black screen issue [+ + +]
Author: tuhaowen <tuhaowen@uniontech.com>
Date:   Wed Jun 11 11:23:45 2025 +0800

    PM: sleep: console: Fix the black screen issue
    
    [ Upstream commit 4266e8fa56d3d982bf451d382a410b9db432015c ]
    
    When the computer enters sleep status without a monitor
    connected, the system switches the console to the virtual
    terminal tty63(SUSPEND_CONSOLE).
    
    If a monitor is subsequently connected before waking up,
    the system skips the required VT restoration process
    during wake-up, leaving the console on tty63 instead of
    switching back to tty1.
    
    To fix this issue, a global flag vt_switch_done is introduced
    to record whether the system has successfully switched to
    the suspend console via vt_move_to_console() during suspend.
    
    If the switch was completed, vt_switch_done is set to 1.
    Later during resume, this flag is checked to ensure that
    the original console is restored properly by calling
    vt_move_to_console(orig_fgconsole, 0).
    
    This prevents scenarios where the resume logic skips console
    restoration due to incorrect detection of the console state,
    especially when a monitor is reconnected before waking up.
    
    Signed-off-by: tuhaowen <tuhaowen@uniontech.com>
    Link: https://patch.msgid.link/20250611032345.29962-1-tuhaowen@uniontech.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pmdomain: ti: Select PM_GENERIC_DOMAINS [+ + +]
Author: Guillaume La Roque <glaroque@baylibre.com>
Date:   Tue Jul 15 10:50:08 2025 +0200

    pmdomain: ti: Select PM_GENERIC_DOMAINS
    
    [ Upstream commit fcddcb7e8f38a40db99f87a962c5d0a153a76566 ]
    
    Select PM_GENERIC_DOMAINS instead of depending on it to ensure
    it is always enabled when TI_SCI_PM_DOMAINS is selected.
    Since PM_GENERIC_DOMAINS is an implicit symbol, it can only be enabled
    through 'select' and cannot be explicitly enabled in configuration.
    This simplifies the dependency chain and prevents build issues
    
    Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
    Reviewed-by: Nishanth Menon <nm@ti.com>
    Link: https://lore.kernel.org/r/20250715-depspmdomain-v2-1-6f0eda3ce824@baylibre.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pNFS: Fix disk addr range check in block/scsi layout [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Wed Jul 2 16:32:21 2025 +0300

    pNFS: Fix disk addr range check in block/scsi layout
    
    [ Upstream commit 7db6e66663681abda54f81d5916db3a3b8b1a13d ]
    
    At the end of the isect translation, disc_addr represents the physical
    disk offset. Thus, end calculated from disk_addr is also a physical disk
    offset. Therefore, range checking should be done using map->disk_offset,
    not map->start.
    
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250702133226.212537-1-sergeybashirov@gmail.com
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pNFS: Fix stripe mapping in block/scsi layout [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Tue Jul 1 15:21:48 2025 +0300

    pNFS: Fix stripe mapping in block/scsi layout
    
    [ Upstream commit 81438498a285759f31e843ac4800f82a5ce6521f ]
    
    Because of integer division, we need to carefully calculate the
    disk offset. Consider the example below for a stripe of 6 volumes,
    a chunk size of 4096, and an offset of 70000.
    
    chunk = div_u64(offset, dev->chunk_size) = 70000 / 4096 = 17
    offset = chunk * dev->chunk_size = 17 * 4096 = 69632
    disk_offset_wrong = div_u64(offset, dev->nr_children) = 69632 / 6 = 11605
    disk_chunk = div_u64(chunk, dev->nr_children) = 17 / 6 = 2
    disk_offset = disk_chunk * dev->chunk_size = 2 * 4096 = 8192
    
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250701122341.199112-1-sergeybashirov@gmail.com
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pNFS: Fix uninited ptr deref in block/scsi layout [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Jun 30 21:35:26 2025 +0300

    pNFS: Fix uninited ptr deref in block/scsi layout
    
    [ Upstream commit 9768797c219326699778fba9cd3b607b2f1e7950 ]
    
    The error occurs on the third attempt to encode extents. When function
    ext_tree_prepare_commit() reallocates a larger buffer to retry encoding
    extents, the "layoutupdate_pages" page array is initialized only after the
    retry loop. But ext_tree_free_commitdata() is called on every iteration
    and tries to put pages in the array, thus dereferencing uninitialized
    pointers.
    
    An additional problem is that there is no limit on the maximum possible
    buffer_size. When there are too many extents, the client may create a
    layoutcommit that is larger than the maximum possible RPC size accepted
    by the server.
    
    During testing, we observed two typical scenarios. First, one memory page
    for extents is enough when we work with small files, append data to the
    end of the file, or preallocate extents before writing. But when we fill
    a new large file without preallocating, the number of extents can be huge,
    and counting the number of written extents in ext_tree_encode_commit()
    does not help much. Since this number increases even more between
    unlocking and locking of ext_tree, the reallocated buffer may not be
    large enough again and again.
    
    Co-developed-by: Konstantin Evtushenko <koevtushenko@yandex.com>
    Signed-off-by: Konstantin Evtushenko <koevtushenko@yandex.com>
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250630183537.196479-2-sergeybashirov@gmail.com
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pNFS: Handle RPC size limit for layoutcommits [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Jun 30 21:35:29 2025 +0300

    pNFS: Handle RPC size limit for layoutcommits
    
    [ Upstream commit d897d81671bc4615c80f4f3bd5e6b218f59df50c ]
    
    When there are too many block extents for a layoutcommit, they may not
    all fit into the maximum-sized RPC. This patch allows the generic pnfs
    code to properly handle -ENOSPC returned by the block/scsi layout driver
    and trigger additional layoutcommits if necessary.
    
    Co-developed-by: Konstantin Evtushenko <koevtushenko@yandex.com>
    Signed-off-by: Konstantin Evtushenko <koevtushenko@yandex.com>
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20250630183537.196479-5-sergeybashirov@gmail.com
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
power: supply: qcom_battmgr: Add lithium-polymer entry [+ + +]
Author: Abel Vesa <abel.vesa@linaro.org>
Date:   Fri May 23 13:14:22 2025 +0300

    power: supply: qcom_battmgr: Add lithium-polymer entry
    
    [ Upstream commit 202ac22b8e2e015e6c196fd8113f3d2a62dd1afc ]
    
    On some Dell XPS 13 (9345) variants, the battery used is lithium-polymer
    based. Currently, this is reported as unknown technology due to the entry
    missing.
    
    [ 4083.135325] Unknown battery technology 'LIP'
    
    Add another check for lithium-polymer in the technology parsing callback
    and return that instead of unknown.
    
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250523-psy-qcom-battmgr-add-lipo-entry-v1-1-938c20a43a25@linaro.org
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/thp: tracing: Hide hugepage events under CONFIG_PPC_BOOK3S_64 [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Thu Jun 12 10:12:59 2025 -0400

    powerpc/thp: tracing: Hide hugepage events under CONFIG_PPC_BOOK3S_64
    
    [ Upstream commit 43cf0e05089afe23dac74fa6e1e109d49f2903c4 ]
    
    The events hugepage_set_pmd, hugepage_set_pud, hugepage_update_pmd and
    hugepage_update_pud are only called when CONFIG_PPC_BOOK3S_64 is defined.
    As each event can take up to 5K regardless if they are used or not, it's
    best not to define them when they are not used. Add #ifdef around these
    events when they are not used.
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/20250612101259.0ad43e48@batman.local.home
    Acked-by: David Hildenbrand <david@redhat.com>
    Acked-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc: floppy: Add missing checks after DMA map [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Fri Jun 20 09:55:55 2025 +0200

    powerpc: floppy: Add missing checks after DMA map
    
    [ Upstream commit cf183c1730f2634245da35e9b5d53381b787d112 ]
    
    The DMA map functions can fail and should be tested for errors.
    
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20250620075602.12575-1-fourier.thomas@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pps: clients: gpio: fix interrupt handling order in remove path [+ + +]
Author: Eliav Farber <farbere@amazon.com>
Date:   Tue May 27 05:33:55 2025 +0000

    pps: clients: gpio: fix interrupt handling order in remove path
    
    [ Upstream commit 6bca1e955830808dc90e0506b2951b4256b81bbb ]
    
    The interrupt handler in pps_gpio_probe() is registered after calling
    pps_register_source() using devm_request_irq(). However, in the
    corresponding remove function, pps_unregister_source() is called before
    the IRQ is freed, since devm-managed resources are released after the
    remove function completes.
    
    This creates a potential race condition where an interrupt may occur
    after the PPS source is unregistered but before the handler is removed,
    possibly leading to a kernel panic.
    
    To prevent this, switch from devm-managed IRQ registration to manual
    management by using request_irq() and calling free_irq() explicitly in
    the remove path before unregistering the PPS source. This ensures the
    interrupt handler is safely removed before deactivating the PPS source.
    
    Signed-off-by: Eliav Farber <farbere@amazon.com>
    Link: https://lore.kernel.org/r/20250527053355.37185-1-farbere@amazon.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
printk: nbcon: Allow reacquire during panic [+ + +]
Author: John Ogness <john.ogness@linutronix.de>
Date:   Fri Jun 6 21:01:49 2025 +0206

    printk: nbcon: Allow reacquire during panic
    
    [ Upstream commit 571c1ea91a73db56bd94054fabecd0f070dc90db ]
    
    If a console printer is interrupted during panic, it will never
    be able to reacquire ownership in order to perform and cleanup.
    That in itself is not a problem, since the non-panic CPU will
    simply quiesce in an endless loop within nbcon_reacquire_nobuf().
    
    However, in this state, platforms that do not support a true NMI
    to interrupt the quiesced CPU will not be able to shutdown that
    CPU from within panic(). This then causes problems for such as
    being unable to load and run a kdump kernel.
    
    Fix this by allowing non-panic CPUs to reacquire ownership using
    a direct acquire. Then the non-panic CPUs can successfullyl exit
    the nbcon_reacquire_nobuf() loop and the console driver can
    perform any necessary cleanup. But more importantly, the CPU is
    no longer quiesced and is free to process any interrupts
    necessary for panic() to shutdown the CPU.
    
    All other forms of acquire are still not allowed for non-panic
    CPUs since it is safer to have them avoid gaining console
    ownership that is not strictly necessary.
    
    Reported-by: Michael Kelley <mhklinux@outlook.com>
    Closes: https://lore.kernel.org/r/SN6PR02MB4157A4C5E8CB219A75263A17D46DA@SN6PR02MB4157.namprd02.prod.outlook.com
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Tested-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://patch.msgid.link/20250606185549.900611-1-john.ogness@linutronix.de
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ptp: prevent possible ABBA deadlock in ptp_clock_freerun() [+ + +]
Author: Jeongjun Park <aha310510@gmail.com>
Date:   Mon Jul 28 15:26:49 2025 +0900

    ptp: prevent possible ABBA deadlock in ptp_clock_freerun()
    
    [ Upstream commit 2efe41234dbd0a83fdb7cd38226c2f70039a2cd3 ]
    
    syzbot reported the following ABBA deadlock:
    
           CPU0                           CPU1
           ----                           ----
      n_vclocks_store()
        lock(&ptp->n_vclocks_mux) [1]
            (physical clock)
                                         pc_clock_adjtime()
                                           lock(&clk->rwsem) [2]
                                            (physical clock)
                                           ...
                                           ptp_clock_freerun()
                                             ptp_vclock_in_use()
                                               lock(&ptp->n_vclocks_mux) [3]
                                                  (physical clock)
        ptp_clock_unregister()
          posix_clock_unregister()
            lock(&clk->rwsem) [4]
              (virtual clock)
    
    Since ptp virtual clock is registered only under ptp physical clock, both
    ptp_clock and posix_clock must be physical clocks for ptp_vclock_in_use()
    to lock &ptp->n_vclocks_mux and check ptp->n_vclocks.
    
    However, when unregistering vclocks in n_vclocks_store(), the locking
    ptp->n_vclocks_mux is a physical clock lock, but clk->rwsem of
    ptp_clock_unregister() called through device_for_each_child_reverse()
    is a virtual clock lock.
    
    Therefore, clk->rwsem used in CPU0 and clk->rwsem used in CPU1 are
    different locks, but in lockdep, a false positive occurs because the
    possibility of deadlock is determined through lock-class.
    
    To solve this, lock subclass annotation must be added to the posix_clock
    rwsem of the vclock.
    
    Reported-by: syzbot+7cfb66a237c4a5fb22ad@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=7cfb66a237c4a5fb22ad
    Fixes: 73f37068d540 ("ptp: support ptp physical/virtual clocks conversion")
    Signed-off-by: Jeongjun Park <aha310510@gmail.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://patch.msgid.link/20250728062649.469882-1-aha310510@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ptp: Use ratelimite for freerun error message [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Fri Jun 13 10:15:46 2025 -0700

    ptp: Use ratelimite for freerun error message
    
    [ Upstream commit e9a7795e75b78b56997fb0070c18d6e1057b6462 ]
    
    Replace pr_err() with pr_err_ratelimited() in ptp_clock_settime() to
    prevent log flooding when the physical clock is free running, which
    happens on some of my hosts. This ensures error messages are
    rate-limited and improves kernel log readability.
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250613-ptp-v1-1-ee44260ce9e2@debian.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rcu/nocb: Fix possible invalid rdp's->nocb_cb_kthread pointer access [+ + +]
Author: Zqiang <qiang.zhang1211@gmail.com>
Date:   Wed May 7 19:26:05 2025 +0800

    rcu/nocb: Fix possible invalid rdp's->nocb_cb_kthread pointer access
    
    [ Upstream commit 1bba3900ca18bdae28d1b9fa10f16a8f8cb2ada1 ]
    
    In the preparation stage of CPU online, if the corresponding
    the rdp's->nocb_cb_kthread does not exist, will be created,
    there is a situation where the rdp's rcuop kthreads creation fails,
    and then de-offload this CPU's rdp, does not assign this CPU's
    rdp->nocb_cb_kthread pointer, but this rdp's->nocb_gp_rdp and
    rdp's->rdp_gp->nocb_gp_kthread is still valid.
    
    This will cause the subsequent re-offload operation of this offline
    CPU, which will pass the conditional check and the kthread_unpark()
    will access invalid rdp's->nocb_cb_kthread pointer.
    
    This commit therefore use rdp's->nocb_gp_kthread instead of
    rdp_gp's->nocb_gp_kthread for safety check.
    
    Signed-off-by: Zqiang <qiang.zhang1211@gmail.com>
    Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rcu: Fix racy re-initialization of irq_work causing hangs [+ + +]
Author: Frederic Weisbecker <frederic@kernel.org>
Date:   Fri Aug 8 19:03:22 2025 +0200

    rcu: Fix racy re-initialization of irq_work causing hangs
    
    commit 61399e0c5410567ef60cb1cda34cca42903842e3 upstream.
    
    RCU re-initializes the deferred QS irq work everytime before attempting
    to queue it. However there are situations where the irq work is
    attempted to be queued even though it is already queued. In that case
    re-initializing messes-up with the irq work queue that is about to be
    handled.
    
    The chances for that to happen are higher when the architecture doesn't
    support self-IPIs and irq work are then all lazy, such as with the
    following sequence:
    
    1) rcu_read_unlock() is called when IRQs are disabled and there is a
       grace period involving blocked tasks on the node. The irq work
       is then initialized and queued.
    
    2) The related tasks are unblocked and the CPU quiescent state
       is reported. rdp->defer_qs_iw_pending is reset to DEFER_QS_IDLE,
       allowing the irq work to be requeued in the future (note the previous
       one hasn't fired yet).
    
    3) A new grace period starts and the node has blocked tasks.
    
    4) rcu_read_unlock() is called when IRQs are disabled again. The irq work
       is re-initialized (but it's queued! and its node is cleared) and
       requeued. Which means it's requeued to itself.
    
    5) The irq work finally fires with the tick. But since it was requeued
       to itself, it loops and hangs.
    
    Fix this with initializing the irq work only once before the CPU boots.
    
    Fixes: b41642c87716 ("rcu: Fix rcu_read_unlock() deadloop due to IRQ work")
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202508071303.c1134cce-lkp@intel.com
    Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
    Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>
    Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rcu: Fix rcu_read_unlock() deadloop due to IRQ work [+ + +]
Author: Joel Fernandes <joelagnelf@nvidia.com>
Date:   Tue Jul 8 10:22:19 2025 -0400

    rcu: Fix rcu_read_unlock() deadloop due to IRQ work
    
    [ Upstream commit b41642c87716bbd09797b1e4ea7d904f06c39b7b ]
    
    During rcu_read_unlock_special(), if this happens during irq_exit(), we
    can lockup if an IPI is issued. This is because the IPI itself triggers
    the irq_exit() path causing a recursive lock up.
    
    This is precisely what Xiongfeng found when invoking a BPF program on
    the trace_tick_stop() tracepoint As shown in the trace below. Fix by
    managing the irq_work state correctly.
    
    irq_exit()
      __irq_exit_rcu()
        /* in_hardirq() returns false after this */
        preempt_count_sub(HARDIRQ_OFFSET)
        tick_irq_exit()
          tick_nohz_irq_exit()
                tick_nohz_stop_sched_tick()
                  trace_tick_stop()  /* a bpf prog is hooked on this trace point */
                       __bpf_trace_tick_stop()
                          bpf_trace_run2()
                                rcu_read_unlock_special()
                                  /* will send a IPI to itself */
                                  irq_work_queue_on(&rdp->defer_qs_iw, rdp->cpu);
    
    A simple reproducer can also be obtained by doing the following in
    tick_irq_exit(). It will hang on boot without the patch:
    
      static inline void tick_irq_exit(void)
      {
     +      rcu_read_lock();
     +      WRITE_ONCE(current->rcu_read_unlock_special.b.need_qs, true);
     +      rcu_read_unlock();
     +
    
    Reported-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
    Closes: https://lore.kernel.org/all/9acd5f9f-6732-7701-6880-4b51190aa070@huawei.com/
    Tested-by: Qi Xi <xiqi2@huawei.com>
    Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
    Reviewed-by: "Paul E. McKenney" <paulmck@kernel.org>
    Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
    [neeraj: Apply Frederic's suggested fix for PREEMPT_RT]
    Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rcu: Protect ->defer_qs_iw_pending from data race [+ + +]
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Thu Apr 24 16:49:53 2025 -0700

    rcu: Protect ->defer_qs_iw_pending from data race
    
    [ Upstream commit 90c09d57caeca94e6f3f87c49e96a91edd40cbfd ]
    
    On kernels built with CONFIG_IRQ_WORK=y, when rcu_read_unlock() is
    invoked within an interrupts-disabled region of code [1], it will invoke
    rcu_read_unlock_special(), which uses an irq-work handler to force the
    system to notice when the RCU read-side critical section actually ends.
    That end won't happen until interrupts are enabled at the soonest.
    
    In some kernels, such as those booted with rcutree.use_softirq=y, the
    irq-work handler is used unconditionally.
    
    The per-CPU rcu_data structure's ->defer_qs_iw_pending field is
    updated by the irq-work handler and is both read and updated by
    rcu_read_unlock_special().  This resulted in the following KCSAN splat:
    
    ------------------------------------------------------------------------
    
    BUG: KCSAN: data-race in rcu_preempt_deferred_qs_handler / rcu_read_unlock_special
    
    read to 0xffff96b95f42d8d8 of 1 bytes by task 90 on cpu 8:
     rcu_read_unlock_special+0x175/0x260
     __rcu_read_unlock+0x92/0xa0
     rt_spin_unlock+0x9b/0xc0
     __local_bh_enable+0x10d/0x170
     __local_bh_enable_ip+0xfb/0x150
     rcu_do_batch+0x595/0xc40
     rcu_cpu_kthread+0x4e9/0x830
     smpboot_thread_fn+0x24d/0x3b0
     kthread+0x3bd/0x410
     ret_from_fork+0x35/0x40
     ret_from_fork_asm+0x1a/0x30
    
    write to 0xffff96b95f42d8d8 of 1 bytes by task 88 on cpu 8:
     rcu_preempt_deferred_qs_handler+0x1e/0x30
     irq_work_single+0xaf/0x160
     run_irq_workd+0x91/0xc0
     smpboot_thread_fn+0x24d/0x3b0
     kthread+0x3bd/0x410
     ret_from_fork+0x35/0x40
     ret_from_fork_asm+0x1a/0x30
    
    no locks held by irq_work/8/88.
    irq event stamp: 200272
    hardirqs last  enabled at (200272): [<ffffffffb0f56121>] finish_task_switch+0x131/0x320
    hardirqs last disabled at (200271): [<ffffffffb25c7859>] __schedule+0x129/0xd70
    softirqs last  enabled at (0): [<ffffffffb0ee093f>] copy_process+0x4df/0x1cc0
    softirqs last disabled at (0): [<0000000000000000>] 0x0
    
    ------------------------------------------------------------------------
    
    The problem is that irq-work handlers run with interrupts enabled, which
    means that rcu_preempt_deferred_qs_handler() could be interrupted,
    and that interrupt handler might contain an RCU read-side critical
    section, which might invoke rcu_read_unlock_special().  In the strict
    KCSAN mode of operation used by RCU, this constitutes a data race on
    the ->defer_qs_iw_pending field.
    
    This commit therefore disables interrupts across the portion of the
    rcu_preempt_deferred_qs_handler() that updates the ->defer_qs_iw_pending
    field.  This suffices because this handler is not a fast path.
    
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
    Signed-off-by: Neeraj Upadhyay (AMD) <neeraj.upadhyay@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM [+ + +]
Author: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Date:   Fri Jul 4 10:08:55 2025 +0530

    RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM
    
    [ Upstream commit 09d231ab569ca97478445ccc1ad44ab026de39b1 ]
    
    Since both "length" and "offset" are of type u32, there is
    no functional issue here.
    
    Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
    Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
    Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Link: https://patch.msgid.link/20250704043857.19158-2-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/core: reduce stack using in nldev_stat_get_doit() [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jun 20 13:33:26 2025 +0200

    RDMA/core: reduce stack using in nldev_stat_get_doit()
    
    [ Upstream commit 43163f4c30f94d2103c948a247cdf2cda5068ca7 ]
    
    In the s390 defconfig, gcc-10 and earlier end up inlining three functions
    into nldev_stat_get_doit(), and each of them uses some 600 bytes of stack.
    
    The result is a function with an overly large stack frame and a warning:
    
    drivers/infiniband/core/nldev.c:2466:1: error: the frame size of 1720 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]
    
    Mark the three functions noinline_for_stack to prevent this, ensuring
    that only one copy of the nlattr array is on the stack of each function.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://patch.msgid.link/20250620113335.3776965-1-arnd@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/siw: Fix the sendmsg byte count in siw_tcp_sendpages [+ + +]
Author: Pedro Falcato <pfalcato@suse.de>
Date:   Tue Jul 29 13:03:48 2025 +0100

    RDMA/siw: Fix the sendmsg byte count in siw_tcp_sendpages
    
    commit c18646248fed07683d4cee8a8af933fc4fe83c0d upstream.
    
    Ever since commit c2ff29e99a76 ("siw: Inline do_tcp_sendpages()"),
    we have been doing this:
    
    static int siw_tcp_sendpages(struct socket *s, struct page **page, int offset,
                                 size_t size)
    [...]
            /* Calculate the number of bytes we need to push, for this page
             * specifically */
            size_t bytes = min_t(size_t, PAGE_SIZE - offset, size);
            /* If we can't splice it, then copy it in, as normal */
            if (!sendpage_ok(page[i]))
                    msg.msg_flags &= ~MSG_SPLICE_PAGES;
            /* Set the bvec pointing to the page, with len $bytes */
            bvec_set_page(&bvec, page[i], bytes, offset);
            /* Set the iter to $size, aka the size of the whole sendpages (!!!) */
            iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, &bvec, 1, size);
    try_page_again:
            lock_sock(sk);
            /* Sendmsg with $size size (!!!) */
            rv = tcp_sendmsg_locked(sk, &msg, size);
    
    This means we've been sending oversized iov_iters and tcp_sendmsg calls
    for a while. This has a been a benign bug because sendpage_ok() always
    returned true. With the recent slab allocator changes being slowly
    introduced into next (that disallow sendpage on large kmalloc
    allocations), we have recently hit out-of-bounds crashes, due to slight
    differences in iov_iter behavior between the MSG_SPLICE_PAGES and
    "regular" copy paths:
    
    (MSG_SPLICE_PAGES)
    skb_splice_from_iter
      iov_iter_extract_pages
        iov_iter_extract_bvec_pages
          uses i->nr_segs to correctly stop in its tracks before OoB'ing everywhere
      skb_splice_from_iter gets a "short" read
    
    (!MSG_SPLICE_PAGES)
    skb_copy_to_page_nocache copy=iov_iter_count
     [...]
       copy_from_iter
            /* this doesn't help */
            if (unlikely(iter->count < len))
                    len = iter->count;
              iterate_bvec
                ... and we run off the bvecs
    
    Fix this by properly setting the iov_iter's byte count, plus sending the
    correct byte count to tcp_sendmsg_locked.
    
    Link: https://patch.msgid.link/r/20250729120348.495568-1-pfalcato@suse.de
    Cc: stable@vger.kernel.org
    Fixes: c2ff29e99a76 ("siw: Inline do_tcp_sendpages()")
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202507220801.50a7210-lkp@intel.com
    Reviewed-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Pedro Falcato <pfalcato@suse.de>
    Acked-by: Bernard Metzler <bernard.metzler@linux.dev>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA: hfi1: fix possible divide-by-zero in find_hw_thread_mask() [+ + +]
Author: Yury Norov [NVIDIA] <yury.norov@gmail.com>
Date:   Wed Jun 4 15:39:38 2025 -0400

    RDMA: hfi1: fix possible divide-by-zero in find_hw_thread_mask()
    
    [ Upstream commit 59f7d2138591ef8f0e4e4ab5f1ab674e8181ad3a ]
    
    The function divides number of online CPUs by num_core_siblings, and
    later checks the divider by zero. This implies a possibility to get
    and divide-by-zero runtime error. Fix it by moving the check prior to
    division. This also helps to save one indentation level.
    
    Signed-off-by: Yury Norov [NVIDIA] <yury.norov@gmail.com>
    Link: https://patch.msgid.link/20250604193947.11834-3-yury.norov@gmail.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU [+ + +]
Author: Hiago De Franco <hiago.franco@toradex.com>
Date:   Sun Jun 29 14:25:11 2025 -0300

    remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU
    
    [ Upstream commit 496deecb020d14ba89ba7084fbc3024f91687023 ]
    
    For the i.MX8X and i.MX8 family SoCs, when the Cortex-M core is powered
    up and started by the Cortex-A core using the bootloader (e.g., via the
    U-Boot bootaux command), both M-core and Linux run within the same SCFW
    (System Controller Firmware) partition. With that, Linux has permission
    to control the M-core.
    
    But once the M-core is started by the bootloader, the SCFW automatically
    enables its clock and sets the clock rate. If Linux later attempts to
    enable the same clock via clk_prepare_enable(), the SCFW returns a
    'LOCKED' error, as the clock is already configured by the SCFW. This
    causes the probe function in imx_rproc.c to fail, leading to the M-core
    power domain being shut down while the core is still running. This
    results in a fault from the SCU (System Controller Unit) and triggers a
    system reset.
    
    To address this issue, ignore handling the clk for i.MX8X and i.MX8
    M-core, as SCFW already takes care of enabling and configuring the
    clock.
    
    Suggested-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Hiago De Franco <hiago.franco@toradex.com>
    Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Link: https://lore.kernel.org/r/20250629172512.14857-3-hiagofranco@gmail.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
reset: brcmstb: Enable reset drivers for ARCH_BCM2835 [+ + +]
Author: Peter Robinson <pbrobinson@gmail.com>
Date:   Mon Jun 30 18:52:58 2025 +0100

    reset: brcmstb: Enable reset drivers for ARCH_BCM2835
    
    [ Upstream commit 1d99f92f71b6b4b2eee776562c991428490f71ef ]
    
    The BRCMSTB and BRCMSTB_RESCAL reset drivers are also
    used in the BCM2712, AKA the RPi5. The RPi platforms
    have typically used the ARCH_BCM2835, and the PCIe
    support for this SoC can use this config which depends
    on these drivers so enable building them when just that
    arch option is enabled to ensure the platform works as
    expected.
    
    Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
    Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://lore.kernel.org/r/20250630175301.846082-1-pbrobinson@gmail.com
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "gpio: mlxbf3: only get IRQ for device instance 0" [+ + +]
Author: David Thompson <davthompson@nvidia.com>
Date:   Mon Aug 11 13:50:44 2025 -0400

    Revert "gpio: mlxbf3: only get IRQ for device instance 0"
    
    commit 56bdf7270ff4f870e2d4bfacdc00161e766dba2d upstream.
    
    This reverts commit 10af0273a35ab4513ca1546644b8c853044da134.
    
    While this change was merged, it is not the preferred solution.
    During review of a similar change to the gpio-mlxbf2 driver, the
    use of "platform_get_irq_optional" was identified as the preferred
    solution, so let's use it for gpio-mlxbf3 driver as well.
    
    Cc: stable@vger.kernel.org
    Fixes: 10af0273a35a ("gpio: mlxbf3: only get IRQ for device instance 0")
    Signed-off-by: David Thompson <davthompson@nvidia.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/8d2b630c71b3742f2c74242cf7d602706a6108e6.1754928650.git.davthompson@nvidia.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "leds: trigger: netdev: Configure LED blink interval for HW offload" [+ + +]
Author: Daniel Golle <daniel@makrotopia.org>
Date:   Sat Jul 12 16:39:21 2025 +0100

    Revert "leds: trigger: netdev: Configure LED blink interval for HW offload"
    
    commit 26f732791f2bcab18f59c61915bbe35225f30136 upstream.
    
    This reverts commit c629c972b310af41e9e072febb6dae9a299edde6.
    
    While .led_blink_set() would previously put an LED into an unconditional
    permanently blinking state, the offending commit now uses same operation
    to (also?) set the blink timing of the netdev trigger when offloading.
    
    This breaks many if not all of the existing PHY drivers which offer
    offloading LED operations, as those drivers would just put the LED into
    blinking state after .led_blink_set() has been called.
    
    Unfortunately the change even made it into stable kernels for unknown
    reasons, so it should be reverted there as well.
    
    Fixes: c629c972b310a ("leds: trigger: netdev: Configure LED blink interval for HW offload")
    Link: https://lore.kernel.org/linux-leds/c6134e26-2e45-4121-aa15-58aaef327201@lunn.ch/T/#m9d6fe81bbcb273e59f12bbedbd633edd32118387
    Suggested-by: Andrew Lunn <andrew@lunn.ch>
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Golle <daniel@makrotopia.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/6dcc77ee1c9676891d6250d8994850f521426a0f.1752334655.git.daniel@makrotopia.org
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rtc: ds1307: handle oscillator stop flag (OSF) for ds1341 [+ + +]
Author: Meagan Lloyd <meaganlloyd@linux.microsoft.com>
Date:   Wed Jun 11 11:14:16 2025 -0700

    rtc: ds1307: handle oscillator stop flag (OSF) for ds1341
    
    [ Upstream commit 523923cfd5d622b8f4ba893fdaf29fa6adeb8c3e ]
    
    In using CONFIG_RTC_HCTOSYS, rtc_hctosys() will sync the RTC time to the
    kernel time as long as rtc_read_time() succeeds. In some power loss
    situations, our supercapacitor-backed DS1342 RTC comes up with either an
    unpredictable future time or the default 01/01/00 from the datasheet.
    The oscillator stop flag (OSF) is set in these scenarios due to the
    power loss and can be used to determine the validity of the RTC data.
    
    This change expands the oscillator stop flag (OSF) handling that has
    already been implemented for some chips to the ds1341 chip (DS1341 and
    DS1342 share a datasheet). This handling manages the validity of the RTC
    data in .read_time and .set_time based on the OSF.
    
    Signed-off-by: Meagan Lloyd <meaganlloyd@linux.microsoft.com>
    Reviewed-by: Tyler Hicks <code@tyhicks.com>
    Acked-by: Rodolfo Giometti <giometti@enneenne.com>
    Link: https://lore.kernel.org/r/1749665656-30108-3-git-send-email-meaganlloyd@linux.microsoft.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe [+ + +]
Author: Meagan Lloyd <meaganlloyd@linux.microsoft.com>
Date:   Wed Jun 11 11:14:15 2025 -0700

    rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe
    
    [ Upstream commit 48458654659c9c2e149c211d86637f1592470da5 ]
    
    In using CONFIG_RTC_HCTOSYS, rtc_hctosys() will sync the RTC time to the
    kernel time as long as rtc_read_time() succeeds. In some power loss
    situations, our supercapacitor-backed DS1342 RTC comes up with either an
    unpredictable future time or the default 01/01/00 from the datasheet.
    The oscillator stop flag (OSF) is set in these scenarios due to the
    power loss and can be used to determine the validity of the RTC data.
    
    Some chip types in the ds1307 driver already have OSF handling to
    determine whether .read_time provides valid RTC data or returns -EINVAL.
    
    This change removes the clear of the OSF in .probe as the OSF needs to
    be preserved to expand the OSF handling to the ds1341 chip type (note
    that DS1341 and DS1342 share a datasheet).
    
    Signed-off-by: Meagan Lloyd <meaganlloyd@linux.microsoft.com>
    Reviewed-by: Tyler Hicks <code@tyhicks.com>
    Acked-by: Rodolfo Giometti <giometti@enneenne.com>
    Link: https://lore.kernel.org/r/1749665656-30108-2-git-send-email-meaganlloyd@linux.microsoft.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rust: kbuild: clean output before running `rustdoc` [+ + +]
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Sat Jul 26 15:34:35 2025 +0200

    rust: kbuild: clean output before running `rustdoc`
    
    commit 252fea131e15aba2cd487119d1a8f546471199e2 upstream.
    
    `rustdoc` can get confused when generating documentation into a folder
    that contains generated files from other `rustdoc` versions.
    
    For instance, running something like:
    
        rustup default 1.78.0
        make LLVM=1 rustdoc
        rustup default 1.88.0
        make LLVM=1 rustdoc
    
    may generate errors like:
    
        error: couldn't generate documentation: invalid template: last line expected to start with a comment
          |
          = note: failed to create or modify "./Documentation/output/rust/rustdoc/src-files.js"
    
    Thus just always clean the output folder before generating the
    documentation -- we are anyway regenerating it every time the `rustdoc`
    target gets called, at least for the time being.
    
    Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
    Reported-by: Daniel Almeida <daniel.almeida@collabora.com>
    Closes: https://rust-for-linux.zulipchat.com/#narrow/channel/288089/topic/x/near/527201113
    Reviewed-by: Tamir Duberstein <tamird@kernel.org>
    Link: https://lore.kernel.org/r/20250726133435.2460085-1-ojeda@kernel.org
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rust: workaround `rustdoc` target modifiers bug [+ + +]
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Sun Jul 27 11:23:17 2025 +0200

    rust: workaround `rustdoc` target modifiers bug
    
    commit abbf9a44944171ca99c150adad9361a2f517d3b6 upstream.
    
    Starting with Rust 1.88.0 (released 2025-06-26), `rustdoc` complains
    about a target modifier mismatch in configurations where `-Zfixed-x18`
    is passed:
    
        error: mixing `-Zfixed-x18` will cause an ABI mismatch in crate `rust_out`
          |
          = help: the `-Zfixed-x18` flag modifies the ABI so Rust crates compiled with different values of this flag cannot be used together safely
          = note: unset `-Zfixed-x18` in this crate is incompatible with `-Zfixed-x18=` in dependency `core`
          = help: set `-Zfixed-x18=` in this crate or unset `-Zfixed-x18` in `core`
          = help: if you are sure this will not cause problems, you may use `-Cunsafe-allow-abi-mismatch=fixed-x18` to silence this error
    
    The reason is that `rustdoc` was not passing the target modifiers when
    configuring the session options, and thus it would report a mismatch
    that did not exist as soon as a target modifier is used in a dependency.
    
    We did not notice it in the kernel until now because `-Zfixed-x18` has
    been a target modifier only since 1.88.0 (and it is the only one we use
    so far).
    
    The issue has been reported upstream [1] and a fix has been submitted
    [2], including a test similar to the kernel case.
    
      [ This is now fixed upstream (thanks Guillaume for the quick review),
        so it will be fixed in Rust 1.90.0 (expected 2025-09-18).
    
          - Miguel ]
    
    Meanwhile, conditionally pass `-Cunsafe-allow-abi-mismatch=fixed-x18`
    to workaround the issue on our side.
    
    Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
    Reported-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Closes: https://lore.kernel.org/rust-for-linux/36cdc798-524f-4910-8b77-d7b9fac08d77@oss.qualcomm.com/
    Link: https://github.com/rust-lang/rust/issues/144521 [1]
    Link: https://github.com/rust-lang/rust/pull/144523 [2]
    Reviewed-by: Alice Ryhl <aliceryhl@google.com>
    Link: https://lore.kernel.org/r/20250727092317.2930617-1-ojeda@kernel.org
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/early: Copy last breaking event address to pt_regs [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Tue Jul 1 18:12:06 2025 +0200

    s390/early: Copy last breaking event address to pt_regs
    
    [ Upstream commit 7cf636c99b257c1b4b12066ab34fd5f06e8d892f ]
    
    In case of an early crash the early program check handler also prints the
    last breaking event address which is contained within the pt_regs
    structure. However it is not initialized, and therefore a more or less
    random value is printed in case of a crash.
    
    Copy the last breaking event address from lowcore to pt_regs in case of an
    early program check to address this. This also makes it easier to analyze
    early crashes.
    
    Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/stp: Remove udelay from stp_sync_clock() [+ + +]
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Thu Jul 3 13:50:27 2025 +0200

    s390/stp: Remove udelay from stp_sync_clock()
    
    [ Upstream commit b367017cdac21781a74eff4e208d3d38e1f38d3f ]
    
    When an stp sync check is handled on a system with multiple
    cpus each cpu gets a machine check but only the first one
    actually handles the sync operation. All other CPUs spin
    waiting for the first one to finish with a short udelay().
    But udelay can't be used here as the first CPU modifies tod_clock_base
    before performing the sync op. During this timeframe
    get_tod_clock_monotonic() might return a non-monotonic time.
    
    The time spent waiting should be very short and udelay is a busy loop
    anyways, therefore simply remove the udelay.
    
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/time: Use monotonic clock in get_cycles() [+ + +]
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Thu Jul 10 09:42:29 2025 +0200

    s390/time: Use monotonic clock in get_cycles()
    
    [ Upstream commit 09e7e29d2b49ba84bcefb3dc1657726d2de5bb24 ]
    
    Otherwise the code might not work correctly when the clock
    is changed.
    
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched/deadline: Fix accounting after global limits change [+ + +]
Author: Juri Lelli <juri.lelli@redhat.com>
Date:   Fri Jun 27 13:51:16 2025 +0200

    sched/deadline: Fix accounting after global limits change
    
    [ Upstream commit 440989c10f4e32620e9e2717ca52c3ed7ae11048 ]
    
    A global limits change (sched_rt_handler() logic) currently leaves stale
    and/or incorrect values in variables related to accounting (e.g.
    extra_bw).
    
    Properly clean up per runqueue variables before implementing the change
    and rebuild scheduling domains (so that accounting is also properly
    restored) after such a change is complete.
    
    Reported-by: Marcel Ziswiler <marcel.ziswiler@codethink.co.uk>
    Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Marcel Ziswiler <marcel.ziswiler@codethink.co.uk> # nuc & rock5b
    Link: https://lore.kernel.org/r/20250627115118.438797-4-juri.lelli@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched/fair: Bump sd->max_newidle_lb_cost when newidle balance fails [+ + +]
Author: Chris Mason <clm@fb.com>
Date:   Thu Jun 26 07:39:10 2025 -0700

    sched/fair: Bump sd->max_newidle_lb_cost when newidle balance fails
    
    [ Upstream commit 155213a2aed42c85361bf4f5c817f5cb68951c3b ]
    
    schbench (https://github.com/masoncl/schbench.git) is showing a
    regression from previous production kernels that bisected down to:
    
    sched/fair: Remove sysctl_sched_migration_cost condition (c5b0a7eefc)
    
    The schbench command line was:
    
    schbench -L -m 4 -M auto -t 256 -n 0 -r 0 -s 0
    
    This creates 4 message threads pinned to CPUs 0-3, and 256x4 worker
    threads spread across the rest of the CPUs.  Neither the worker threads
    or the message threads do any work, they just wake each other up and go
    back to sleep as soon as possible.
    
    The end result is the first 4 CPUs are pegged waking up those 1024
    workers, and the rest of the CPUs are constantly banging in and out of
    idle.  If I take a v6.9 Linus kernel and revert that one commit,
    performance goes from 3.4M RPS to 5.4M RPS.
    
    schedstat shows there are ~100x  more new idle balance operations, and
    profiling shows the worker threads are spending ~20% of their CPU time
    on new idle balance.  schedstats also shows that almost all of these new
    idle balance attemps are failing to find busy groups.
    
    The fix used here is to crank up the cost of the newidle balance whenever it
    fails.  Since we don't want sd->max_newidle_lb_cost to grow out of
    control, this also changes update_newidle_cost() to use
    sysctl_sched_migration_cost as the upper limit on max_newidle_lb_cost.
    
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
    Link: https://lkml.kernel.org/r/20250626144017.1510594-2-clm@fb.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: aacraid: Stop using PCI_IRQ_AFFINITY [+ + +]
Author: John Garry <john.g.garry@oracle.com>
Date:   Tue Jul 15 11:15:35 2025 +0000

    scsi: aacraid: Stop using PCI_IRQ_AFFINITY
    
    [ Upstream commit dafeaf2c03e71255438ffe5a341d94d180e6c88e ]
    
    When PCI_IRQ_AFFINITY is set for calling pci_alloc_irq_vectors(), it
    means interrupts are spread around the available CPUs. It also means that
    the interrupts become managed, which means that an interrupt is shutdown
    when all the CPUs in the interrupt affinity mask go offline.
    
    Using managed interrupts in this way means that we should ensure that
    completions should not occur on HW queues where the associated interrupt
    is shutdown. This is typically achieved by ensuring only CPUs which are
    online can generate IO completion traffic to the HW queue which they are
    mapped to (so that they can also serve completion interrupts for that HW
    queue).
    
    The problem in the driver is that a CPU can generate completions to a HW
    queue whose interrupt may be shutdown, as the CPUs in the HW queue
    interrupt affinity mask may be offline. This can cause IOs to never
    complete and hang the system. The driver maintains its own CPU <-> HW
    queue mapping for submissions, see aac_fib_vector_assign(), but this does
    not reflect the CPU <-> HW queue interrupt affinity mapping.
    
    Commit 9dc704dcc09e ("scsi: aacraid: Reply queue mapping to CPUs based on
    IRQ affinity") tried to remedy this issue may mapping CPUs properly to HW
    queue interrupts. However this was later reverted in commit c5becf57dd56
    ("Revert "scsi: aacraid: Reply queue mapping to CPUs based on IRQ
    affinity") - it seems that there were other reports of hangs. I guess
    that this was due to some implementation issue in the original commit or
    maybe a HW issue.
    
    Fix the very original hang by just not using managed interrupts by not
    setting PCI_IRQ_AFFINITY.  In this way, all CPUs will be in each HW queue
    affinity mask, so should not create completion problems if any CPUs go
    offline.
    
    Signed-off-by: John Garry <john.g.garry@oracle.com>
    Link: https://lore.kernel.org/r/20250715111535.499853-1-john.g.garry@oracle.com
    Closes: https://lore.kernel.org/linux-scsi/20250618192427.3845724-1-jmeneghi@redhat.com/
    Reviewed-by: John Meneghini <jmeneghi@redhat.com>
    Tested-by: John Meneghini <jmeneghi@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: bfa: Double-free fix [+ + +]
Author: jackysliu <1972843537@qq.com>
Date:   Tue Jun 24 19:58:24 2025 +0800

    scsi: bfa: Double-free fix
    
    [ Upstream commit add4c4850363d7c1b72e8fce9ccb21fdd2cf5dc9 ]
    
    When the bfad_im_probe() function fails during initialization, the memory
    pointed to by bfad->im is freed without setting bfad->im to NULL.
    
    Subsequently, during driver uninstallation, when the state machine enters
    the bfad_sm_stopping state and calls the bfad_im_probe_undo() function,
    it attempts to free the memory pointed to by bfad->im again, thereby
    triggering a double-free vulnerability.
    
    Set bfad->im to NULL if probing fails.
    
    Signed-off-by: jackysliu <1972843537@qq.com>
    Link: https://lore.kernel.org/r/tencent_3BB950D6D2D470976F55FC879206DE0B9A09@qq.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: Fix sas_user_scan() to handle wildcard and multi-channel scans [+ + +]
Author: Ranjan Kumar <ranjan.kumar@broadcom.com>
Date:   Tue Jun 24 11:46:49 2025 +0530

    scsi: Fix sas_user_scan() to handle wildcard and multi-channel scans
    
    [ Upstream commit 37c4e72b0651e7697eb338cd1fb09feef472cc1a ]
    
    sas_user_scan() did not fully process wildcard channel scans
    (SCAN_WILD_CARD) when a transport-specific user_scan() callback was
    present. Only channel 0 would be scanned via user_scan(), while the
    remaining channels were skipped, potentially missing devices.
    
    user_scan() invokes updated sas_user_scan() for channel 0, and if
    successful, iteratively scans remaining channels (1 to
    shost->max_channel) via scsi_scan_host_selected().  This ensures complete
    wildcard scanning without affecting transport-specific scanning behavior.
    
    Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
    Link: https://lore.kernel.org/r/20250624061649.17990-1-ranjan.kumar@broadcom.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: libiscsi: Initialize iscsi_conn->dd_data only if memory is allocated [+ + +]
Author: Showrya M N <showrya@chelsio.com>
Date:   Fri Jun 27 16:53:29 2025 +0530

    scsi: libiscsi: Initialize iscsi_conn->dd_data only if memory is allocated
    
    [ Upstream commit 3ea3a256ed81f95ab0f3281a0e234b01a9cae605 ]
    
    In case of an ib_fast_reg_mr allocation failure during iSER setup, the
    machine hits a panic because iscsi_conn->dd_data is initialized
    unconditionally, even when no memory is allocated (dd_size == 0).  This
    leads invalid pointer dereference during connection teardown.
    
    Fix by setting iscsi_conn->dd_data only if memory is actually allocated.
    
    Panic trace:
    ------------
     iser: iser_create_fastreg_desc: Failed to allocate ib_fast_reg_mr err=-12
     iser: iser_alloc_rx_descriptors: failed allocating rx descriptors / data buffers
     BUG: unable to handle page fault for address: fffffffffffffff8
     RIP: 0010:swake_up_locked.part.5+0xa/0x40
     Call Trace:
      complete+0x31/0x40
      iscsi_iser_conn_stop+0x88/0xb0 [ib_iser]
      iscsi_stop_conn+0x66/0xc0 [scsi_transport_iscsi]
      iscsi_if_stop_conn+0x14a/0x150 [scsi_transport_iscsi]
      iscsi_if_rx+0x1135/0x1834 [scsi_transport_iscsi]
      ? netlink_lookup+0x12f/0x1b0
      ? netlink_deliver_tap+0x2c/0x200
      netlink_unicast+0x1ab/0x280
      netlink_sendmsg+0x257/0x4f0
      ? _copy_from_user+0x29/0x60
      sock_sendmsg+0x5f/0x70
    
    Signed-off-by: Showrya M N <showrya@chelsio.com>
    Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Link: https://lore.kernel.org/r/20250627112329.19763-1-showrya@chelsio.com
    Reviewed-by: Chris Leech <cleech@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: lpfc: Check for hdwq null ptr when cleaning up lpfc_vport structure [+ + +]
Author: Justin Tee <justin.tee@broadcom.com>
Date:   Wed Jun 18 12:21:28 2025 -0700

    scsi: lpfc: Check for hdwq null ptr when cleaning up lpfc_vport structure
    
    [ Upstream commit 6698796282e828733cde3329c887b4ae9e5545e9 ]
    
    If a call to lpfc_sli4_read_rev() from lpfc_sli4_hba_setup() fails, the
    resultant cleanup routine lpfc_sli4_vport_delete_fcp_xri_aborted() may
    occur before sli4_hba.hdwqs are allocated.  This may result in a null
    pointer dereference when attempting to take the abts_io_buf_list_lock for
    the first hardware queue.  Fix by adding a null ptr check on
    phba->sli4_hba.hdwq and early return because this situation means there
    must have been an error during port initialization.
    
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Link: https://lore.kernel.org/r/20250618192138.124116-4-justintee8345@gmail.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: lpfc: Ensure HBA_SETUP flag is used only for SLI4 in dev_loss_tmo_callbk [+ + +]
Author: Justin Tee <justin.tee@broadcom.com>
Date:   Wed Jun 18 12:21:33 2025 -0700

    scsi: lpfc: Ensure HBA_SETUP flag is used only for SLI4 in dev_loss_tmo_callbk
    
    [ Upstream commit 1cced5779e7a3ff7ec025fc47c76a7bd3bb38877 ]
    
    For SLI3, the HBA_SETUP flag is never set so the lpfc_dev_loss_tmo_callbk
    always early returns.  Add a phba->sli_rev check for SLI4 mode so that
    the SLI3 path can flow through the original dev_loss_tmo worker thread
    design to lpfc_dev_loss_tmo_handler instead of early return.
    
    Signed-off-by: Justin Tee <justin.tee@broadcom.com>
    Link: https://lore.kernel.org/r/20250618192138.124116-9-justintee8345@gmail.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: lpfc: Remove redundant assignment to avoid memory leak [+ + +]
Author: Jiasheng Jiang <jiashengjiangcool@gmail.com>
Date:   Fri Aug 1 18:52:02 2025 +0000

    scsi: lpfc: Remove redundant assignment to avoid memory leak
    
    [ Upstream commit eea6cafb5890db488fce1c69d05464214616d800 ]
    
    Remove the redundant assignment if kzalloc() succeeds to avoid memory
    leak.
    
    Fixes: bd2cdd5e400f ("scsi: lpfc: NVME Initiator: Add debugfs support")
    Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
    Link: https://lore.kernel.org/r/20250801185202.42631-1-jiashengjiangcool@gmail.com
    Reviewed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpi3mr: Correctly handle ATA device errors [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Fri Jun 6 14:27:46 2025 +0900

    scsi: mpi3mr: Correctly handle ATA device errors
    
    [ Upstream commit 04caad5a7ba86e830d04750417a15bad8ac2613c ]
    
    With the ATA error model, an NCQ command failure always triggers an abort
    (termination) of all NCQ commands queued on the device. In such case, the
    SAT or the host must handle the failed command according to the command
    sense data and immediately retry all other NCQ commands that were aborted
    due to the failed NCQ command.
    
    For SAS HBAs controlled by the mpi3mr driver, NCQ command aborts are not
    handled by the HBA SAT and sent back to the host, with an ioc log
    information equal to 0x31080000 (IOC_LOGINFO_PREFIX_PL with the PL code
    PL_LOGINFO_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR). The function
    mpi3mr_process_op_reply_desc() always forces a retry of commands
    terminated with the status MPI3_IOCSTATUS_SCSI_IOC_TERMINATED using the
    SCSI result DID_SOFT_ERROR, regardless of the ioc_loginfo for the
    command. This correctly forces the retry of collateral NCQ abort
    commands, but with the retry counter for the command being incremented.
    If a command to an ATA device is subject to too many retries due to other
    NCQ commands failing (e.g. read commands trying to access unreadable
    sectors), the collateral NCQ abort commands may be terminated with an
    error as they run out of retries. This violates the SAT specification and
    causes hard-to-debug command errors.
    
    Solve this issue by modifying the handling of the
    MPI3_IOCSTATUS_SCSI_IOC_TERMINATED status to check if a command is for an
    ATA device and if the command ioc_loginfo indicates an NCQ collateral
    abort. If that is the case, force the command retry using the SCSI result
    DID_IMM_RETRY to avoid incrementing the command retry count.
    
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Link: https://lore.kernel.org/r/20250606052747.742998-2-dlemoal@kernel.org
    Tested-by: Yafang Shao <laoar.shao@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpt3sas: Correctly handle ATA device errors [+ + +]
Author: Damien Le Moal <dlemoal@kernel.org>
Date:   Fri Jun 6 14:27:47 2025 +0900

    scsi: mpt3sas: Correctly handle ATA device errors
    
    [ Upstream commit 15592a11d5a5c8411ac8494ec49736b658f6fbff ]
    
    With the ATA error model, an NCQ command failure always triggers an abort
    (termination) of all NCQ commands queued on the device. In such case, the
    SAT or the host must handle the failed command according to the command
    sense data and immediately retry all other NCQ commands that were aborted
    due to the failed NCQ command.
    
    For SAS HBAs controlled by the mpt3sas driver, NCQ command aborts are not
    handled by the HBA SAT and sent back to the host, with an ioc log
    information equal to 0x31080000 (IOC_LOGINFO_PREFIX_PL with the PL code
    PL_LOGINFO_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR). The function
    _scsih_io_done() always forces a retry of commands terminated with the
    status MPI2_IOCSTATUS_SCSI_IOC_TERMINATED using the SCSI result
    DID_SOFT_ERROR, regardless of the log_info for the command.  This
    correctly forces the retry of collateral NCQ abort commands, but with the
    retry counter for the command being incremented. If a command to an ATA
    device is subject to too many retries due to other NCQ commands failing
    (e.g. read commands trying to access unreadable sectors), the collateral
    NCQ abort commands may be terminated with an error as they run out of
    retries. This violates the SAT specification and causes hard-to-debug
    command errors.
    
    Solve this issue by modifying the handling of the
    MPI2_IOCSTATUS_SCSI_IOC_TERMINATED status to check if a command is for an
    ATA device and if the command loginfo indicates an NCQ collateral
    abort. If that is the case, force the command retry using the SCSI result
    DID_IMM_RETRY to avoid incrementing the command retry count.
    
    Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
    Link: https://lore.kernel.org/r/20250606052747.742998-3-dlemoal@kernel.org
    Tested-by: Yafang Shao <laoar.shao@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: target: core: Generate correct identifiers for PR OUT transport IDs [+ + +]
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Mon Jul 14 15:37:38 2025 +0200

    scsi: target: core: Generate correct identifiers for PR OUT transport IDs
    
    [ Upstream commit 6e0f6aa44b68335df404a2df955055f416b5f2aa ]
    
    Fix target_parse_pr_out_transport_id() to return a string representing
    the transport ID in a human-readable format (e.g., naa.xxxxxxxx...)  for
    various SCSI protocol types (SAS, FCP, SRP, SBP).
    
    Previously, the function returned a pointer to the raw binary buffer,
    which was incorrectly compared against human-readable strings, causing
    comparisons to fail.  Now, the function writes a properly formatted
    string into a buffer provided by the caller.  The output format depends
    on the transport protocol:
    
    * SAS: 64-bit identifier, "naa." prefix.
    * FCP: 64-bit identifier, colon separated values.
    * SBP: 64-bit identifier, no prefix.
    * SRP: 128-bit identifier, "0x" prefix.
    * iSCSI: IQN string.
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Link: https://lore.kernel.org/r/20250714133738.11054-1-mlombard@redhat.com
    Reviewed-by: Dmitry Bogdanov <d.bogdanov@yadro.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sctp: linearize cloned gso packets in sctp_rcv [+ + +]
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Aug 7 15:40:11 2025 -0400

    sctp: linearize cloned gso packets in sctp_rcv
    
    [ Upstream commit fd60d8a086191fe33c2d719732d2482052fa6805 ]
    
    A cloned head skb still shares these frag skbs in fraglist with the
    original head skb. It's not safe to access these frag skbs.
    
    syzbot reported two use-of-uninitialized-memory bugs caused by this:
    
      BUG: KMSAN: uninit-value in sctp_inq_pop+0x15b7/0x1920 net/sctp/inqueue.c:211
       sctp_inq_pop+0x15b7/0x1920 net/sctp/inqueue.c:211
       sctp_assoc_bh_rcv+0x1a7/0xc50 net/sctp/associola.c:998
       sctp_inq_push+0x2ef/0x380 net/sctp/inqueue.c:88
       sctp_backlog_rcv+0x397/0xdb0 net/sctp/input.c:331
       sk_backlog_rcv+0x13b/0x420 include/net/sock.h:1122
       __release_sock+0x1da/0x330 net/core/sock.c:3106
       release_sock+0x6b/0x250 net/core/sock.c:3660
       sctp_wait_for_connect+0x487/0x820 net/sctp/socket.c:9360
       sctp_sendmsg_to_asoc+0x1ec1/0x1f00 net/sctp/socket.c:1885
       sctp_sendmsg+0x32b9/0x4a80 net/sctp/socket.c:2031
       inet_sendmsg+0x25a/0x280 net/ipv4/af_inet.c:851
       sock_sendmsg_nosec net/socket.c:718 [inline]
    
    and
    
      BUG: KMSAN: uninit-value in sctp_assoc_bh_rcv+0x34e/0xbc0 net/sctp/associola.c:987
       sctp_assoc_bh_rcv+0x34e/0xbc0 net/sctp/associola.c:987
       sctp_inq_push+0x2a3/0x350 net/sctp/inqueue.c:88
       sctp_backlog_rcv+0x3c7/0xda0 net/sctp/input.c:331
       sk_backlog_rcv+0x142/0x420 include/net/sock.h:1148
       __release_sock+0x1d3/0x330 net/core/sock.c:3213
       release_sock+0x6b/0x270 net/core/sock.c:3767
       sctp_wait_for_connect+0x458/0x820 net/sctp/socket.c:9367
       sctp_sendmsg_to_asoc+0x223a/0x2260 net/sctp/socket.c:1886
       sctp_sendmsg+0x3910/0x49f0 net/sctp/socket.c:2032
       inet_sendmsg+0x269/0x2a0 net/ipv4/af_inet.c:851
       sock_sendmsg_nosec net/socket.c:712 [inline]
    
    This patch fixes it by linearizing cloned gso packets in sctp_rcv().
    
    Fixes: 90017accff61 ("sctp: Add GSO support")
    Reported-by: syzbot+773e51afe420baaf0e2b@syzkaller.appspotmail.com
    Reported-by: syzbot+70a42f45e76bede082be@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Link: https://patch.msgid.link/dd7dc337b99876d4132d0961f776913719f7d225.1754595611.git.lucien.xin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
securityfs: don't pin dentries twice, once is enough... [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu May 8 23:38:01 2025 -0400

    securityfs: don't pin dentries twice, once is enough...
    
    [ Upstream commit 27cd1bf1240d482e4f02ca4f9812e748f3106e4f ]
    
    incidentally, securityfs_recursive_remove() is broken without that -
    it leaks dentries, since simple_recursive_removal() does not expect
    anything of that sort.  It could be worked around by dput() in
    remove_one() callback, but it's easier to just drop that double-get
    stuff.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/bpf: Fix a user_ringbuf failure with arm64 64KB page size [+ + +]
Author: Yonghong Song <yonghong.song@linux.dev>
Date:   Fri Jun 6 18:36:26 2025 -0700

    selftests/bpf: Fix a user_ringbuf failure with arm64 64KB page size
    
    [ Upstream commit bbc7bd658ddc662083639b9e9a280b90225ecd9a ]
    
    The ringbuf max_entries must be PAGE_ALIGNED. See kernel function
    ringbuf_map_alloc(). So for arm64 64KB page size, adjust max_entries
    properly.
    
    Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/r/20250607013626.1553001-1-yonghong.song@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests/bpf: Fix ringbuf/ringbuf_write test failure with arm64 64KB page size [+ + +]
Author: Yonghong Song <yonghong.song@linux.dev>
Date:   Fri Jun 6 18:36:21 2025 -0700

    selftests/bpf: Fix ringbuf/ringbuf_write test failure with arm64 64KB page size
    
    [ Upstream commit 8c8c5e3c854a2593ec90dacd868f3066b67de1c4 ]
    
    The ringbuf max_entries must be PAGE_ALIGNED. See kernel function
    ringbuf_map_alloc(). So for arm64 64KB page size, adjust max_entries
    and other related metrics properly.
    
    Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/r/20250607013621.1552332-1-yonghong.song@linux.dev
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/futex: Define SYS_futex on 32-bit architectures with 64-bit time_t [+ + +]
Author: Cynthia Huang <cynthia@andestech.com>
Date:   Thu Jul 10 18:36:30 2025 +0800

    selftests/futex: Define SYS_futex on 32-bit architectures with 64-bit time_t
    
    [ Upstream commit 04850819c65c8242072818655d4341e70ae998b5 ]
    
    The kernel does not provide sys_futex() on 32-bit architectures that do not
    support 32-bit time representations, such as riscv32.
    
    As a result, glibc cannot define SYS_futex, causing compilation failures in
    tests that rely on this syscall. Define SYS_futex as SYS_futex_time64 in
    such cases to ensure successful compilation and compatibility.
    
    Signed-off-by: Cynthia Huang <cynthia@andestech.com>
    Signed-off-by: Ben Zong-You Xie <ben717@andestech.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Link: https://lore.kernel.org/all/20250710103630.3156130-1-ben717@andestech.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: netfilter: Enable CONFIG_INET_SCTP_DIAG [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Mon Jun 30 17:44:25 2025 +0200

    selftests: netfilter: Enable CONFIG_INET_SCTP_DIAG
    
    [ Upstream commit ba71a6e58b38aa6f86865d4e18579cb014903692 ]
    
    The config snippet specifies CONFIG_SCTP_DIAG. This was never an option.
    
    Replace CONFIG_SCTP_DIAG with the intended CONFIG_INET_SCTP_DIAG.
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: tracing: Use mutex_unlock for testing glob filter [+ + +]
Author: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Date:   Thu Jul 3 13:26:43 2025 +0900

    selftests: tracing: Use mutex_unlock for testing glob filter
    
    [ Upstream commit a089bb2822a49b0c5777a8936f82c1f8629231fb ]
    
    Since commit c5b6ababd21a ("locking/mutex: implement
    mutex_trylock_nested") makes mutex_trylock() as an inlined
    function if CONFIG_DEBUG_LOCK_ALLOC=y, we can not use
    mutex_trylock() for testing the glob filter of ftrace.
    
    Use mutex_unlock instead.
    
    Link: https://lore.kernel.org/r/175151680309.2149615.9795104805153538717.stgit@mhiramat.tok.corp.google.com
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: vDSO: vdso_test_getrandom: Always print TAP header [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Date:   Wed Jun 11 12:33:58 2025 +0200

    selftests: vDSO: vdso_test_getrandom: Always print TAP header
    
    [ Upstream commit 1158220b24674edaf885433153deb4f0e5c7d331 ]
    
    The TAP specification requires that the output begins with a header line.
    If vgetrandom_init() fails and skips the test, that header line is missing.
    
    Call vgetrandom_init() after ksft_print_header().
    
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Link: https://lore.kernel.org/all/20250611-selftests-vdso-fixes-v3-8-e62e37a6bcf5@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smb/server: avoid deadlock when linking with ReplaceIfExists [+ + +]
Author: NeilBrown <neil@brown.name>
Date:   Mon Jun 9 09:35:09 2025 +1000

    smb/server: avoid deadlock when linking with ReplaceIfExists
    
    [ Upstream commit d5fc1400a34b4ea5e8f2ce296ea12bf8c8421694 ]
    
    If smb2_create_link() is called with ReplaceIfExists set and the name
    does exist then a deadlock will happen.
    
    ksmbd_vfs_kern_path_locked() will return with success and the parent
    directory will be locked.  ksmbd_vfs_remove_file() will then remove the
    file.  ksmbd_vfs_link() will then be called while the parent is still
    locked.  It will try to lock the same parent and will deadlock.
    
    This patch moves the ksmbd_vfs_kern_path_unlock() call to *before*
    ksmbd_vfs_link() and then simplifies the code, removing the file_present
    flag variable.
    
    Signed-off-by: NeilBrown <neil@brown.name>
    Acked-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smb3: fix for slab out of bounds on mount to ksmbd [+ + +]
Author: Steve French <stfrench@microsoft.com>
Date:   Mon Aug 11 23:14:55 2025 -0500

    smb3: fix for slab out of bounds on mount to ksmbd
    
    commit 7d34ec36abb84fdfb6632a0f2cbda90379ae21fc upstream.
    
    With KASAN enabled, it is possible to get a slab out of bounds
    during mount to ksmbd due to missing check in parse_server_interfaces()
    (see below):
    
     BUG: KASAN: slab-out-of-bounds in
     parse_server_interfaces+0x14ee/0x1880 [cifs]
     Read of size 4 at addr ffff8881433dba98 by task mount/9827
    
     CPU: 5 UID: 0 PID: 9827 Comm: mount Tainted: G
     OE       6.16.0-rc2-kasan #2 PREEMPT(voluntary)
     Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
     Hardware name: Dell Inc. Precision Tower 3620/0MWYPT,
     BIOS 2.13.1 06/14/2019
     Call Trace:
      <TASK>
     dump_stack_lvl+0x9f/0xf0
     print_report+0xd1/0x670
     __virt_addr_valid+0x22c/0x430
     ? parse_server_interfaces+0x14ee/0x1880 [cifs]
     ? kasan_complete_mode_report_info+0x2a/0x1f0
     ? parse_server_interfaces+0x14ee/0x1880 [cifs]
       kasan_report+0xd6/0x110
       parse_server_interfaces+0x14ee/0x1880 [cifs]
       __asan_report_load_n_noabort+0x13/0x20
       parse_server_interfaces+0x14ee/0x1880 [cifs]
     ? __pfx_parse_server_interfaces+0x10/0x10 [cifs]
     ? trace_hardirqs_on+0x51/0x60
     SMB3_request_interfaces+0x1ad/0x3f0 [cifs]
     ? __pfx_SMB3_request_interfaces+0x10/0x10 [cifs]
     ? SMB2_tcon+0x23c/0x15d0 [cifs]
     smb3_qfs_tcon+0x173/0x2b0 [cifs]
     ? __pfx_smb3_qfs_tcon+0x10/0x10 [cifs]
     ? cifs_get_tcon+0x105d/0x2120 [cifs]
     ? do_raw_spin_unlock+0x5d/0x200
     ? cifs_get_tcon+0x105d/0x2120 [cifs]
     ? __pfx_smb3_qfs_tcon+0x10/0x10 [cifs]
     cifs_mount_get_tcon+0x369/0xb90 [cifs]
     ? dfs_cache_find+0xe7/0x150 [cifs]
     dfs_mount_share+0x985/0x2970 [cifs]
     ? check_path.constprop.0+0x28/0x50
     ? save_trace+0x54/0x370
     ? __pfx_dfs_mount_share+0x10/0x10 [cifs]
     ? __lock_acquire+0xb82/0x2ba0
     ? __kasan_check_write+0x18/0x20
     cifs_mount+0xbc/0x9e0 [cifs]
     ? __pfx_cifs_mount+0x10/0x10 [cifs]
     ? do_raw_spin_unlock+0x5d/0x200
     ? cifs_setup_cifs_sb+0x29d/0x810 [cifs]
     cifs_smb3_do_mount+0x263/0x1990 [cifs]
    
    Reported-by: Namjae Jeon <linkinjeon@kernel.org>
    Tested-by: Namjae Jeon <linkinjeon@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: don't call init_waitqueue_head(&info->conn_wait) twice in _smbd_get_connection [+ + +]
Author: Stefan Metzmacher <metze@samba.org>
Date:   Thu Aug 7 18:12:13 2025 +0200

    smb: client: don't call init_waitqueue_head(&info->conn_wait) twice in _smbd_get_connection
    
    [ Upstream commit 550a194c5998e4e77affc6235e80d3766dc2d27e ]
    
    It is already called long before we may hit this cleanup code path.
    
    Cc: Steve French <smfrench@gmail.com>
    Cc: Tom Talpey <tom@talpey.com>
    Cc: Long Li <longli@microsoft.com>
    Cc: linux-cifs@vger.kernel.org
    Cc: samba-technical@lists.samba.org
    Signed-off-by: Stefan Metzmacher <metze@samba.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: client: don't wait for info->send_pending == 0 on error [+ + +]
Author: Stefan Metzmacher <metze@samba.org>
Date:   Tue Aug 12 18:45:06 2025 +0200

    smb: client: don't wait for info->send_pending == 0 on error
    
    commit 8c48e1c7520321cc87ff651e96093e2f412785fb upstream.
    
    We already called ib_drain_qp() before and that makes sure
    send_done() was called with IB_WC_WR_FLUSH_ERR, but
    didn't called atomic_dec_and_test(&sc->send_io.pending.count)
    
    So we may never reach the info->send_pending == 0 condition.
    
    Cc: Steve French <smfrench@gmail.com>
    Cc: Tom Talpey <tom@talpey.com>
    Cc: Long Li <longli@microsoft.com>
    Cc: linux-cifs@vger.kernel.org
    Cc: samba-technical@lists.samba.org
    Fixes: 5349ae5e05fa ("smb: client: let send_done() cleanup before calling smbd_disconnect_rdma_connection()")
    Signed-off-by: Stefan Metzmacher <metze@samba.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: client: fix netns refcount leak after net_passive changes [+ + +]
Author: Wang Zhaolong <wangzhaolong@huaweicloud.com>
Date:   Tue Aug 12 14:32:07 2025 -0400

    smb: client: fix netns refcount leak after net_passive changes
    
    [ Upstream commit 59b33fab4ca4d7dacc03367082777627e05d0323 ]
    
    After commit 5c70eb5c593d ("net: better track kernel sockets lifetime"),
    kernel sockets now use net_passive reference counting. However, commit
    95d2b9f693ff ("Revert "smb: client: fix TCP timers deadlock after rmmod"")
    restored the manual socket refcount manipulation without adapting to this
    new mechanism, causing a memory leak.
    
    The issue can be reproduced by[1]:
    1. Creating a network namespace
    2. Mounting and Unmounting CIFS within the namespace
    3. Deleting the namespace
    
    Some memory leaks may appear after a period of time following step 3.
    
    unreferenced object 0xffff9951419f6b00 (size 256):
      comm "ip", pid 447, jiffies 4294692389 (age 14.730s)
      hex dump (first 32 bytes):
        1b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 80 77 c2 44 51 99 ff ff  .........w.DQ...
      backtrace:
        __kmem_cache_alloc_node+0x30e/0x3d0
        __kmalloc+0x52/0x120
        net_alloc_generic+0x1d/0x30
        copy_net_ns+0x86/0x200
        create_new_namespaces+0x117/0x300
        unshare_nsproxy_namespaces+0x60/0xa0
        ksys_unshare+0x148/0x360
        __x64_sys_unshare+0x12/0x20
        do_syscall_64+0x59/0x110
        entry_SYSCALL_64_after_hwframe+0x78/0xe2
    ...
    unreferenced object 0xffff9951442e7500 (size 32):
      comm "mount.cifs", pid 475, jiffies 4294693782 (age 13.343s)
      hex dump (first 32 bytes):
        40 c5 38 46 51 99 ff ff 18 01 96 42 51 99 ff ff  @.8FQ......BQ...
        01 00 00 00 6f 00 c5 07 6f 00 d8 07 00 00 00 00  ....o...o.......
      backtrace:
        __kmem_cache_alloc_node+0x30e/0x3d0
        kmalloc_trace+0x2a/0x90
        ref_tracker_alloc+0x8e/0x1d0
        sk_alloc+0x18c/0x1c0
        inet_create+0xf1/0x370
        __sock_create+0xd7/0x1e0
        generic_ip_connect+0x1d4/0x5a0 [cifs]
        cifs_get_tcp_session+0x5d0/0x8a0 [cifs]
        cifs_mount_get_session+0x47/0x1b0 [cifs]
        dfs_mount_share+0xfa/0xa10 [cifs]
        cifs_mount+0x68/0x2b0 [cifs]
        cifs_smb3_do_mount+0x10b/0x760 [cifs]
        smb3_get_tree+0x112/0x2e0 [cifs]
        vfs_get_tree+0x29/0xf0
        path_mount+0x2d4/0xa00
        __se_sys_mount+0x165/0x1d0
    
    Root cause:
    When creating kernel sockets, sk_alloc() calls net_passive_inc() for
    sockets with sk_net_refcnt=0. The CIFS code manually converts kernel
    sockets to user sockets by setting sk_net_refcnt=1, but doesn't call
    the corresponding net_passive_dec(). This creates an imbalance in the
    net_passive counter, which prevents the network namespace from being
    destroyed when its last user reference is dropped. As a result, the
    entire namespace and all its associated resources remain allocated.
    
    Timeline of patches leading to this issue:
    - commit ef7134c7fc48 ("smb: client: Fix use-after-free of network
      namespace.") in v6.12 fixed the original netns UAF by manually
      managing socket refcounts
    - commit e9f2517a3e18 ("smb: client: fix TCP timers deadlock after
      rmmod") in v6.13 attempted to use kernel sockets but introduced
      TCP timer issues
    - commit 5c70eb5c593d ("net: better track kernel sockets lifetime")
      in v6.14-rc5 introduced the net_passive mechanism with
      sk_net_refcnt_upgrade() for proper socket conversion
    - commit 95d2b9f693ff ("Revert "smb: client: fix TCP timers deadlock
      after rmmod"") in v6.15-rc3 reverted to manual refcount management
      without adapting to the new net_passive changes
    
    Fix this by using sk_net_refcnt_upgrade() which properly handles the
    net_passive counter when converting kernel sockets to user sockets.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220343 [1]
    Fixes: 95d2b9f693ff ("Revert "smb: client: fix TCP timers deadlock after rmmod"")
    Cc: stable@vger.kernel.org
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Enzo Matsumiya <ematsumiya@suse.de>
    Signed-off-by: Wang Zhaolong <wangzhaolong@huaweicloud.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: client: let send_done() cleanup before calling smbd_disconnect_rdma_connection() [+ + +]
Author: Stefan Metzmacher <metze@samba.org>
Date:   Mon Aug 4 14:10:12 2025 +0200

    smb: client: let send_done() cleanup before calling smbd_disconnect_rdma_connection()
    
    commit 5349ae5e05fa37409fd48a1eb483b199c32c889b upstream.
    
    We should call ib_dma_unmap_single() and mempool_free() before calling
    smbd_disconnect_rdma_connection().
    
    And smbd_disconnect_rdma_connection() needs to be the last function to
    call as all other state might already be gone after it returns.
    
    Cc: Steve French <smfrench@gmail.com>
    Cc: Tom Talpey <tom@talpey.com>
    Cc: Long Li <longli@microsoft.com>
    Cc: linux-cifs@vger.kernel.org
    Cc: samba-technical@lists.samba.org
    Fixes: f198186aa9bb ("CIFS: SMBD: Establish SMB Direct connection")
    Signed-off-by: Stefan Metzmacher <metze@samba.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: client: remove redundant lstrp update in negotiate protocol [+ + +]
Author: Wang Zhaolong <wangzhaolong@huaweicloud.com>
Date:   Fri Aug 1 17:07:24 2025 +0800

    smb: client: remove redundant lstrp update in negotiate protocol
    
    commit e19d8dd694d261ac26adb2a26121a37c107c81ad upstream.
    
    Commit 34331d7beed7 ("smb: client: fix first command failure during
    re-negotiation") addressed a race condition by updating lstrp before
    entering negotiate state. However, this approach may have some unintended
    side effects.
    
    The lstrp field is documented as "when we got last response from this
    server", and updating it before actually receiving a server response
    could potentially affect other mechanisms that rely on this timestamp.
    For example, the SMB echo detection logic also uses lstrp as a reference
    point. In scenarios with frequent user operations during reconnect states,
    the repeated calls to cifs_negotiate_protocol() might continuously
    update lstrp, which could interfere with the echo detection timing.
    
    Additionally, commit 266b5d02e14f ("smb: client: fix race condition in
    negotiate timeout by using more precise timing") introduced a dedicated
    neg_start field specifically for tracking negotiate start time. This
    provides a more precise solution for the original race condition while
    preserving the intended semantics of lstrp.
    
    Since the race condition is now properly handled by the neg_start
    mechanism, the lstrp update in cifs_negotiate_protocol() is no longer
    necessary and can be safely removed.
    
    Fixes: 266b5d02e14f ("smb: client: fix race condition in negotiate timeout by using more precise timing")
    Cc: stable@vger.kernel.org
    Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
    Signed-off-by: Wang Zhaolong <wangzhaolong@huaweicloud.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
soc: qcom: mdt_loader: Actually use the e_phoff [+ + +]
Author: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
Date:   Tue Jun 10 21:58:30 2025 -0500

    soc: qcom: mdt_loader: Actually use the e_phoff
    
    [ Upstream commit 47e339cac89143709e84a3b71ba8bd9b2fdd2368 ]
    
    Rather than relying/assuming that the tools generating the firmware
    places the program headers immediately following the ELF header, use
    e_phoff as intended to find the program headers.
    
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250610-mdt-loader-validation-and-fixes-v2-3-f7073e9ab899@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

soc: qcom: rpmh-rsc: Add RSC version 4 support [+ + +]
Author: Maulik Shah <maulik.shah@oss.qualcomm.com>
Date:   Mon Jun 23 11:19:43 2025 +0530

    soc: qcom: rpmh-rsc: Add RSC version 4 support
    
    [ Upstream commit 84684c57c9cd47b86c883a7170dd68222d97ef13 ]
    
    Register offsets for v3 and v4 versions are backward compatible. Assign v3
    offsets for v4 and all higher versions to avoid end up using v2 offsets.
    
    Signed-off-by: Maulik Shah <maulik.shah@oss.qualcomm.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20250623-rsc_v4-v1-1-275b27bc5e3c@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
soundwire: amd: cancel pending slave status handling workqueue during remove sequence [+ + +]
Author: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Date:   Fri May 30 11:13:41 2025 +0530

    soundwire: amd: cancel pending slave status handling workqueue during remove sequence
    
    [ Upstream commit f93b697ed98e3c85d1973ea170d4f4e7a6b2b45d ]
    
    During remove sequence, cancel the pending slave status update workqueue.
    
    Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
    Link: https://lore.kernel.org/r/20250530054447.1645807-4-Vijendar.Mukunda@amd.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

soundwire: amd: serialize amd manager resume sequence during pm_prepare [+ + +]
Author: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Date:   Fri May 30 11:13:40 2025 +0530

    soundwire: amd: serialize amd manager resume sequence during pm_prepare
    
    [ Upstream commit 03837341790039d6f1cbf7a1ae7dfa2cb77ef0a4 ]
    
    During pm_prepare callback, pm_request_resume() delays SoundWire manager D0
    entry sequence. Synchronize runtime resume sequence for amd_manager
    instance prior to invoking child devices resume sequence for both the amd
    power modes(ClockStop Mode and Power off mode).
    Change the power_mode_mask check and use pm_runtime_resume() in
    amd_pm_prepare() callback.
    
    Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
    Link: https://lore.kernel.org/r/20250530054447.1645807-3-Vijendar.Mukunda@amd.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

soundwire: Move handle_nested_irq outside of sdw_dev_lock [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jun 9 15:30:40 2025 +0100

    soundwire: Move handle_nested_irq outside of sdw_dev_lock
    
    [ Upstream commit ccb7bb13c00bcc3178d270da052635c56148bc16 ]
    
    The sdw_dev_lock protects the SoundWire driver callbacks against
    the probed flag, which is used to skip the callbacks if the
    driver gets removed. For more information see commit bd29c00edd0a
    ("soundwire: revisit driver bind/unbind and callbacks").
    
    However, this lock is a frequent source of mutex inversions.
    Many audio operations eventually hit the hardware resulting in a
    SoundWire callback, this means that typically the driver has the
    locking order ALSA/ASoC locks -> sdw_dev_lock. Conversely, the IRQ
    comes in directly from the SoundWire hardware, but then will often
    want to access ALSA/ASoC, such as updating something in DAPM or
    an ALSA control. This gives the other lock order sdw_dev_lock ->
    ALSA/ASoC locks.
    
    When the IRQ handling was initially added to SoundWire this was
    through a callback mechanism. As such it required being covered by
    the lock because the callbacks are part of the sdw_driver structure
    and are thus present regardless of if the driver is currently
    probed.
    
    Since then a newer mechanism using the IRQ framework has been
    added, which is currently covered by the same lock but this isn't
    actually required. Handlers for the IRQ framework are registered in
    probe and should by released during remove, thus the IRQ framework
    will have already unbound the IRQ before the slave driver is
    removed. Avoid the aforementioned mutex inversion by moving the
    handle_nested_irq call outside of the sdw_dev_lock.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20250609143041.495049-3-ckeepax@opensource.cirrus.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sunvdc: Balance device refcount in vdc_port_mpgroup_check [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Sat Jul 19 15:58:56 2025 +0800

    sunvdc: Balance device refcount in vdc_port_mpgroup_check
    
    commit 63ce53724637e2e7ba51fe3a4f78351715049905 upstream.
    
    Using device_find_child() to locate a probed virtual-device-port node
    causes a device refcount imbalance, as device_find_child() internally
    calls get_device() to increment the device’s reference count before
    returning its pointer. vdc_port_mpgroup_check() directly returns true
    upon finding a matching device without releasing the reference via
    put_device(). We should call put_device() to decrement refcount.
    
    As comment of device_find_child() says, 'NOTE: you will need to drop
    the reference with put_device() after use'.
    
    Found by code review.
    
    Cc: stable@vger.kernel.org
    Fixes: 3ee70591d6c4 ("sunvdc: prevent sunvdc panic when mpgroup disk added to guest domain")
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20250719075856.3447953-1-make24@iscas.ac.cn
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
thermal/drivers/qcom-spmi-temp-alarm: Enable stage 2 shutdown when required [+ + +]
Author: David Collins <david.collins@oss.qualcomm.com>
Date:   Thu Jul 10 15:45:51 2025 -0700

    thermal/drivers/qcom-spmi-temp-alarm: Enable stage 2 shutdown when required
    
    [ Upstream commit f8e157ff2df46ddabd930815d196895976227831 ]
    
    Certain TEMP_ALARM GEN2 PMIC peripherals need over-temperature stage 2
    automatic PMIC partial shutdown. This will ensure that in the event of
    reaching the hotter stage 3 over-temperature threshold, repeated faults
    will be avoided during the automatic PMIC hardware full shutdown.
    Modify the stage 2 shutdown control logic to ensure that stage 2
    shutdown is enabled on all affected PMICs. Read the digital major
    and minor revision registers to identify these PMICs.
    
    Signed-off-by: David Collins <david.collins@oss.qualcomm.com>
    Signed-off-by: Anjelique Melendez <anjelique.melendez@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20250710224555.3047790-2-anjelique.melendez@oss.qualcomm.com
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thermal: sysfs: Return ENODATA instead of EAGAIN for reads [+ + +]
Author: Hsin-Te Yuan <yuanhsinte@chromium.org>
Date:   Fri Jun 20 10:41:43 2025 +0000

    thermal: sysfs: Return ENODATA instead of EAGAIN for reads
    
    [ Upstream commit 1a4aabc27e95674837f2e25f4ef340c0469e6203 ]
    
    According to POSIX spec, EAGAIN returned by read with O_NONBLOCK set
    means the read would block. Hence, the common implementation in
    nonblocking model will poll the file when the nonblocking read returns
    EAGAIN. However, when the target file is thermal zone, this mechanism
    will totally malfunction because thermal zone doesn't implement sysfs
    notification and thus the poll will never return.
    
    For example, the read in Golang implemnts such method and sometimes
    hangs at reading some thermal zones via sysfs.
    
    Change to return -ENODATA instead of -EAGAIN to userspace.
    
    Signed-off-by: Hsin-Te Yuan <yuanhsinte@chromium.org>
    Link: https://patch.msgid.link/20250620-temp-v3-1-6becc6aeb66c@chromium.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thunderbolt: Fix copy+paste error in match_service_id() [+ + +]
Author: Eric Biggers <ebiggers@kernel.org>
Date:   Sun Jul 20 22:01:36 2025 -0700

    thunderbolt: Fix copy+paste error in match_service_id()
    
    commit 5cc1f66cb23cccc704e3def27ad31ed479e934a5 upstream.
    
    The second instance of TBSVC_MATCH_PROTOCOL_VERSION seems to have been
    intended to be TBSVC_MATCH_PROTOCOL_REVISION.
    
    Fixes: d1ff70241a27 ("thunderbolt: Add support for XDomain discovery protocol")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Eric Biggers <ebiggers@kernel.org>
    Link: https://lore.kernel.org/r/20250721050136.30004-1-ebiggers@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tls: handle data disappearing from under the TLS ULP [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Thu Aug 7 16:29:06 2025 -0700

    tls: handle data disappearing from under the TLS ULP
    
    [ Upstream commit 6db015fc4b5d5f63a64a193f65d98da3a7fc811d ]
    
    TLS expects that it owns the receive queue of the TCP socket.
    This cannot be guaranteed in case the reader of the TCP socket
    entered before the TLS ULP was installed, or uses some non-standard
    read API (eg. zerocopy ones). Replace the WARN_ON() and a buggy
    early exit (which leaves anchor pointing to a freed skb) with real
    error handling. Wipe the parsing state and tell the reader to retry.
    
    We already reload the anchor every time we (re)acquire the socket lock,
    so the only condition we need to avoid is an out of bounds read
    (not having enough bytes in the socket for previously parsed record len).
    
    If some data was read from under TLS but there's enough in the queue
    we'll reload and decrypt what is most likely not a valid TLS record.
    Leading to some undefined behavior from TLS perspective (corrupting
    a stream? missing an alert? missing an attack?) but no kernel crash
    should take place.
    
    Reported-by: William Liu <will@willsroot.io>
    Reported-by: Savino Dicanosa <savy@syst3mfailure.io>
    Link: https://lore.kernel.org/tFjq_kf7sWIG3A7CrCg_egb8CVsT_gsmHAK0_wxDPJXfIzxFAMxqmLwp3MlU5EHiet0AwwJldaaFdgyHpeIUCS-3m3llsmRzp9xIOBR4lAI=@syst3mfailure.io
    Fixes: 84c61fe1a75b ("tls: rx: do not use the standard strparser")
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250807232907.600366-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/build: Fix s390(x) cross-compilation with clang [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Date:   Fri Jun 20 13:00:27 2025 +0200

    tools/build: Fix s390(x) cross-compilation with clang
    
    [ Upstream commit a40f0cdce78be8a559ee8a85c908049c65a410b2 ]
    
    The heuristic to derive a clang target triple from a GCC one does not work
    for s390. GCC uses "s390-linux" while clang expects "s390x-linux" or
    "powerz-linux".
    
    Add an explicit override.
    
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Link: https://lore.kernel.org/r/20250620-tools-cross-s390-v2-1-ecda886e00e5@linutronix.de
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/hv: fcopy: Fix irregularities with size of ring buffer [+ + +]
Author: Naman Jain <namjain@linux.microsoft.com>
Date:   Fri Jul 11 11:38:46 2025 +0530

    tools/hv: fcopy: Fix irregularities with size of ring buffer
    
    commit a4131a50d072b369bfed0b41e741c41fd8048641 upstream.
    
    Size of ring buffer, as defined in uio_hv_generic driver, is no longer
    fixed to 16 KB. This creates a problem in fcopy, since this size was
    hardcoded. With the change in place to make ring sysfs node actually
    reflect the size of underlying ring buffer, it is safe to get the size
    of ring sysfs file and use it for ring buffer size in fcopy daemon.
    Fix the issue of disparity in ring buffer size, by making it dynamic
    in fcopy uio daemon.
    
    Cc: stable@vger.kernel.org
    Fixes: 0315fef2aff9 ("uio_hv_generic: Align ring size to system page")
    Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
    Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
    Reviewed-by: Long Li <longli@microsoft.com>
    Link: https://lore.kernel.org/r/20250711060846.9168-1-namjain@linux.microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Message-ID: <20250711060846.9168-1-namjain@linux.microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tools/nolibc: define time_t in terms of __kernel_old_time_t [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Sat Jul 12 11:00:55 2025 +0200

    tools/nolibc: define time_t in terms of __kernel_old_time_t
    
    [ Upstream commit d5094bcb5bfdfea2cf0de8aaf77cc65db56cbdb5 ]
    
    Nolibc assumes that the kernel ABI is using a time values that are as
    large as a long integer. For most ABIs this holds true.
    But for x32 this is not correct, as it uses 32bit longs but 64bit times.
    
    Also the 'struct stat' implementation of nolibc relies on timespec::tv_sec
    and time_t being the same type. While timespec::tv_sec comes from the
    kernel and is of type __kernel_old_time_t, time_t is defined within nolibc.
    
    Switch to the __kernel_old_time_t to always get the correct type.
    
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Link: https://lore.kernel.org/r/20250712-nolibc-x32-v1-1-6d81cb798710@weissschuh.net
    Acked-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tools/nolibc: fix spelling of FD_SETBITMASK in FD_* macros [+ + +]
Author: Willy Tarreau <w@1wt.eu>
Date:   Thu Jun 19 11:30:51 2025 +0200

    tools/nolibc: fix spelling of FD_SETBITMASK in FD_* macros
    
    commit a477629baa2a0e9991f640af418e8c973a1c08e3 upstream.
    
    While nolibc-test does test syscalls, it doesn't test as much the rest
    of the macros, and a wrong spelling of FD_SETBITMASK in commit
    feaf75658783a broke programs using either FD_SET() or FD_CLR() without
    being noticed. Let's fix these macros.
    
    Fixes: feaf75658783a ("nolibc: fix fd_set type")
    Cc: stable@vger.kernel.org # v6.2+
    Acked-by: Thomas Weißschuh <linux@weissschuh.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tools/power turbostat: Fix build with musl [+ + +]
Author: Calvin Owens <calvin@wbinvd.org>
Date:   Fri Jun 13 09:54:23 2025 -0700

    tools/power turbostat: Fix build with musl
    
    [ Upstream commit 6ea0ec1b958a84aff9f03fb0ae4613a4d5bed3ea ]
    
    turbostat.c: In function 'parse_int_file':
        turbostat.c:5567:19: error: 'PATH_MAX' undeclared (first use in this function)
         5567 |         char path[PATH_MAX];
              |                   ^~~~~~~~
    
        turbostat.c: In function 'probe_graphics':
        turbostat.c:6787:19: error: 'PATH_MAX' undeclared (first use in this function)
         6787 |         char path[PATH_MAX];
              |                   ^~~~~~~~
    
    Signed-off-by: Calvin Owens <calvin@wbinvd.org>
    Reviewed-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tools/power turbostat: Handle cap_get_proc() ENOSYS [+ + +]
Author: Calvin Owens <calvin@wbinvd.org>
Date:   Fri Jun 13 19:20:28 2025 -0700

    tools/power turbostat: Handle cap_get_proc() ENOSYS
    
    [ Upstream commit d34fe509f5f76d9dc36291242d67c6528027ebbd ]
    
    Kernels configured with CONFIG_MULTIUSER=n have no cap_get_proc().
    Check for ENOSYS to recognize this case, and continue on to
    attempt to access the requested MSRs (such as temperature).
    
    Signed-off-by: Calvin Owens <calvin@wbinvd.org>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tools/power turbostat: Handle non-root legacy-uncore sysfs permissions [+ + +]
Author: Len Brown <len.brown@intel.com>
Date:   Sat Aug 9 16:31:31 2025 -0400

    tools/power turbostat: Handle non-root legacy-uncore sysfs permissions
    
    [ Upstream commit e60a13bcef206795d3ddf82f130fe8f570176d06 ]
    
    /sys/devices/system/cpu/intel_uncore_frequency/package_X_die_Y/
    may be readable by all, but
    /sys/devices/system/cpu/intel_uncore_frequency/package_X_die_Y/current_freq_khz
    may be readable only by root.
    
    Non-root turbostat users see complaints in this scenario.
    
    Fail probe of the interface if we can't read current_freq_khz.
    
    Reported-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Original-patch-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracefs: Add d_delete to remove negative dentries [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Wed Jun 11 12:18:15 2025 -0400

    tracefs: Add d_delete to remove negative dentries
    
    [ Upstream commit d9b13cdad80dc11d74408cf201939a946e9303a6 ]
    
    If a lookup in tracefs is done on a file that does not exist, it leaves a
    dentry hanging around until memory pressure removes it. But eventfs
    dentries should hang around as when their ref count goes to zero, it
    requires more work to recreate it. For the rest of the tracefs dentries,
    they hang around as their dentry is used as a descriptor for the tracing
    system. But if a file lookup happens for a file in tracefs that does not
    exist, it should be deleted.
    
    Add a .d_delete callback that checks if dentry->fsdata is set or not. Only
    eventfs dentries set fsdata so if it has content it should not be deleted
    and should hang around in the cache.
    
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tty: serial: fix print format specifiers [+ + +]
Author: Joseph Tilahun <jtilahun@astranis.com>
Date:   Mon Jun 9 23:56:53 2025 -0700

    tty: serial: fix print format specifiers
    
    [ Upstream commit 33a2515abd45c64911955ff1da179589db54f99f ]
    
    The serial info sometimes produces negative TX/RX counts. E.g.:
    
    3: uart:FSL_LPUART mmio:0x02970000 irq:46 tx:-1595870545 rx:339619
    RTS|CTS|DTR|DSR|CD
    
    It appears that the print format specifiers don't match with the types of
    the respective variables. E.g.: All of the fields in struct uart_icount
    are u32, but the format specifier used is %d, even though u32 is unsigned
    and %d is for signed integers. Update drivers/tty/serial/serial_core.c
    to use the proper format specifiers. Reference
    https://docs.kernel.org/core-api/printk-formats.html as the documentation
    for what format specifiers are the proper ones to use for a given C type.
    
    Signed-off-by: Joseph Tilahun <jtilahun@astranis.com>
    Link: https://lore.kernel.org/r/20250610065653.3750067-1-jtilahun@astranis.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
uapi: in6: restore visibility of most IPv6 socket options [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Mon Jun 9 07:39:33 2025 -0700

    uapi: in6: restore visibility of most IPv6 socket options
    
    [ Upstream commit 31557b3487b349464daf42bc4366153743c1e727 ]
    
    A decade ago commit 6d08acd2d32e ("in6: fix conflict with glibc")
    hid the definitions of IPV6 options, because GCC was complaining
    about duplicates. The commit did not list the warnings seen, but
    trying to recreate them now I think they are (building iproute2):
    
    In file included from ./include/uapi/rdma/rdma_user_cm.h:39,
                     from rdma.h:16,
                     from res.h:9,
                     from res-ctx.c:7:
    ../include/uapi/linux/in6.h:171:9: warning: ‘IPV6_ADD_MEMBERSHIP’ redefined
      171 | #define IPV6_ADD_MEMBERSHIP     20
          |         ^~~~~~~~~~~~~~~~~~~
    In file included from /usr/include/netinet/in.h:37,
                     from rdma.h:13:
    /usr/include/bits/in.h:233:10: note: this is the location of the previous definition
      233 | # define IPV6_ADD_MEMBERSHIP    IPV6_JOIN_GROUP
          |          ^~~~~~~~~~~~~~~~~~~
    ../include/uapi/linux/in6.h:172:9: warning: ‘IPV6_DROP_MEMBERSHIP’ redefined
      172 | #define IPV6_DROP_MEMBERSHIP    21
          |         ^~~~~~~~~~~~~~~~~~~~
    /usr/include/bits/in.h:234:10: note: this is the location of the previous definition
      234 | # define IPV6_DROP_MEMBERSHIP   IPV6_LEAVE_GROUP
          |          ^~~~~~~~~~~~~~~~~~~~
    
    Compilers don't complain about redefinition if the defines
    are identical, but here we have the kernel using the literal
    value, and glibc using an indirection (defining to a name
    of another define, with the same numerical value).
    
    Problem is, the commit in question hid all the IPV6 socket
    options, and glibc has a pretty sparse list. For instance
    it lacks Flow Label related options. Willem called this out
    in commit 3fb321fde22d ("selftests/net: ipv6 flowlabel"):
    
      /* uapi/glibc weirdness may leave this undefined */
      #ifndef IPV6_FLOWINFO
      #define IPV6_FLOWINFO 11
      #endif
    
    More interestingly some applications (socat) use
    a #ifdef IPV6_FLOWINFO to gate compilation of thier
    rudimentary flow label support. (For added confusion
    socat misspells it as IPV4_FLOWINFO in some places.)
    
    Hide only the two defines we know glibc has a problem
    with. If we discover more warnings we can hide more
    but we should avoid covering the entire block of
    defines for "IPV6 socket options".
    
    Link: https://patch.msgid.link/20250609143933.1654417-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udf: Verify partition map count [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Fri Jul 11 19:01:20 2025 +0200

    udf: Verify partition map count
    
    [ Upstream commit 1a11201668e8635602577dcf06f2e96c591d8819 ]
    
    Verify that number of partition maps isn't insanely high which can lead
    to large allocation in udf_sb_alloc_partition_maps(). All partition maps
    have to fit in the LVD which is in a single block.
    
    Reported-by: syzbot+478f2c1a6f0f447a46bb@syzkaller.appspotmail.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udp: also consider secpath when evaluating ipsec use for checksumming [+ + +]
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Mon Aug 4 11:26:27 2025 +0200

    udp: also consider secpath when evaluating ipsec use for checksumming
    
    [ Upstream commit 1118aaa3b35157777890fffab91d8c1da841b20b ]
    
    Commit b40c5f4fde22 ("udp: disable inner UDP checksum offloads in
    IPsec case") tried to fix checksumming in UFO when the packets are
    going through IPsec, so that we can't rely on offloads because the UDP
    header and payload will be encrypted.
    
    But when doing a TCP test over VXLAN going through IPsec transport
    mode with GSO enabled (esp4_offload module loaded), I'm seeing broken
    UDP checksums on the encap after successful decryption.
    
    The skbs get to udp4_ufo_fragment/__skb_udp_tunnel_segment via
    __dev_queue_xmit -> validate_xmit_skb -> skb_gso_segment and at this
    point we've already dropped the dst (unless the device sets
    IFF_XMIT_DST_RELEASE, which is not common), so need_ipsec is false and
    we proceed with checksum offload.
    
    Make need_ipsec also check the secpath, which is not dropped on this
    callpath.
    
    Fixes: b40c5f4fde22 ("udp: disable inner UDP checksum offloads in IPsec case")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
um: Re-evaluate thread flags repeatedly [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Date:   Fri Jul 4 14:34:47 2025 +0200

    um: Re-evaluate thread flags repeatedly
    
    [ Upstream commit b9e2f2246eb2b5617d53af7b5e4e1b8c916f26a8 ]
    
    The thread flags may change during their processing.
    For example a task_work can queue a new signal to be sent.
    This signal should be delivered before returning to usespace again.
    
    Evaluate the flags repeatedly similar to other architectures.
    
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Reviewed-by: Nam Cao <namcao@linutronix.de>
    Link: https://patch.msgid.link/20250704-uml-thread_flags-v1-1-0e293fd8d627@linutronix.de
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: core: config: Prevent OOB read in SS endpoint companion parsing [+ + +]
Author: Xinyu Liu <katieeliu@tencent.com>
Date:   Mon Jun 30 10:02:56 2025 +0800

    usb: core: config: Prevent OOB read in SS endpoint companion parsing
    
    commit cf16f408364efd8a68f39011a3b073c83a03612d upstream.
    
    usb_parse_ss_endpoint_companion() checks descriptor type before length,
    enabling a potentially odd read outside of the buffer size.
    
    Fix this up by checking the size first before looking at any of the
    fields in the descriptor.
    
    Signed-off-by: Xinyu Liu <katieeliu@tencent.com>
    Cc: stable <stable@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: core: usb_submit_urb: downgrade type check [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Jun 12 14:20:25 2025 +0200

    usb: core: usb_submit_urb: downgrade type check
    
    [ Upstream commit 503bbde34cc3dd2acd231f277ba70c3f9ed22e59 ]
    
    Checking for the endpoint type is no reason for a WARN, as that can
    cause a reboot. A driver not checking the endpoint type must not cause a
    reboot, as there is just no point in this.  We cannot prevent a device
    from doing something incorrect as a reaction to a transfer. Hence
    warning for a mere assumption being wrong is not sensible.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20250612122149.2559724-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: intel_pmc_mux: Defer probe if SCU IPC isn't present [+ + +]
Author: Tomasz Michalec <tmichalec@google.com>
Date:   Tue Jun 10 17:40:58 2025 +0200

    usb: typec: intel_pmc_mux: Defer probe if SCU IPC isn't present
    
    [ Upstream commit df9a825f330e76c72d1985bc9bdc4b8981e3d15f ]
    
    If pmc_usb_probe is called before SCU IPC is registered, pmc_usb_probe
    will fail.
    
    Return -EPROBE_DEFER when pmc_usb_probe doesn't get SCU IPC device, so
    the probe function can be called again after SCU IPC is initialized.
    
    Signed-off-by: Tomasz Michalec <tmichalec@google.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20250610154058.1859812-1-tmichalec@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: tcpm/tcpci_maxim: fix irq wake usage [+ + +]
Author: André Draszik <andre.draszik@linaro.org>
Date:   Mon Jul 7 11:50:27 2025 +0100

    usb: typec: tcpm/tcpci_maxim: fix irq wake usage
    
    [ Upstream commit 31611223fb34a3e9320cdfc4f4395072a13ea78e ]
    
    This driver calls enable_irq_wake() during probe() unconditionally, and
    never issues the required corresponding disable_irq_wake() to disable
    hardware interrupt wakeup signals.
    
    Additionally, whether or not a device should wake-up the system is
    meant to be a policy decision based on sysfs (.../power/wakeup) in the
    first place.
    
    Update the driver to use the standard approach to enable/disable IRQ
    wake during the suspend/resume callbacks. This solves both issues
    described above.
    
    Signed-off-by: André Draszik <andre.draszik@linaro.org>
    Reviewed-by: Badhri Jagan Sridharan <badhri@google.com>
    Link: https://lore.kernel.org/r/20250707-max77759-irq-wake-v1-1-d367f633e4bc@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default [+ + +]
Author: Benson Leung <bleung@chromium.org>
Date:   Thu Jul 17 20:08:05 2025 +0000

    usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default
    
    [ Upstream commit af833e7f7db3cf4c82f063668e1b52297a30ec18 ]
    
    ucsi_psy_get_current_max would return 0mA as the maximum current if
    UCSI detected a BC or a Default USB Power sporce.
    
    The comment in this function is true that we can't tell the difference
    between DCP/CDP or SDP chargers, but we can guarantee that at least 1-unit
    of USB 1.1/2.0 power is available, which is 100mA, which is a better
    fallback value than 0, which causes some userspaces, including the ChromeOS
    power manager, to regard this as a power source that is not providing
    any power.
    
    In reality, 100mA is guaranteed from all sources in these classes.
    
    Signed-off-by: Benson Leung <bleung@chromium.org>
    Reviewed-by: Jameson Thies <jthies@google.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Link: https://lore.kernel.org/r/20250717200805.3710473-1-bleung@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: Update power_supply on power role change [+ + +]
Author: Myrrh Periwinkle <myrrhperiwinkle@qtmlabs.xyz>
Date:   Mon Jul 21 13:32:51 2025 +0700

    usb: typec: ucsi: Update power_supply on power role change
    
    commit 7616f006db07017ef5d4ae410fca99279aaca7aa upstream.
    
    The current power direction of an USB-C port also influences the
    power_supply's online status, so a power role change should also update
    the power_supply.
    
    Fixes an issue on some systems where plugging in a normal USB device in
    for the first time after a reboot will cause upower to erroneously
    consider the system to be connected to AC power.
    
    Cc: stable <stable@kernel.org>
    Fixes: 0e6371fbfba3 ("usb: typec: ucsi: Report power supply changes")
    Signed-off-by: Myrrh Periwinkle <myrrhperiwinkle@qtmlabs.xyz>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20250721-fix-ucsi-pwr-dir-notify-v1-1-e53d5340cb38@qtmlabs.xyz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

usb: xhci: Avoid showing errors during surprise removal [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Thu Jul 17 10:31:05 2025 +0300

    usb: xhci: Avoid showing errors during surprise removal
    
    [ Upstream commit 4b9c60e440525b729ac5f071e00bcee12e0a7e84 ]
    
    When a USB4 dock is unplugged from a system it won't respond to ring
    events. The PCI core handles the surprise removal event and notifies
    all PCI drivers. The XHCI PCI driver sets a flag that the device is
    being removed as well.
    
    When that flag is set don't show messages in the cleanup path for
    marking the controller dead.
    
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20250717073107.488599-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: xhci: Avoid showing warnings for dying controller [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Thu Jul 17 10:31:06 2025 +0300

    usb: xhci: Avoid showing warnings for dying controller
    
    [ Upstream commit 65fc0fc137b5da3ee1f4ca4f61050fcb203d7582 ]
    
    When a USB4 dock is unplugged from a system it won't respond to ring
    events. The PCI core handles the surprise removal event and notifies
    all PCI drivers. The XHCI PCI driver sets a flag that the device is
    being removed, and when the device stops responding a flag is also
    added to indicate it's dying.
    
    When that flag is set don't bother to show warnings about a missing
    controller.
    
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20250717073107.488599-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: xhci: print xhci->xhc_state when queue_command failed [+ + +]
Author: Su Hui <suhui@nfschina.com>
Date:   Fri Jul 25 14:01:18 2025 +0800

    usb: xhci: print xhci->xhc_state when queue_command failed
    
    [ Upstream commit 7919407eca2ef562fa6c98c41cfdf6f6cdd69d92 ]
    
    When encounters some errors like these:
    xhci_hcd 0000:4a:00.2: xHCI dying or halted, can't queue_command
    xhci_hcd 0000:4a:00.2: FIXME: allocate a command ring segment
    usb usb5-port6: couldn't allocate usb_device
    
    It's hard to know whether xhc_state is dying or halted. So it's better
    to print xhc_state's value which can help locate the resaon of the bug.
    
    Signed-off-by: Su Hui <suhui@nfschina.com>
    Link: https://lore.kernel.org/r/20250725060117.1773770-1-suhui@nfschina.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: xhci: Set avg_trb_len = 8 for EP0 during Address Device Command [+ + +]
Author: Jay Chen <shawn2000100@gmail.com>
Date:   Thu Jul 17 10:31:07 2025 +0300

    usb: xhci: Set avg_trb_len = 8 for EP0 during Address Device Command
    
    [ Upstream commit f72b9aa821a2bfe4b6dfec4be19f264d0673b008 ]
    
    There is a subtle contradiction between sections of the xHCI 1.2 spec
    regarding the initialization of Input Endpoint Context fields. Section
    4.8.2 ("Endpoint Context Initialization") states that all fields should
    be initialized to 0. However, Section 6.2.3 ("Endpoint Context", p.453)
    specifies that the Average TRB Length (avg_trb_len) field shall be
    greater than 0, and explicitly notes (p.454): "Software shall set
    Average TRB Length to '8' for control endpoints."
    
    Strictly setting all fields to 0 during initialization conflicts with
    the specific recommendation for control endpoints. In practice, setting
    avg_trb_len = 0 is not meaningful for the hardware/firmware, as the
    value is used for bandwidth calculation.
    
    Motivation: Our company is developing a custom Virtual xHC hardware
    platform that strictly follows the xHCI spec and its recommendations.
    During validation, we observed that enumeration fails and a parameter
    error (TRB Completion Code = 5) is reported if avg_trb_len for EP0 is
    not set to 8 as recommended by Section 6.2.3. This demonstrates the
    importance of assigning a meaningful, non-zero value to avg_trb_len,
    even in virtualized or emulated environments.
    
    This patch explicitly sets avg_trb_len to 8 for EP0 in
    xhci_setup_addressable_virt_dev(), as recommended in Section 6.2.3, to
    prevent potential issues with xHCI host controllers that enforce the
    spec strictly.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220033
    Signed-off-by: Jay Chen <shawn2000100@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20250717073107.488599-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
userfaultfd: fix a crash in UFFDIO_MOVE when PMD is a migration entry [+ + +]
Author: Suren Baghdasaryan <surenb@google.com>
Date:   Wed Aug 6 15:00:22 2025 -0700

    userfaultfd: fix a crash in UFFDIO_MOVE when PMD is a migration entry
    
    commit aba6faec0103ed8f169be8dce2ead41fcb689446 upstream.
    
    When UFFDIO_MOVE encounters a migration PMD entry, it proceeds with
    obtaining a folio and accessing it even though the entry is swp_entry_t.
    Add the missing check and let split_huge_pmd() handle migration entries.
    While at it also remove unnecessary folio check.
    
    [surenb@google.com: remove extra folio check, per David]
      Link: https://lkml.kernel.org/r/20250807200418.1963585-1-surenb@google.com
    Link: https://lkml.kernel.org/r/20250806220022.926763-1-surenb@google.com
    Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
    Signed-off-by: Suren Baghdasaryan <surenb@google.com>
    Reported-by: syzbot+b446dbe27035ef6bd6c2@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/68794b5c.a70a0220.693ce.0050.GAE@google.com/
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Lokesh Gidra <lokeshgidra@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vfio/mlx5: fix possible overflow in tracking max message size [+ + +]
Author: Artem Sadovnikov <a.sadovnikov@ispras.ru>
Date:   Tue Jul 1 14:40:17 2025 +0000

    vfio/mlx5: fix possible overflow in tracking max message size
    
    [ Upstream commit b3060198483bac43ec113c62ae3837076f61f5de ]
    
    MLX cap pg_track_log_max_msg_size consists of 5 bits, value of which is
    used as power of 2 for max_msg_size. This can lead to multiplication
    overflow between max_msg_size (u32) and integer constant, and afterwards
    incorrect value is being written to rq_size.
    
    Fix this issue by extending integer constant to u64 type.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Suggested-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Artem Sadovnikov <a.sadovnikov@ispras.ru>
    Reviewed-by: Yishai Hadas <yishaih@nvidia.com>
    Link: https://lore.kernel.org/r/20250701144017.2410-2-a.sadovnikov@ispras.ru
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vfio/type1: conditional rescheduling while pinning [+ + +]
Author: Keith Busch <kbusch@kernel.org>
Date:   Tue Jul 15 11:46:22 2025 -0700

    vfio/type1: conditional rescheduling while pinning
    
    [ Upstream commit b1779e4f209c7ff7e32f3c79d69bca4e3a3a68b6 ]
    
    A large DMA mapping request can loop through dma address pinning for
    many pages. In cases where THP can not be used, the repeated vmf_insert_pfn can
    be costly, so let the task reschedule as need to prevent CPU stalls. Failure to
    do so has potential harmful side effects, like increased memory pressure
    as unrelated rcu tasks are unable to make their reclaim callbacks and
    result in OOM conditions.
    
     rcu: INFO: rcu_sched self-detected stall on CPU
     rcu:   36-....: (20999 ticks this GP) idle=b01c/1/0x4000000000000000 softirq=35839/35839 fqs=3538
     rcu:            hardirqs   softirqs   csw/system
     rcu:    number:        0        107            0
     rcu:   cputime:       50          0        10446   ==> 10556(ms)
     rcu:   (t=21075 jiffies g=377761 q=204059 ncpus=384)
    ...
      <TASK>
      ? asm_sysvec_apic_timer_interrupt+0x16/0x20
      ? walk_system_ram_range+0x63/0x120
      ? walk_system_ram_range+0x46/0x120
      ? pgprot_writethrough+0x20/0x20
      lookup_memtype+0x67/0xf0
      track_pfn_insert+0x20/0x40
      vmf_insert_pfn_prot+0x88/0x140
      vfio_pci_mmap_huge_fault+0xf9/0x1b0 [vfio_pci_core]
      __do_fault+0x28/0x1b0
      handle_mm_fault+0xef1/0x2560
      fixup_user_fault+0xf5/0x270
      vaddr_get_pfns+0x169/0x2f0 [vfio_iommu_type1]
      vfio_pin_pages_remote+0x162/0x8e0 [vfio_iommu_type1]
      vfio_iommu_type1_ioctl+0x1121/0x1810 [vfio_iommu_type1]
      ? futex_wake+0x1c1/0x260
      x64_sys_call+0x234/0x17a0
      do_syscall_64+0x63/0x130
      ? exc_page_fault+0x63/0x130
      entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
    Link: https://lore.kernel.org/r/20250715184622.3561598-1-kbusch@meta.com
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vhost: fail early when __vhost_add_used() fails [+ + +]
Author: Jason Wang <jasowang@redhat.com>
Date:   Mon Jul 14 16:47:53 2025 +0800

    vhost: fail early when __vhost_add_used() fails
    
    [ Upstream commit b4ba1207d45adaafa2982c035898b36af2d3e518 ]
    
    This patch fails vhost_add_used_n() early when __vhost_add_used()
    fails to make sure used idx is not updated with stale used ring
    information.
    
    Reported-by: Eugenio Pérez <eperezma@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Message-Id: <20250714084755.11921-2-jasowang@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Tested-by: Lei Yang <leiyang@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vsock/virtio: Resize receive buffers so that each SKB fits in a 4K page [+ + +]
Author: Will Deacon <will@kernel.org>
Date:   Thu Jul 17 10:01:11 2025 +0100

    vsock/virtio: Resize receive buffers so that each SKB fits in a 4K page
    
    [ Upstream commit 03a92f036a04fed2b00d69f5f46f1a486e70dc5c ]
    
    When allocating receive buffers for the vsock virtio RX virtqueue, an
    SKB is allocated with a 4140 data payload (the 44-byte packet header +
    VIRTIO_VSOCK_DEFAULT_RX_BUF_SIZE). Even when factoring in the SKB
    overhead, the resulting 8KiB allocation thanks to the rounding in
    kmalloc_reserve() is wasteful (~3700 unusable bytes) and results in a
    higher-order page allocation on systems with 4KiB pages just for the
    sake of a few hundred bytes of packet data.
    
    Limit the vsock virtio RX buffers to 4KiB per SKB, resulting in much
    better memory utilisation and removing the need to allocate higher-order
    pages entirely.
    
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: Will Deacon <will@kernel.org>
    Message-Id: <20250717090116.11987-5-will@kernel.org>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
watchdog: dw_wdt: Fix default timeout [+ + +]
Author: Sebastian Reichel <sebastian.reichel@collabora.com>
Date:   Thu Jul 17 18:55:02 2025 +0200

    watchdog: dw_wdt: Fix default timeout
    
    [ Upstream commit ac3dbb91e0167d017f44701dd51c1efe30d0c256 ]
    
    The Synopsys Watchdog driver sets the default timeout to 30 seconds,
    but on some devices this is not a valid timeout. E.g. on RK3588 the
    actual timeout being used is 44 seconds instead.
    
    Once the watchdog is started the value is updated accordingly, but
    it would be better to expose a sensible timeout to userspace without
    the need to first start the watchdog.
    
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20250717-dw-wdt-fix-initial-timeout-v1-1-86dc864d48dd@kernel.org
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

watchdog: iTCO_wdt: Report error if timeout configuration fails [+ + +]
Author: Ziyan Fu <fuzy5@lenovo.com>
Date:   Fri Jul 4 15:35:18 2025 +0800

    watchdog: iTCO_wdt: Report error if timeout configuration fails
    
    [ Upstream commit 40efc43eb7ffb5a4e2f998c13b8cfb555e671b92 ]
    
    The driver probes with the invalid timeout value when
    'iTCO_wdt_set_timeout()' fails, as its return value is not checked. In
    this case, when executing "wdctl", we may get:
    
    Device:        /dev/watchdog0
    Timeout:       30 seconds
    Timeleft:      613 seconds
    
    The timeout value is the value of "heartbeat" or "WATCHDOG_TIMEOUT", and
    the timeleft value is calculated from the register value we actually read
    (0xffff) by masking with 0x3ff and converting ticks to seconds (* 6 / 10).
    
    Add error handling to return the failure code if 'iTCO_wdt_set_timeout()'
    fails, ensuring the driver probe fails and prevents invalid operation.
    
    Signed-off-by: Ziyan Fu <fuzy5@lenovo.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20250704073518.7838-1-13281011316@163.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

watchdog: sbsa: Adjust keepalive timeout to avoid MediaTek WS0 race condition [+ + +]
Author: Aaron Plattner <aplattner@nvidia.com>
Date:   Mon Jul 21 16:06:39 2025 -0700

    watchdog: sbsa: Adjust keepalive timeout to avoid MediaTek WS0 race condition
    
    [ Upstream commit 48defdf6b083f74a44e1f742db284960d3444aec ]
    
    The MediaTek implementation of the sbsa_gwdt watchdog has a race
    condition where a write to SBSA_GWDT_WRR is ignored if it occurs while
    the hardware is processing a timeout refresh that asserts WS0.
    
    Detect this based on the hardware implementer and adjust
    wdd->min_hw_heartbeat_ms to avoid the race by forcing the keepalive ping
    to be one second later.
    
    Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
    Acked-by: Timur Tabi <ttabi@nvidia.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20250721230640.2244915-1-aplattner@nvidia.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: ath10k: shutdown driver when hardware is unreliable [+ + +]
Author: Kang Yang <kang.yang@oss.qualcomm.com>
Date:   Mon Jun 23 10:27:31 2025 +0800

    wifi: ath10k: shutdown driver when hardware is unreliable
    
    [ Upstream commit c256a94d1b1b15109740306f7f2a7c2173e12072 ]
    
    In rare cases, ath10k may lose connection with the PCIe bus due to
    some unknown reasons, which could further lead to system crashes during
    resuming due to watchdog timeout:
    
    ath10k_pci 0000:01:00.0: wmi command 20486 timeout, restarting hardware
    ath10k_pci 0000:01:00.0: already restarting
    ath10k_pci 0000:01:00.0: failed to stop WMI vdev 0: -11
    ath10k_pci 0000:01:00.0: failed to stop vdev 0: -11
    ieee80211 phy0: PM: **** DPM device timeout ****
    Call Trace:
     panic+0x125/0x315
     dpm_watchdog_set+0x54/0x54
     dpm_watchdog_handler+0x57/0x57
     call_timer_fn+0x31/0x13c
    
    At this point, all WMI commands will timeout and attempt to restart
    device. So set a threshold for consecutive restart failures. If the
    threshold is exceeded, consider the hardware is unreliable and all
    ath10k operations should be skipped to avoid system crash.
    
    fail_cont_count and pending_recovery are atomic variables, and
    do not involve complex conditional logic. Therefore, even if recovery
    check and reconfig complete are executed concurrently, the recovery
    mechanism will not be broken.
    
    Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00288-QCARMSWPZ-1
    
    Signed-off-by: Kang Yang <kang.yang@oss.qualcomm.com>
    Reviewed-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250623022731.509-1-kang.yang@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: Add memset and update default rate value in wmi tx completion [+ + +]
Author: Sarika Sharma <quic_sarishar@quicinc.com>
Date:   Tue Jun 3 12:05:12 2025 +0530

    wifi: ath12k: Add memset and update default rate value in wmi tx completion
    
    [ Upstream commit 9903c0986f782dfc511d7638b6f15fb6e8600cd3 ]
    
    When both AP/STA and monitor interfaces are enabled, ieee80211_tx_status()
    is invoked from two paths: the TX completion handler for data frames
    and the WMI TX completion handler for management frames.
    In the data path, the skb->cb is properly zeroed using memset, but in
    the WMI path, this step is missing.
    
    As a result, mac80211 encountered uninitialized (junk) values in
    skb->cb when generating the radiotap header for monitor mode, leading
    to invalid radiotap lengths.
    
    Hence, explicitly zero the status field in the skb->cb using memset
    in WMI TX completion path to ensure consistent and correct behavior
    during WMI tx completion path.
    
    Additionally, set info->status.rates[0].idx = -1 to indicate that
    no valid rate information is available, avoiding misinterpretation of
    garbage values.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250603063512.1887652-1-quic_sarishar@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: Correct tid cleanup when tid setup fails [+ + +]
Author: Sarika Sharma <quic_sarishar@quicinc.com>
Date:   Mon Jul 21 11:47:49 2025 +0530

    wifi: ath12k: Correct tid cleanup when tid setup fails
    
    [ Upstream commit 4a2bf707270f897ab8077baee8ed5842a5321686 ]
    
    Currently, if any error occurs during ath12k_dp_rx_peer_tid_setup(),
    the tid value is already incremented, even though the corresponding
    TID is not actually allocated. Proceed to
    ath12k_dp_rx_peer_tid_delete() starting from unallocated tid,
    which might leads to freeing unallocated TID and cause potential
    crash or out-of-bounds access.
    
    Hence, fix by correctly decrementing tid before cleanup to match only
    the successfully allocated TIDs.
    
    Also, remove tid-- from failure case of ath12k_dp_rx_peer_frag_setup(),
    as decrementing the tid before cleanup in loop will take care of this.
    
    Compile tested only.
    
    Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250721061749.886732-1-quic_sarishar@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: Decrement TID on RX peer frag setup error handling [+ + +]
Author: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
Date:   Mon May 26 09:17:13 2025 +0530

    wifi: ath12k: Decrement TID on RX peer frag setup error handling
    
    [ Upstream commit 7c0884fcd2ddde0544d2e77f297ae461e1f53f58 ]
    
    Currently, TID is not decremented before peer cleanup, during error
    handling path of ath12k_dp_rx_peer_frag_setup(). This could lead to
    out-of-bounds access in peer->rx_tid[].
    
    Hence, add a decrement operation for TID, before peer cleanup to
    ensures proper cleanup and prevents out-of-bounds access issues when
    the RX peer frag setup fails.
    
    Found during code review. Compile tested only.
    
    Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
    Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250526034713.712592-1-quic_sarishar@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: Enable REO queue lookup table feature on QCN9274 hw2.0 [+ + +]
Author: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
Date:   Mon Jun 9 08:48:50 2025 +0530

    wifi: ath12k: Enable REO queue lookup table feature on QCN9274 hw2.0
    
    [ Upstream commit b79742b84e16e41c4a09f3126436f39f36e75c06 ]
    
    The commit 89ac53e96217 ("wifi: ath12k: Enable REO queue lookup table
    feature on QCN9274") originally intended to enable the reoq_lut_support
    hardware parameter flag for both QCN9274 hw1.0 and hw2.0. However,
    it enabled it only for QCN9274 hw1.0.
    
    Hence, enable REO queue lookup table feature on QCN9274 hw2.0.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250609-qcn9274-reoq-v1-1-a92c91abc9b9@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: Fix station association with MBSSID Non-TX BSS [+ + +]
Author: Hari Chandrakanthan <quic_haric@quicinc.com>
Date:   Fri May 30 09:26:14 2025 +0530

    wifi: ath12k: Fix station association with MBSSID Non-TX BSS
    
    [ Upstream commit 70eeacc1a92a444f4b5777ab19e1c378a5edc8dd ]
    
    ath12k station is unable to associate with non-transmitting BSSes
    in a Multiple BSS set because the user-space does not receive
    information about the non-transmitting BSSes from mac80211's
    scan results.
    
    The ath12k driver does not advertise its MBSSID capability to mac80211,
    resulting in wiphy->support_mbssid not being set. Consequently, the
    information about non-transmitting BSS is not parsed from received
    Beacon/Probe response frames and is therefore not included in the
    scan results.
    
    Fix this by advertising the MBSSID capability of ath12k driver to
    mac80211.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00284-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1
    
    Signed-off-by: Hari Chandrakanthan <quic_haric@quicinc.com>
    Signed-off-by: Rameshkumar Sundaram <rameshkumar.sundaram@oss.qualcomm.com>
    Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250530035615.3178480-2-rameshkumar.sundaram@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: Fix interface type validation [+ + +]
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Wed Jul 9 23:37:55 2025 +0300

    wifi: cfg80211: Fix interface type validation
    
    [ Upstream commit 14450be2332a49445106403492a367412b8c23f4 ]
    
    Fix a condition that verified valid values of interface types.
    
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250709233537.7ad199ca5939.I0ac1ff74798bf59a87a57f2e18f2153c308b119b@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: reject HTC bit for management frames [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri Jul 18 20:23:06 2025 +0200

    wifi: cfg80211: reject HTC bit for management frames
    
    [ Upstream commit be06a8c7313943109fa870715356503c4c709cbc ]
    
    Management frames sent by userspace should never have the
    order/HTC bit set, reject that. It could also cause some
    confusion with the length of the buffer and the header so
    the validation might end up wrong.
    
    Link: https://patch.msgid.link/20250718202307.97a0455f0f35.I1805355c7e331352df16611839bc8198c855a33f@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlegacy: Check rate_idx range after addition [+ + +]
Author: Stanislaw Gruszka <stf_xl@wp.pl>
Date:   Sun May 25 16:45:24 2025 +0200

    wifi: iwlegacy: Check rate_idx range after addition
    
    [ Upstream commit 0de19d5ae0b2c5b18b88c5c7f0442f707a207409 ]
    
    Limit rate_idx to IL_LAST_OFDM_RATE for 5GHz band for thinkable case
    the index is incorrect.
    
    Reported-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Reported-by: Alexei Safin <a.safin@rosa.ru>
    Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
    Reviewed-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Link: https://patch.msgid.link/20250525144524.GA172583@wp.pl
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: dvm: fix potential overflow in rs_fill_link_cmd() [+ + +]
Author: Rand Deeb <rand.sec96@gmail.com>
Date:   Wed Mar 13 13:17:55 2024 +0300

    wifi: iwlwifi: dvm: fix potential overflow in rs_fill_link_cmd()
    
    [ Upstream commit e3ad987e9dc7d1e12e3f2f1e623f0e174cd0ca78 ]
    
    The 'index' variable in the rs_fill_link_cmd() function can reach
    LINK_QUAL_MAX_RETRY_NUM during the execution of the inner loop. This
    variable is used as an index for the lq_cmd->rs_table array, which has a
    size of LINK_QUAL_MAX_RETRY_NUM, without proper validation.
    
    Modify the condition of the inner loop to ensure that the 'index' variable
    does not exceed LINK_QUAL_MAX_RETRY_NUM - 1, thereby preventing any
    potential overflow issues.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Rand Deeb <rand.sec96@gmail.com>
    Link: https://patch.msgid.link/20240313101755.269209-1-rand.sec96@gmail.com
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: fw: Fix possible memory leak in iwl_fw_dbg_collect [+ + +]
Author: Pagadala Yesu Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Date:   Wed Jun 11 22:26:23 2025 +0300

    wifi: iwlwifi: fw: Fix possible memory leak in iwl_fw_dbg_collect
    
    [ Upstream commit cc8d9cbf269dab363c768bfa9312265bc807fca5 ]
    
    Ensure descriptor is freed on error to avoid memory leak.
    
    Signed-off-by: Pagadala Yesu Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250611222325.8158d15ec866.Ifa3e422c302397111f20a16da7509e6574bc19e3@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: avoid outdated reorder buffer head_sn [+ + +]
Author: Avraham Stern <avraham.stern@intel.com>
Date:   Wed Jul 23 09:45:05 2025 +0300

    wifi: iwlwifi: mvm: avoid outdated reorder buffer head_sn
    
    [ Upstream commit 422850b29e05e67c9145895bfe559940caa0caa8 ]
    
    If no frames are received on a queue for a while, the reorder buffer
    head_sn may be an old one. When the next frame that is received on
    that queue and buffered is a subframe of an AMSDU but not the last
    subframe, it will not update the buffer's head_sn. When the frame
    release notification arrives, it will not release the buffered frame
    because it will look like the notification's NSSN is lower than the
    buffer's head_sn (because of a wraparound).
    Fix it by updating the head_sn when the first frame is buffered.
    
    Signed-off-by: Avraham Stern <avraham.stern@intel.com>
    Reviewed-by: Daniel Gabay <daniel.gabay@intel.com>
    Reviewed-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250723094230.795ec0cb8817.I9ec9a3508e7935e8d1833ea3e086066fdefee644@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: fix scan request validation [+ + +]
Author: Avraham Stern <avraham.stern@intel.com>
Date:   Wed Jul 9 23:05:43 2025 +0300

    wifi: iwlwifi: mvm: fix scan request validation
    
    [ Upstream commit 7c2f3ec7707188d8d5269ae2dce97d7be3e9f261 ]
    
    The scan request validation function uses bitwise and instead
    of logical and. Fix it.
    
    Signed-off-by: Avraham Stern <avraham.stern@intel.com>
    Reviewed-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250709230308.3fbc1f27871b.I7a8ee91f463c1a2d9d8561c8232e196885d02c43@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlwifi: mvm: set gtk id also in older FWs [+ + +]
Author: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Date:   Thu Jul 10 21:28:27 2025 +0300

    wifi: iwlwifi: mvm: set gtk id also in older FWs
    
    [ Upstream commit 61be9803f322ab46f31ba944c6ef7de195891f64 ]
    
    We use gtk[i].id, but it is not even set in older FW APIs
    (iwl_wowlan_status_v6 and iwl_wowlan_status_v7).
    Set it also in older FWs.
    
    Reviewed-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250710212632.e91e49590414.I27d2fdbed1c54aee59929fa11ec169f07e159406@changeid
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: avoid weird state in error path [+ + +]
Author: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Date:   Mon Jun 9 21:35:13 2025 +0300

    wifi: mac80211: avoid weird state in error path
    
    [ Upstream commit be1ba9ed221ffb95a8bb15f4c83d0694225ba808 ]
    
    If we get to the error path of ieee80211_prep_connection, for example
    because of a FW issue, then ieee80211_vif_set_links is called
    with 0.
    But the call to drv_change_vif_links from ieee80211_vif_update_links
    will probably fail as well, for the same reason.
    In this case, the valid_links and active_links bitmaps will be reverted
    to the value of the failing connection.
    Then, in the next connection, due to the logic of
    ieee80211_set_vif_links_bitmaps, valid_links will be set to the ID of
    the new connection assoc link, but the active_links will remain with the
    ID of the old connection's assoc link.
    If those IDs are different, we get into a weird state of valid_links and
    active_links being different. One of the consequences of this state is
    to call drv_change_vif_links with new_links as 0, since the & operation
    between the bitmaps will be 0.
    
    Since a removal of a link should always succeed, ignore the return value
    of drv_change_vif_links if it was called to only remove links, which is
    the case for the ieee80211_prep_connection's error path.
    That way, the bitmaps will not be reverted to have the value from the
    failing connection and will have 0, so the next connection will have a
    good state.
    
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Reviewed-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://patch.msgid.link/20250609213231.ba2011fb435f.Id87ff6dab5e1cf757b54094ac2d714c656165059@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: check basic rates validity in sta_link_apply_parameters [+ + +]
Author: Mikhail Lobanov <m.lobanov@rosa.ru>
Date:   Mon Mar 17 13:31:37 2025 +0300

    wifi: mac80211: check basic rates validity in sta_link_apply_parameters
    
    commit 16ee3ea8faef8ff042acc15867a6c458c573de61 upstream.
    
    When userspace sets supported rates for a new station via
    NL80211_CMD_NEW_STATION, it might send a list that's empty
    or contains only invalid values. Currently, we process these
    values in sta_link_apply_parameters() without checking the result of
    ieee80211_parse_bitrates(), which can lead to an empty rates bitmap.
    
    A similar issue was addressed for NL80211_CMD_SET_BSS in commit
    ce04abc3fcc6 ("wifi: mac80211: check basic rates validity").
    This patch applies the same approach in sta_link_apply_parameters()
    for NL80211_CMD_NEW_STATION, ensuring there is at least one valid
    rate by inspecting the result of ieee80211_parse_bitrates().
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: b95eb7f0eee4 ("wifi: cfg80211/mac80211: separate link params from station params")
    Signed-off-by: Mikhail Lobanov <m.lobanov@rosa.ru>
    Link: https://patch.msgid.link/20250317103139.17625-1-m.lobanov@rosa.ru
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Hanne-Lotta Mäenpää <hannelotta@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

wifi: mac80211: don't complete management TX on SAE commit [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Jun 9 21:35:27 2025 +0300

    wifi: mac80211: don't complete management TX on SAE commit
    
    [ Upstream commit 6b04716cdcac37bdbacde34def08bc6fdb5fc4e2 ]
    
    When SAE commit is sent and received in response, there's no
    ordering for the SAE confirm messages. As such, don't call
    drivers to stop listening on the channel when the confirm
    message is still expected.
    
    This fixes an issue if the local confirm is transmitted later
    than the AP's confirm, for iwlwifi (and possibly mt76) the
    AP's confirm would then get lost since the device isn't on
    the channel at the time the AP transmit the confirm.
    
    For iwlwifi at least, this also improves the overall timing
    of the authentication handshake (by about 15ms according to
    the report), likely since the session protection won't be
    aborted and rescheduled.
    
    Note that even before this, mgd_complete_tx() wasn't always
    called for each call to mgd_prepare_tx() (e.g. in the case
    of WEP key shared authentication), and the current drivers
    that have the complete callback don't seem to mind. Document
    this as well though.
    
    Reported-by: Jan Hendrik Farr <kernel@jfarr.cc>
    Closes: https://lore.kernel.org/all/aB30Ea2kRG24LINR@archlinux/
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250609213232.12691580e140.I3f1d3127acabcd58348a110ab11044213cf147d3@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: don't unreserve never reserved chanctx [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed Jul 9 23:37:53 2025 +0300

    wifi: mac80211: don't unreserve never reserved chanctx
    
    [ Upstream commit a6d521bafcb290294128a51b13dbf4baae5748fc ]
    
    If a link has no chanctx, indicating it is an inactive link
    that we tracked CSA for, then attempting to unreserve the
    reserved chanctx will throw a warning and fail, since there
    never was a reserved chanctx. Skip the unreserve.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20250709233537.022192f4b1ae.Ib58156ac13e674a9f4d714735be0764a244c0aae@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: fix rx link assignment for non-MLO stations [+ + +]
Author: Hari Chandrakanthan <quic_haric@quicinc.com>
Date:   Mon Jun 30 14:11:19 2025 +0530

    wifi: mac80211: fix rx link assignment for non-MLO stations
    
    [ Upstream commit cc2b722132893164bcb3cee4f08ed056e126eb6c ]
    
    Currently, ieee80211_rx_data_set_sta() does not correctly handle the
    case where the interface supports multiple links (MLO), but the station
    does not (non-MLO). This can lead to incorrect link assignment or
    unexpected warnings when accessing link information.
    
    Hence, add a fix to check if the station lacks valid link support and
    use its default link ID for rx->link assignment. If the station
    unexpectedly has valid links, fall back to the default link.
    
    This ensures correct link association and prevents potential issues
    in mixed MLO/non-MLO environments.
    
    Signed-off-by: Hari Chandrakanthan <quic_haric@quicinc.com>
    Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
    Link: https://patch.msgid.link/20250630084119.3583593-1-quic_sarishar@quicinc.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: update radar_required in channel context after channel switch [+ + +]
Author: Ramya Gnanasekar <ramya.gnanasekar@oss.qualcomm.com>
Date:   Sun Jun 8 19:33:24 2025 +0530

    wifi: mac80211: update radar_required in channel context after channel switch
    
    [ Upstream commit 140c6a61d83cbd85adba769b5ef8d61acfa5b392 ]
    
    Currently, when a non-DFS channel is brought up and the bandwidth is
    expanded from 80 MHz to 160 MHz, where the primary 80 MHz is non-DFS
    and the secondary 80 MHz consists of DFS channels, radar detection
    fails if radar occurs in the secondary 80 MHz.
    
    When the channel is switched from 80 MHz to 160 MHz, with the primary
    80 MHz being non-DFS and the secondary 80 MHz consisting of DFS
    channels, the radar required flag in the channel switch parameters
    is set to true. However, when using a reserved channel context,
    it is not updated in sdata, which disables radar detection in the
    secondary 80 MHz DFS channels.
    
    Update the radar required flag in sdata to fix this issue when using
    a reserved channel context.
    
    Signed-off-by: Ramya Gnanasekar <ramya.gnanasekar@oss.qualcomm.com>
    Signed-off-by: Ramasamy Kaliappan <ramasamy.kaliappan@oss.qualcomm.com>
    Link: https://patch.msgid.link/20250608140324.1687117-1-ramasamy.kaliappan@oss.qualcomm.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mt76: mt7915: mcu: re-init MCU before loading FW patch [+ + +]
Author: David Bauer <mail@david-bauer.net>
Date:   Wed Apr 2 02:45:27 2025 +0200

    wifi: mt76: mt7915: mcu: re-init MCU before loading FW patch
    
    [ Upstream commit ac9c50c79eaef5fca0f165e45d0c5880606db53e ]
    
    Restart the MCU and release the patch semaphore before loading the MCU
    patch firmware from the host.
    
    This fixes failures upon error recovery in case the semaphore was
    previously taken and never released by the host.
    
    This happens from time to time upon triggering a full-chip error
    recovery. Under this circumstance, the hardware restart fails and the
    radio is rendered inoperational.
    
    Signed-off-by: David Bauer <mail@david-bauer.net>
    Link: https://patch.msgid.link/20250402004528.1036715-3-mail@david-bauer.net
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: fix possible skb memory leak in _rtl_pci_init_one_rxdesc() [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Fri Jun 13 09:38:36 2025 +0200

    wifi: rtlwifi: fix possible skb memory leak in _rtl_pci_init_one_rxdesc()
    
    [ Upstream commit 76b3e5078d76f0eeadb7aacf9845399f8473da0d ]
    
    When `dma_mapping_error()` is true, if a new `skb` has been allocated,
    then it must be de-allocated.
    
    Compile tested only
    
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250613074014.69856-2-fourier.thomas@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtlwifi: fix possible skb memory leak in `_rtl_pci_rx_interrupt()`. [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Mon Jun 16 12:56:30 2025 +0200

    wifi: rtlwifi: fix possible skb memory leak in `_rtl_pci_rx_interrupt()`.
    
    [ Upstream commit 44c0e191004f0e3aa1bdee3be248be14dbe5b020 ]
    
    The function `_rtl_pci_init_one_rxdesc()` can fail even when the new
    `skb` is passed because of a DMA mapping error.  If it fails, the `skb`
    is not saved in the rx ringbuffer and thus lost.
    
    Compile tested only
    
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250616105631.444309-4-fourier.thomas@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: Fix rtw89_mac_power_switch() for USB [+ + +]
Author: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Date:   Mon Jun 30 23:45:55 2025 +0300

    wifi: rtw89: Fix rtw89_mac_power_switch() for USB
    
    [ Upstream commit e2b71603333a9dd73ee88347d8894fffc3456ac1 ]
    
    Clear some bits in some registers in order to allow RTL8851BU to power
    on. This is done both when powering on and when powering off because
    that's what the vendor driver does.
    
    Also tested with RTL8832BU and RTL8832CU.
    
    Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/a39da939-d640-4486-ad38-f658f220afc8@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: Lower the timeout in rtw89_fw_read_c2h_reg() for USB [+ + +]
Author: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Date:   Tue Jul 15 22:44:47 2025 +0300

    wifi: rtw89: Lower the timeout in rtw89_fw_read_c2h_reg() for USB
    
    [ Upstream commit 671be46afd1f03de9dc6e4679c88e1a7a81cdff6 ]
    
    This read_poll_timeout_atomic() with a delay of 1 µs and a timeout of
    1000000 µs can take ~250 seconds in the worst case because sending a
    USB control message takes ~250 µs.
    
    Lower the timeout to 4000 for USB in order to reduce the maximum polling
    time to ~1 second.
    
    This problem was observed with RTL8851BU while suspending to RAM with
    WOWLAN enabled. The computer sat for 4 minutes with a black screen
    before suspending.
    
    Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/09313da6-c865-4e91-b758-4cb38a878796@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: scan abort when assign/unassign_vif [+ + +]
Author: Chih-Kang Chang <gary.chang@realtek.com>
Date:   Tue Jun 10 21:00:34 2025 +0800

    wifi: rtw89: scan abort when assign/unassign_vif
    
    [ Upstream commit 3db8563bac6c34018cbb96b14549a95c368b0304 ]
    
    If scan happen during start_ap, the register which control TX might be
    turned off during scan. Additionally, if set_channel occurs during scan
    will backup this register and set to firmware after set_channel done.
    When scan complete, firmware will also set TX by this register, causing
    TX to be disabled and beacon can't be TX. Therefore, in assign/unassign_vif
    call scan abort before set_channel to avoid scan racing with set_channel.
    
    Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250610130034.14692-13-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw89: wow: Add Basic Rate IE to probe request in scheduled scan mode [+ + +]
Author: Chin-Yen Lee <timlee@realtek.com>
Date:   Wed Jul 16 20:29:26 2025 +0800

    wifi: rtw89: wow: Add Basic Rate IE to probe request in scheduled scan mode
    
    [ Upstream commit 37c23874d13eb369d8b384a1ce5992ff6c23d56f ]
    
    In scheduled scan mode, the current probe request only includes the SSID
    IE, but omits the Basic Rate IE. Some APs do not respond to such
    incomplete probe requests, causing net-detect failures. To improve
    interoperability and ensure APs respond correctly, add the Basic Rate IE
    to the probe request in driver.
    
    Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250716122926.6709-1-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/bugs: Avoid warning when overriding return thunk [+ + +]
Author: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Date:   Wed Jun 11 10:29:31 2025 -0700

    x86/bugs: Avoid warning when overriding return thunk
    
    [ Upstream commit 9f85fdb9fc5a1bd308a10a0a7d7e34f2712ba58b ]
    
    The purpose of the warning is to prevent an unexpected change to the return
    thunk mitigation. However, there are legitimate cases where the return
    thunk is intentionally set more than once. For example, ITS and SRSO both
    can set the return thunk after retbleed has set it. In both the cases
    retbleed is still mitigated.
    
    Replace the warning with an info about the active return thunk.
    
    Suggested-by: Borislav Petkov <bp@alien8.de>
    Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/20250611-eibrs-fix-v4-3-5ff86cac6c61@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xen/netfront: Fix TX response spurious interrupts [+ + +]
Author: Anthoine Bourgeois <anthoine.bourgeois@vates.tech>
Date:   Mon Jul 21 09:34:54 2025 +0000

    xen/netfront: Fix TX response spurious interrupts
    
    [ Upstream commit 114a2de6fa86d99ed9546cc9113a3cad58beef79 ]
    
    We found at Vates that there are lot of spurious interrupts when
    benchmarking the xen-net PV driver frontend. This issue appeared with a
    patch that addresses security issue XSA-391 (b27d47950e48 "xen/netfront:
    harden netfront against event channel storms"). On an iperf benchmark,
    spurious interrupts can represent up to 50% of the interrupts.
    
    Spurious interrupts are interrupts that are rised for nothing, there is
    no work to do. This appends because the function that handles the
    interrupts ("xennet_tx_buf_gc") is also called at the end of the request
    path to garbage collect the responses received during the transmission
    load.
    
    The request path is doing the work that the interrupt handler should
    have done otherwise. This is particurary true when there is more than
    one vcpu and get worse linearly with the number of vcpu/queue.
    
    Moreover, this problem is amplifyed by the penalty imposed by a spurious
    interrupt. When an interrupt is found spurious the interrupt chip will
    delay the EOI to slowdown the backend. This delay will allow more
    responses to be handled by the request path and then there will be more
    chance the next interrupt will not find any work to do, creating a new
    spurious interrupt.
    
    This causes performance issue. The solution here is to remove the calls
    from the request path and let the interrupt handler do the processing of
    the responses. This approch removes most of the spurious interrupts
    (<0.05%) and also has the benefit of freeing up cycles in the request
    path, allowing it to process more work, which improves performance
    compared to masking the spurious interrupt one way or another.
    
    This optimization changes a part of the code that is present since the
    net frontend driver was upstreamed. There is no similar pattern in the
    other xen PV drivers. Since the first commit of xen-netfront is a blob
    that doesn't explain all the design choices I can only guess why this
    specific mecanism was here. This could have been introduce to compensate
    a slow backend at the time (maybe the backend was fixed or optimize
    later) or a small queue. In 18 years, both frontend and backend gain lot
    of features and optimizations that could have obsolete the feature of
    reaping completions from the TX path.
    
    Some vif throughput performance figures from a 8 vCPUs, 4GB of RAM HVM
    guest(s):
    
    Without this patch on the :
    vm -> dom0: 4.5Gb/s
    vm -> vm:   7.0Gb/s
    
    Without XSA-391 patch (revert of b27d47950e48):
    vm -> dom0: 8.3Gb/s
    vm -> vm:   8.7Gb/s
    
    With XSA-391 and this patch:
    vm -> dom0: 11.5Gb/s
    vm -> vm:   12.6Gb/s
    
    v2:
    - add revewed and tested by tags
    - resend with the maintainers in the recipients list
    
    v3:
    - remove Fixes tag but keep the commit ref in the explanation
    - add a paragraph on why this code was here
    
    Signed-off-by: Anthoine Bourgeois <anthoine.bourgeois@vates.tech>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Elliott Mitchell <ehem+xen@m5p.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Message-ID: <20250721093316.23560-1-anthoine.bourgeois@vates.tech>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfrm: Duplicate SPI Handling [+ + +]
Author: Aakash Kumar S <saakashkumar@marvell.com>
Date:   Mon Jun 30 18:08:56 2025 +0530

    xfrm: Duplicate SPI Handling
    
    [ Upstream commit 94f39804d891cffe4ce17737d295f3b195bc7299 ]
    
    The issue originates when Strongswan initiates an XFRM_MSG_ALLOCSPI
    Netlink message, which triggers the kernel function xfrm_alloc_spi().
    This function is expected to ensure uniqueness of the Security Parameter
    Index (SPI) for inbound Security Associations (SAs). However, it can
    return success even when the requested SPI is already in use, leading
    to duplicate SPIs assigned to multiple inbound SAs, differentiated
    only by their destination addresses.
    
    This behavior causes inconsistencies during SPI lookups for inbound packets.
    Since the lookup may return an arbitrary SA among those with the same SPI,
    packet processing can fail, resulting in packet drops.
    
    According to RFC 4301 section 4.4.2 , for inbound processing a unicast SA
    is uniquely identified by the SPI and optionally protocol.
    
    Reproducing the Issue Reliably:
    To consistently reproduce the problem, restrict the available SPI range in
    charon.conf : spi_min = 0x10000000 spi_max = 0x10000002
    This limits the system to only 2 usable SPI values.
    Next, create more than 2 Child SA. each using unique pair of src/dst address.
    As soon as the 3rd Child SA is initiated, it will be assigned a duplicate
    SPI, since the SPI pool is already exhausted.
    With a narrow SPI range, the issue is consistently reproducible.
    With a broader/default range, it becomes rare and unpredictable.
    
    Current implementation:
    xfrm_spi_hash() lookup function computes hash using daddr, proto, and family.
    So if two SAs have the same SPI but different destination addresses, then
    they will:
    a. Hash into different buckets
    b. Be stored in different linked lists (byspi + h)
    c. Not be seen in the same hlist_for_each_entry_rcu() iteration.
    As a result, the lookup will result in NULL and kernel allows that Duplicate SPI
    
    Proposed Change:
    xfrm_state_lookup_spi_proto() does a truly global search - across all states,
    regardless of hash bucket and matches SPI and proto.
    
    Signed-off-by: Aakash Kumar S <saakashkumar@marvell.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfs: fix scrub trace with null pointer in quotacheck [+ + +]
Author: Andrey Albershteyn <aalbersh@redhat.com>
Date:   Thu Jul 31 19:07:22 2025 +0200

    xfs: fix scrub trace with null pointer in quotacheck
    
    commit 5d94b19f066480addfcdcb5efde66152ad5a7c0e upstream.
    
    The quotacheck doesn't initialize sc->ip.
    
    Cc: stable@vger.kernel.org # v6.8
    Fixes: 21d7500929c8a0 ("xfs: improve dquot iteration for scrub")
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
    Signed-off-by: Carlos Maiolino <cem@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>