Changelog in Linux kernel 5.15.202

 
ACPI: CPPC: Fix remaining for_each_possible_cpu() to use online CPUs [+ + +]
Author: Sean V Kelley <[email protected]>
Date:   Wed Feb 11 21:22:54 2026 +0000

    ACPI: CPPC: Fix remaining for_each_possible_cpu() to use online CPUs
    
    [ Upstream commit 56eb0c0ed345da7815274aa821a8546a073d7e97 ]
    
    per_cpu(cpc_desc_ptr, cpu) object is initialized for only the online
    CPUs via acpi_soft_cpu_online() --> __acpi_processor_start() -->
    acpi_cppc_processor_probe().
    
    However, send_pcc_cmd() and acpi_get_psd_map() still iterate over all
    possible CPUs. In acpi_get_psd_map(), encountering an offline CPU
    returns -EFAULT, causing cppc_cpufreq initialization to fail.
    
    This breaks systems booted with "nosmt" or "nosmt=force".
    
    Fix by using for_each_online_cpu() in both functions.
    
    Fixes: 80b8286aeec0 ("ACPI / CPPC: support for batching CPPC requests")
    Signed-off-by: Sean V Kelley <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: processor: Fix NULL-pointer dereference in acpi_processor_errata_piix4() [+ + +]
Author: Tuo Li <[email protected]>
Date:   Mon Jan 12 00:32:14 2026 +0800

    ACPI: processor: Fix NULL-pointer dereference in acpi_processor_errata_piix4()
    
    [ Upstream commit f132e089fe89cadc2098991f0a3cb05c3f824ac6 ]
    
    In acpi_processor_errata_piix4(), the pointer dev is first assigned an IDE
    device and then reassigned an ISA device:
    
      dev = pci_get_subsys(..., PCI_DEVICE_ID_INTEL_82371AB, ...);
      dev = pci_get_subsys(..., PCI_DEVICE_ID_INTEL_82371AB_0, ...);
    
    If the first lookup succeeds but the second fails, dev becomes NULL. This
    leads to a potential null-pointer dereference when dev_dbg() is called:
    
      if (errata.piix4.bmisx)
        dev_dbg(&dev->dev, ...);
    
    To prevent this, use two temporary pointers and retrieve each device
    independently, avoiding overwriting dev with a possible NULL value.
    
    Signed-off-by: Tuo Li <[email protected]>
    [ rjw: Subject adjustment, added an empty code line ]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ACPICA: Abort AML bytecode execution when executing AML_FATAL_OP [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Wed Jan 14 13:25:33 2026 +0100

    ACPICA: Abort AML bytecode execution when executing AML_FATAL_OP
    
    [ Upstream commit 026ad376a6a48538b576f3589331daa94daae6f0 ]
    
    The ACPI specification states that when executing AML_FATAL_OP,
    the OS should log the fatal error event and shutdown in a timely
    fashion.
    
    Windows complies with this requirement by immediatly entering a
    Bso_d, effectively aborting the execution of the AML bytecode in
    question.
    
    ACPICA however might continue with the AML bytecode execution
    should acpi_os_signal() simply return AE_OK. This will cause issues
    because ACPI BIOS implementations might assume that the Fatal()
    operator does not return.
    
    Fix this by aborting the AML bytecode execution in such a case
    by returning AE_ERROR. Also turn struct acpi_signal_fatal_info into a
    local variable because of its small size (12 bytes) and to ensure
    that acpi_os_signal() always receives valid information about the
    fatal ACPI BIOS error.
    
    Link: https://github.com/acpica/acpica/commit/d516c7758ba6
    Signed-off-by: Armin Wolf <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA: usb-audio: Add iface reset and delay quirk for AB13X USB Audio [+ + +]
Author: Lianqin Hu <[email protected]>
Date:   Mon Feb 9 08:38:29 2026 +0000

    ALSA: usb-audio: Add iface reset and delay quirk for AB13X USB Audio
    
    [ Upstream commit ac656d7d7c70f7c352c7652bc2bb0c1c8c2dde08 ]
    
    Setting up the interface when suspended/resumeing fail on this card.
    Adding a reset and delay quirk will eliminate this problem.
    
    usb 1-1: New USB device found, idVendor=001f, idProduct=0b21
    usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 1-1: Product: AB13X USB Audio
    usb 1-1: Manufacturer: Generic
    usb 1-1: SerialNumber: 20210926172016
    
    Signed-off-by: Lianqin Hu <[email protected]>
    Link: https://patch.msgid.link/TYUPR06MB6217522D0DB6E2C9DF46B56ED265A@TYUPR06MB6217.apcprd06.prod.outlook.com
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Add sanity check for OOB writes at silencing [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Mon Feb 16 15:12:07 2026 +0100

    ALSA: usb-audio: Add sanity check for OOB writes at silencing
    
    [ Upstream commit fba2105a157fffcf19825e4eea498346738c9948 ]
    
    At silencing the playback URB packets in the implicit fb mode before
    the actual playback, we blindly assume that the received packets fit
    with the buffer size.  But when the setup in the capture stream
    differs from the playback stream (e.g. due to the USB core limitation
    of max packet size), such an inconsistency may lead to OOB writes to
    the buffer, resulting in a crash.
    
    For addressing it, add a sanity check of the transfer buffer size at
    prepare_silent_urb(), and stop the data copy if the received data
    overflows.  Also, report back the transfer error properly from there,
    too.
    
    Note that this doesn't fix the root cause of the playback error
    itself, but this merely covers the kernel Oops.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=221076
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Update the number of packets properly at receiving [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Mon Feb 16 15:12:05 2026 +0100

    ALSA: usb-audio: Update the number of packets properly at receiving
    
    [ Upstream commit cf044e44190234a41a788de1cdbb6c21f4a52e1e ]
    
    At receiving the packets from the implicit feedback source, we didn't
    update ctx->packets field but only the ctx->packet_size[] data.
    In exceptional cases, this might lead to unexpectedly superfluous data
    transfer (although this won't happen usually due to the nature of USB
    isochronous transfer).  Fix it to update the field properly.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
APEI/GHES: ensure that won't go past CPER allocated record [+ + +]
Author: Mauro Carvalho Chehab <[email protected]>
Date:   Thu Jan 8 12:35:05 2026 +0100

    APEI/GHES: ensure that won't go past CPER allocated record
    
    [ Upstream commit fa2408a24f8f0db14d9cfc613ef162dc267d7ad4 ]
    
    The logic at ghes_new() prevents allocating too large records, by
    checking if they're bigger than GHES_ESTATUS_MAX_SIZE (currently, 64KB).
    Yet, the allocation is done with the actual number of pages from the
    CPER bios table location, which can be smaller.
    
    Yet, a bad firmware could send data with a different size, which might
    be bigger than the allocated memory, causing an OOPS:
    
        Unable to handle kernel paging request at virtual address fff00000f9b40000
        Mem abort info:
          ESR = 0x0000000096000007
          EC = 0x25: DABT (current EL), IL = 32 bits
          SET = 0, FnV = 0
          EA = 0, S1PTW = 0
          FSC = 0x07: level 3 translation fault
        Data abort info:
          ISV = 0, ISS = 0x00000007, ISS2 = 0x00000000
          CM = 0, WnR = 0, TnD = 0, TagAccess = 0
          GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
        swapper pgtable: 4k pages, 52-bit VAs, pgdp=000000008ba16000
        [fff00000f9b40000] pgd=180000013ffff403, p4d=180000013fffe403, pud=180000013f85b403, pmd=180000013f68d403, pte=0000000000000000
        Internal error: Oops: 0000000096000007 [#1]  SMP
        Modules linked in:
        CPU: 0 UID: 0 PID: 303 Comm: kworker/0:1 Not tainted 6.19.0-rc1-00002-gda407d200220 #34 PREEMPT
        Hardware name: QEMU QEMU Virtual Machine, BIOS unknown 02/02/2022
        Workqueue: kacpi_notify acpi_os_execute_deferred
        pstate: 214020c5 (nzCv daIF +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
        pc : hex_dump_to_buffer+0x30c/0x4a0
        lr : hex_dump_to_buffer+0x328/0x4a0
        sp : ffff800080e13880
        x29: ffff800080e13880 x28: ffffac9aba86f6a8 x27: 0000000000000083
        x26: fff00000f9b3fffc x25: 0000000000000004 x24: 0000000000000004
        x23: ffff800080e13905 x22: 0000000000000010 x21: 0000000000000083
        x20: 0000000000000001 x19: 0000000000000008 x18: 0000000000000010
        x17: 0000000000000001 x16: 00000007c7f20fec x15: 0000000000000020
        x14: 0000000000000008 x13: 0000000000081020 x12: 0000000000000008
        x11: ffff800080e13905 x10: ffff800080e13988 x9 : 0000000000000000
        x8 : 0000000000000000 x7 : 0000000000000001 x6 : 0000000000000020
        x5 : 0000000000000030 x4 : 00000000fffffffe x3 : 0000000000000000
        x2 : ffffac9aba78c1c8 x1 : ffffac9aba76d0a8 x0 : 0000000000000008
        Call trace:
         hex_dump_to_buffer+0x30c/0x4a0 (P)
         print_hex_dump+0xac/0x170
         cper_estatus_print_section+0x90c/0x968
         cper_estatus_print+0xf0/0x158
         __ghes_print_estatus+0xa0/0x148
         ghes_proc+0x1bc/0x220
         ghes_notify_hed+0x5c/0xb8
         notifier_call_chain+0x78/0x148
         blocking_notifier_call_chain+0x4c/0x80
         acpi_hed_notify+0x28/0x40
         acpi_ev_notify_dispatch+0x50/0x80
         acpi_os_execute_deferred+0x24/0x48
         process_one_work+0x15c/0x3b0
         worker_thread+0x2d0/0x400
         kthread+0x148/0x228
         ret_from_fork+0x10/0x20
        Code: 6b14033f 540001ad a94707e2 f100029f (b8747b44)
        ---[ end trace 0000000000000000 ]---
    
    Prevent that by taking the actual allocated are into account when
    checking for CPER length.
    
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Acked-by: Ard Biesheuvel <[email protected]>
    Reviewed-by: Hanjun Guo <[email protected]>
    [ rjw: Subject tweaks ]
    Link: https://patch.msgid.link/4e70310a816577fabf37d94ed36cde4ad62b1e0a.1767871950.git.mchehab+huawei@kernel.org
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
apparmor: fix invalid deref of rawdata when export_binary is unset [+ + +]
Author: Georgia Garcia <[email protected]>
Date:   Thu Jan 29 15:58:45 2026 -0300

    apparmor: fix invalid deref of rawdata when export_binary is unset
    
    [ Upstream commit df9ac55abd18628bd8cff687ea043660532a3654 ]
    
    If the export_binary parameter is disabled on runtime, profiles that
    were loaded before that will still have their rawdata stored in
    apparmorfs, with a symbolic link to the rawdata on the policy
    directory. When one of those profiles are replaced, the rawdata is set
    to NULL, but when trying to resolve the symbolic links to rawdata for
    that profile, it will try to dereference profile->rawdata->name when
    profile->rawdata is now NULL causing an oops. Fix it by checking if
    rawdata is set.
    
    [  168.653080] BUG: kernel NULL pointer dereference, address: 0000000000000088
    [  168.657420] #PF: supervisor read access in kernel mode
    [  168.660619] #PF: error_code(0x0000) - not-present page
    [  168.663613] PGD 0 P4D 0
    [  168.665450] Oops: Oops: 0000 [#1] SMP NOPTI
    [  168.667836] CPU: 1 UID: 0 PID: 1729 Comm: ls Not tainted 6.19.0-rc7+ #3 PREEMPT(voluntary)
    [  168.672308] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [  168.679327] RIP: 0010:rawdata_get_link_base.isra.0+0x23/0x330
    [  168.682768] Code: 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 41 57 41 56 41 55 41 54 53 48 83 ec 18 48 89 55 d0 48 85 ff 0f 84 e3 01 00 00 <48> 83 3c 25 88 00 00 00 00 0f 84 d4 01 00 00 49 89 f6 49 89 cc e8
    [  168.689818] RSP: 0018:ffffcdcb8200fb80 EFLAGS: 00010282
    [  168.690871] RAX: ffffffffaee74ec0 RBX: 0000000000000000 RCX: ffffffffb0120158
    [  168.692251] RDX: ffffcdcb8200fbe0 RSI: ffff88c187c9fa80 RDI: ffff88c186c98a80
    [  168.693593] RBP: ffffcdcb8200fbc0 R08: 0000000000000000 R09: 0000000000000000
    [  168.694941] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88c186c98a80
    [  168.696289] R13: 00007fff005aaa20 R14: 0000000000000080 R15: ffff88c188f4fce0
    [  168.697637] FS:  0000790e81c58280(0000) GS:ffff88c20a957000(0000) knlGS:0000000000000000
    [  168.699227] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  168.700349] CR2: 0000000000000088 CR3: 000000012fd3e000 CR4: 0000000000350ef0
    [  168.701696] Call Trace:
    [  168.702325]  <TASK>
    [  168.702995]  rawdata_get_link_data+0x1c/0x30
    [  168.704145]  vfs_readlink+0xd4/0x160
    [  168.705152]  do_readlinkat+0x114/0x180
    [  168.706214]  __x64_sys_readlink+0x1e/0x30
    [  168.708653]  x64_sys_call+0x1d77/0x26b0
    [  168.709525]  do_syscall_64+0x81/0x500
    [  168.710348]  ? do_statx+0x72/0xb0
    [  168.711109]  ? putname+0x3e/0x80
    [  168.711845]  ? __x64_sys_statx+0xb7/0x100
    [  168.712711]  ? x64_sys_call+0x10fc/0x26b0
    [  168.713577]  ? do_syscall_64+0xbf/0x500
    [  168.714412]  ? do_user_addr_fault+0x1d2/0x8d0
    [  168.715404]  ? irqentry_exit+0xb2/0x740
    [  168.716359]  ? exc_page_fault+0x90/0x1b0
    [  168.717307]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Fixes: 1180b4c757aab ("apparmor: fix dangling symlinks to policy rawdata after replacement")
    Signed-off-by: Georgia Garcia <[email protected]>
    Signed-off-by: John Johansen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

apparmor: fix NULL sock in aa_sock_file_perm [+ + +]
Author: John Johansen <[email protected]>
Date:   Mon Nov 24 15:07:42 2025 -0800

    apparmor: fix NULL sock in aa_sock_file_perm
    
    [ Upstream commit 00b67657535dfea56e84d11492f5c0f61d0af297 ]
    
    Deal with the potential that sock and sock-sk can be NULL during
    socket setup or teardown. This could lead to an oops. The fix for NULL
    pointer dereference in __unix_needs_revalidation shows this is at
    least possible for af_unix sockets. While the fix for af_unix sockets
    applies for newer mediation this is still the fall back path for older
    af_unix mediation and other sockets, so ensure it is covered.
    
    Fixes: 56974a6fcfef6 ("apparmor: add base infastructure for socket mediation")
    Reviewed-by: Georgia Garcia <[email protected]>
    Signed-off-by: John Johansen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

apparmor: fix rlimit for posix cpu timers [+ + +]
Author: John Johansen <[email protected]>
Date:   Sun Nov 9 14:16:54 2025 -0800

    apparmor: fix rlimit for posix cpu timers
    
    [ Upstream commit 6ca56813f4a589f536adceb42882855d91fb1125 ]
    
    Posix cpu timers requires an additional step beyond setting the rlimit.
    Refactor the code so its clear when what code is setting the
    limit and conditionally update the posix cpu timers when appropriate.
    
    Fixes: baa73d9e478ff ("posix-timers: Make them configurable")
    Reviewed-by: Georgia Garcia <[email protected]>
    Signed-off-by: John Johansen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: Add support for TSV110 Spectre-BHB mitigation [+ + +]
Author: Jinqian Yang <[email protected]>
Date:   Sat Dec 27 17:24:48 2025 +0800

    arm64: Add support for TSV110 Spectre-BHB mitigation
    
    [ Upstream commit e3baa5d4b361276efeb87b20d8beced451a7dbd5 ]
    
    The TSV110 processor is vulnerable to the Spectre-BHB (Branch History
    Buffer) attack, which can be exploited to leak information through
    branch prediction side channels. This commit adds the MIDR of TSV110
    to the list for software mitigation.
    
    Signed-off-by: Jinqian Yang <[email protected]>
    Reviewed-by: Zenghui Yu <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: Disable branch profiling for all arm64 code [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Tue Jan 6 02:16:35 2026 -0800

    arm64: Disable branch profiling for all arm64 code
    
    [ Upstream commit f22c81bebf8bda6e54dc132df0ed54f6bf8756f9 ]
    
    The arm64 kernel doesn't boot with annotated branches
    (PROFILE_ANNOTATED_BRANCHES) enabled and CONFIG_DEBUG_VIRTUAL together.
    
    Bisecting it, I found that disabling branch profiling in arch/arm64/mm
    solved the problem. Narrowing down a bit further, I found that
    physaddr.c is the file that needs to have branch profiling disabled to
    get the machine to boot.
    
    I suspect that it might invoke some ftrace helper very early in the boot
    process and ftrace is still not enabled(!?).
    
    Rather than playing whack-a-mole with individual files, disable branch
    profiling for the entire arch/arm64 tree, similar to what x86 already
    does in arch/x86/Kbuild.
    
    Cc: [email protected]
    Signed-off-by: Breno Leitao <[email protected]>
    Acked-by: Mark Rutland <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: amlogic: axg: assign the MMC signal clocks [+ + +]
Author: Jerome Brunet <[email protected]>
Date:   Wed Jan 14 18:08:50 2026 +0100

    arm64: dts: amlogic: axg: assign the MMC signal clocks
    
    [ Upstream commit 13d3fe2318ef6e46d6fcfe13bc373827fdf2aeac ]
    
    The amlogic MMC driver operate with the assumption that MMC clock
    is configured to provide 24MHz. It uses this path for low
    rates such as 400kHz.
    
    Assign the clocks to make sure they are properly configured
    
    Fixes: 221cf34bac54 ("ARM64: dts: meson-axg: enable the eMMC controller")
    Signed-off-by: Jerome Brunet <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-3-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: amlogic: g12: assign the MMC A signal clock [+ + +]
Author: Jerome Brunet <[email protected]>
Date:   Wed Jan 14 18:08:53 2026 +0100

    arm64: dts: amlogic: g12: assign the MMC A signal clock
    
    [ Upstream commit 3c941feaa363f1573a501452391ddf513394c84b ]
    
    The amlogic MMC driver operate with the assumption that MMC clock
    is configured to provide 24MHz. It uses this path for low
    rates such as 400kHz.
    
    Assign the clock to make sure it is properly configured
    
    Fixes: 8a6b3ca2d361 ("arm64: dts: meson: g12a: add SDIO controller")
    Signed-off-by: Jerome Brunet <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-6-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: amlogic: g12: assign the MMC B and C signal clocks [+ + +]
Author: Jerome Brunet <[email protected]>
Date:   Wed Jan 14 18:08:52 2026 +0100

    arm64: dts: amlogic: g12: assign the MMC B and C signal clocks
    
    [ Upstream commit be2ff5fdb0e83e32d4ec4e68a69875cec0d14621 ]
    
    The amlogic MMC driver operate with the assumption that MMC clock
    is configured to provide 24MHz. It uses this path for low
    rates such as 400kHz.
    
    Assign the clocks to make sure they are properly configured
    
    Fixes: 4759fd87b928 ("arm64: dts: meson: g12a: add mmc nodes")
    Signed-off-by: Jerome Brunet <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-5-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: amlogic: gx: assign the MMC signal clocks [+ + +]
Author: Jerome Brunet <[email protected]>
Date:   Wed Jan 14 18:08:51 2026 +0100

    arm64: dts: amlogic: gx: assign the MMC signal clocks
    
    [ Upstream commit 406706559046eebc09a31e8ae5e78620bfd746fe ]
    
    The amlogic MMC driver operate with the assumption that MMC clock
    is configured to provide 24MHz. It uses this path for low
    rates such as 400kHz.
    
    Assign the clocks to make sure they are properly configured
    
    Fixes: 50662499f911 ("ARM64: dts: meson-gx: Use correct mmc clock source 0")
    Signed-off-by: Jerome Brunet <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-4-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm630: correct QFPROM byte offsets [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Thu May 5 13:38:02 2022 +0200

    arm64: dts: qcom: sdm630: correct QFPROM byte offsets
    
    [ Upstream commit 74b0fbd6048f8f4caaed712ceeca52c6034e9ad6 ]
    
    The NVMEM bindings expect that 'bits' property holds offset and size of
    region within a byte, so it applies a constraint of <0, 7> for the
    offset.  Using 25 as HSTX trim offset is within 4-byte QFPROM word, but
    outside of the byte:
    
      sdm630-sony-xperia-nile-discovery.dtb: qfprom@780000: hstx-trim@240:bits:0:0: 25 is greater than the maximum of 7
      sdm630-sony-xperia-nile-discovery.dtb: qfprom@780000: gpu-speed-bin@41a0:bits:0:0: 21 is greater than the maximum of 7
    
    Align the offsets to match the bindings.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: e814796dfcae ("arm64: dts: qcom: sdm630: fix gpu_speed_bin size")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm630: fix gpu_speed_bin size [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Thu Dec 11 03:27:45 2025 +0200

    arm64: dts: qcom: sdm630: fix gpu_speed_bin size
    
    [ Upstream commit e814796dfcae8905682ac3ac2dd57f512a9f6726 ]
    
    Historically sdm630.dtsi has used 1 byte length for the gpu_speed_bin
    cell, although it spans two bytes (offset 5, size 7 bits). It was being
    accepted by the kernel because before the commit 7a06ef751077 ("nvmem:
    core: fix bit offsets of more than one byte") the kernel didn't have
    length check. After this commit nvmem core rejects QFPROM on sdm630 /
    sdm660, making GPU and USB unusable on those platforms.
    
    Set the size of the gpu_speed_bin cell to 2 bytes, fixing the parsing
    error. While we are at it, update the length to 8 bits as pointed out by
    Alexey Minnekhanov.
    
    Fixes: b190fb010664 ("arm64: dts: qcom: sdm630: Add sdm630 dts file")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Alexey Minnekhanov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845-db845c: specify power for WiFi CH1 [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Jan 6 03:01:18 2026 +0200

    arm64: dts: qcom: sdm845-db845c: specify power for WiFi CH1
    
    [ Upstream commit c303e89f7f17c29981d09f8beaaf60937ae8b1f2 ]
    
    Specify power supply for the second chain / antenna output of the
    onboard WiFi chip.
    
    Fixes: 3f72e2d3e682 ("arm64: dts: qcom: Add Dragonboard 845c")
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845-oneplus: Don't mark ts supply boot-on [+ + +]
Author: Casey Connolly <[email protected]>
Date:   Tue Nov 18 15:52:25 2025 +0100

    arm64: dts: qcom: sdm845-oneplus: Don't mark ts supply boot-on
    
    [ Upstream commit c9b98b9dad9749bf2eb7336a6fca31a6af1039d7 ]
    
    The touchscreen isn't enabled by bootloader and doesn't need to be
    enabled at boot, only when the driver probes, thus remove the
    regulator-boot-on property.
    
    Fixes: 288ef8a42612 ("arm64: dts: sdm845: add oneplus6/6t devices")
    Signed-off-by: Casey Connolly <[email protected]>
    Signed-off-by: David Heidelberg <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845-oneplus: Mark l14a regulator as boot-on [+ + +]
Author: Casey Connolly <[email protected]>
Date:   Tue Nov 18 15:52:27 2025 +0100

    arm64: dts: qcom: sdm845-oneplus: Mark l14a regulator as boot-on
    
    [ Upstream commit ad33ee060be46794a03d033894c9db3a9d6c1a0f ]
    
    This regulator is used only for the display, which is enabled by the
    bootloader and left on for continuous splash. Mark it as such.
    
    Fixes: 288ef8a42612 ("arm64: dts: sdm845: add oneplus6/6t devices")
    Signed-off-by: Casey Connolly <[email protected]>
    Signed-off-by: David Heidelberg <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: rockchip: Do not enable hdmi_sound node on Pinebook Pro [+ + +]
Author: Jun Yan <[email protected]>
Date:   Fri Jan 16 23:12:53 2026 +0800

    arm64: dts: rockchip: Do not enable hdmi_sound node on Pinebook Pro
    
    [ Upstream commit b18247f9dab735c9c2d63823d28edc9011e7a1ad ]
    
    Remove the redundant enabling of the hdmi_sound node in the Pinebook Pro
    board dts file, because the HDMI output is unused on this device. [1][2]
    
    This change also eliminates the following kernel log warning, which is
    caused by the unenabled dependent node of hdmi_sound that ultimately
    results in the node's probe failure:
    
      platform hdmi-sound: deferred probe pending: asoc-simple-card: parse error
    
    [1] https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf
    [2] https://files.pine64.org/doc/PinebookPro/pinebookpro_schematic_v21a_20220419.pdf
    
    Cc: [email protected]
    Fixes: 5a65505a69884 ("arm64: dts: rockchip: Add initial support for Pinebook Pro")
    Signed-off-by: Jun Yan <[email protected]>
    Reviewed-by: Peter Robinson <[email protected]>
    Reviewed-by: Dragan Simic <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: Fix non-atomic __READ_ONCE() with CONFIG_LTO=y [+ + +]
Author: Marco Elver <[email protected]>
Date:   Fri Jan 30 14:28:24 2026 +0100

    arm64: Fix non-atomic __READ_ONCE() with CONFIG_LTO=y
    
    [ Upstream commit bb0c99e08ab9aa6d04b40cb63c72db9950d51749 ]
    
    The implementation of __READ_ONCE() under CONFIG_LTO=y incorrectly
    qualified the fallback "once" access for types larger than 8 bytes,
    which are not atomic but should still happen "once" and suppress common
    compiler optimizations.
    
    The cast `volatile typeof(__x)` applied the volatile qualifier to the
    pointer type itself rather than the pointee. This created a volatile
    pointer to a non-volatile type, which violated __READ_ONCE() semantics.
    
    Fix this by casting to `volatile typeof(*__x) *`.
    
    With a defconfig + LTO + debug options build, we see the following
    functions to be affected:
    
            xen_manage_runstate_time (884 -> 944 bytes)
            xen_steal_clock (248 -> 340 bytes)
              ^-- use __READ_ONCE() to load vcpu_runstate_info structs
    
    Fixes: e35123d83ee3 ("arm64: lto: Strengthen READ_ONCE() to acquire when CONFIG_LTO=y")
    Cc: [email protected]
    Reviewed-by: Boqun Feng <[email protected]>
    Signed-off-by: Marco Elver <[email protected]>
    Tested-by: David Laight <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: tegra: smaug: Add usb-role-switch support [+ + +]
Author: Diogo Ivo <[email protected]>
Date:   Thu Dec 4 21:27:21 2025 +0000

    arm64: tegra: smaug: Add usb-role-switch support
    
    [ Upstream commit dfa93788dd8b2f9c59adf45ecf592082b1847b7b ]
    
    The USB2 port on Smaug is configured for OTG operation but lacked the
    required 'usb-role-switch' property, leading to a failed probe and a
    non-functioning USB port. Add the property along with setting the default
    role to host.
    
    Signed-off-by: Diogo Ivo <[email protected]>
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: 9467/1: mm: Don't use %pK through printk [+ + +]
Author: Thomas Weissschuh <[email protected]>
Date:   Wed Jan 7 10:56:33 2026 +0100

    ARM: 9467/1: mm: Don't use %pK through printk
    
    [ Upstream commit 012ea376a5948b025f260aa45d2a6ec5d96674ea ]
    
    Restricted pointers ("%pK") were never meant to be used
    through printk(). They can acquire sleeping locks in atomic contexts.
    
    Switch to %px over the more secure %p as this usage is a debugging aid,
    gated behind CONFIG_DEBUG_VIRTUAL and used by WARN().
    
    Link: https://lore.kernel.org/lkml/20250113171731-dc10e3c1-da64-4af0-b767-7c7070468023@linutronix.de/
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Russell King (Oracle) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: dts: allwinner: sun5i-a13-utoo-p66: delete "power-gpios" property [+ + +]
Author: Chen-Yu Tsai <[email protected]>
Date:   Thu Dec 25 18:36:14 2025 +0800

    ARM: dts: allwinner: sun5i-a13-utoo-p66: delete "power-gpios" property
    
    [ Upstream commit 0b2761eb1287bd9f62367cccf6626eb3107cef6f ]
    
    The P66's device tree includes the reference design dtsi files, which
    defines a node and properties for the touchpanel in the common design.
    The P66 dts file then overrides all the properties to match its own
    design, but as the touchpanel model is different, a different schema
    is matched. This other schema uses a different name for the GPIO.
    
    The original submission added the correct GPIO property, but did not
    delete the one inherited from the reference design, causing validation
    errors.
    
    Explicitly delete the incorrect GPIO property.
    
    Fixes: 2a53aff27236 ("ARM: dts: sun5i: Enable touchscreen on Utoo P66")
    Reviewed-by: Jernej Skrabec <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm: dts: lpc32xx: add clocks property to Motor Control PWM device tree node [+ + +]
Author: Vladimir Zapolskiy <[email protected]>
Date:   Mon Dec 29 00:49:07 2025 +0200

    arm: dts: lpc32xx: add clocks property to Motor Control PWM device tree node
    
    [ Upstream commit 71630e581a0e34c03757f5c1706f57c853b92555 ]
    
    Motor Control PWM depends on its own supply clock, the clock gate control
    is present in TIMCLK_CTRL1 register.
    
    Fixes: b7d41c937ed7 ("ARM: LPC32xx: Add the motor PWM to base dts file")
    Signed-off-by: Vladimir Zapolskiy <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: dts: lpc32xx: Set motor PWM #pwm-cells property value to 3 cells [+ + +]
Author: Vladimir Zapolskiy <[email protected]>
Date:   Thu Sep 4 21:46:42 2025 +0300

    ARM: dts: lpc32xx: Set motor PWM #pwm-cells property value to 3 cells
    
    [ Upstream commit 65ae9ea77e1f2a20ad2866f99596df7ccdbd3b95 ]
    
    Since commit 4cd2f417a0ac ("dt-bindings: pwm: Convert lpc32xx-pwm.txt
    to yaml format") both types of PWM controlles on NXP LPC32xx SoC
    fairly gained 3 cells, reflect it in the platform dtsi file.
    
    The change removes a dt binding checker warning:
    
        mpwm@400e8000: #pwm-cells:0:0: 3 was expected
    
    Cc: Uwe Kleine-König <[email protected]>
    Acked-by: Uwe Kleine-König <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Vladimir Zapolskiy <[email protected]>
    Stable-dep-of: 71630e581a0e ("arm: dts: lpc32xx: add clocks property to Motor Control PWM device tree node")
    Signed-off-by: Sasha Levin <[email protected]>

ARM: VDSO: Patch out __vdso_clock_getres() if unavailable [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Tue Dec 23 07:59:17 2025 +0100

    ARM: VDSO: Patch out __vdso_clock_getres() if unavailable
    
    [ Upstream commit b9fecf0dddfc55cd7d02b0011494da3c613f7cde ]
    
    The vDSO code hides symbols which are non-functional.
    __vdso_clock_getres() was not added to this list when it got introduced.
    
    Fixes: 052e76a31b4a ("ARM: 8931/1: Add clock_getres entry point")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: es8328: Add error unwind in resume [+ + +]
Author: Hsieh Hung-En <[email protected]>
Date:   Sat Jan 31 00:00:17 2026 +0800

    ASoC: es8328: Add error unwind in resume
    
    [ Upstream commit 8232e6079ae6f8d3a61d87973cb427385aa469b9 ]
    
    Handle failures in the resume path by unwinding previously enabled
    resources.
    
    If enabling regulators or syncing the regcache fails, disable regulators
    and unprepare the clock to avoid leaking resources and leaving the device
    in a partially resumed state.
    
    Signed-off-by: Hsieh Hung-En <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: fsl_xcvr: Revert fix missing lock in fsl_xcvr_mode_put() [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Tue Feb 10 18:57:14 2026 +0000

    ASoC: fsl_xcvr: Revert fix missing lock in fsl_xcvr_mode_put()
    
    [ Upstream commit 9f16d96e1222391a6b996a1b676bec14fb91e3b2 ]
    
    This reverts commit f51424872760 ("ASoC: fsl_xcvr: fix missing lock in fsl_xcvr_mode_put()").
    
    The original patch attempted to acquire the card->controls_rwsem lock in
    fsl_xcvr_mode_put(). However, this function is called from the upper ALSA
    core function snd_ctl_elem_write(), which already holds the write lock on
    controls_rwsem for the whole put operation. So there is no need to simply
    hold the lock for fsl_xcvr_activate_ctl() again.
    
    Acquiring the read lock while holding the write lock in the same thread
    results in a deadlock and a hung task, as reported by Alexander Stein.
    
    Fixes: f51424872760 ("ASoC: fsl_xcvr: fix missing lock in fsl_xcvr_mode_put()")
    Reported-by: Alexander Stein <[email protected]>
    Closes: https://lore.kernel.org/linux-sound/5056506.GXAFRqVoOG@steina-w/
    Signed-off-by: Ziyi Guo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: wm8962: Add WM8962_ADC_MONOMIX to "3D Coefficients" mask [+ + +]
Author: Sebastian Krzyszkowiak <[email protected]>
Date:   Mon Jan 5 04:02:08 2026 +0100

    ASoC: wm8962: Add WM8962_ADC_MONOMIX to "3D Coefficients" mask
    
    [ Upstream commit 66c26346ae30c883eef70acf9cf9054dfdb4fb2f ]
    
    This bit is handled by a separate control.
    
    Signed-off-by: Sebastian Krzyszkowiak <[email protected]>
    Reviewed-by: Charles Keepax <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: wm8962: Don't report a microphone if it's shorted to ground on plug [+ + +]
Author: Sebastian Krzyszkowiak <[email protected]>
Date:   Mon Jan 5 04:02:10 2026 +0100

    ASoC: wm8962: Don't report a microphone if it's shorted to ground on plug
    
    [ Upstream commit e590752119029d87ce46d725e11245a52d22e1fe ]
    
    This usually means that a TRS plug with no microphone pin has been plugged
    into a TRRS socket. Cases where a user is plugging in a microphone while
    pressing a button will be handled via incoming interrupt after the user
    releases the button, so the microphone will still be detected once it
    becomes usable.
    
    Signed-off-by: Sebastian Krzyszkowiak <[email protected]>
    Reviewed-by: Charles Keepax <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ata: pata_ftide010: Fix some DMA timings [+ + +]
Author: Linus Walleij <[email protected]>
Date:   Tue Feb 3 11:23:01 2026 +0100

    ata: pata_ftide010: Fix some DMA timings
    
    commit ff4a46c278ac6a4b3f39be1492a4568b6dcc6105 upstream.
    
    The FTIDE010 has been missing some timing settings since its
    inception, since the upstream OpenWrt patch was missing these.
    
    The community has since come up with the appropriate timings.
    
    Fixes: be4e456ed3a5 ("ata: Add driver for Faraday Technology FTIDE010")
    Cc: [email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Niklas Cassel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
atm: fore200e: fix use-after-free in tasklets during device removal [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Tue Feb 10 17:45:37 2026 +0800

    atm: fore200e: fix use-after-free in tasklets during device removal
    
    [ Upstream commit 8930878101cd40063888a68af73b1b0f8b6c79bc ]
    
    When the PCA-200E or SBA-200E adapter is being detached, the fore200e
    is deallocated. However, the tx_tasklet or rx_tasklet may still be running
    or pending, leading to use-after-free bug when the already freed fore200e
    is accessed again in fore200e_tx_tasklet() or fore200e_rx_tasklet().
    
    One of the race conditions can occur as follows:
    
    CPU 0 (cleanup)           | CPU 1 (tasklet)
    fore200e_pca_remove_one() | fore200e_interrupt()
      fore200e_shutdown()     |   tasklet_schedule()
        kfree(fore200e)       | fore200e_tx_tasklet()
                              |   fore200e-> // UAF
    
    Fix this by ensuring tx_tasklet or rx_tasklet is properly canceled before
    the fore200e is released. Add tasklet_kill() in fore200e_shutdown() to
    synchronize with any pending or running tasklets. Moreover, since
    fore200e_reset() could prevent further interrupts or data transfers,
    the tasklet_kill() should be placed after fore200e_reset() to prevent
    the tasklet from being rescheduled in fore200e_interrupt(). Finally,
    it only needs to do tasklet_kill() when the fore200e state is greater
    than or equal to FORE200E_STATE_IRQ, since tasklets are uninitialized
    in earlier states. In a word, the tasklet_kill() should be placed in
    the FORE200E_STATE_IRQ branch within the switch...case structure.
    
    This bug was identified through static analysis.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: [email protected]
    Suggested-by: Jijie Shao <[email protected]>
    Signed-off-by: Duoming Zhou <[email protected]>
    Reviewed-by: Jijie Shao <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
audit: add fchmodat2() to change attributes class [+ + +]
Author: Jeffrey Bencteux <[email protected]>
Date:   Mon Nov 24 20:49:30 2025 +0100

    audit: add fchmodat2() to change attributes class
    
    [ Upstream commit 4f493a6079b588cf1f04ce5ed6cdad45ab0d53dc ]
    
    fchmodat2(), introduced in version 6.6 is currently not in the change
    attribute class of audit. Calling fchmodat2() to change a file
    attribute in the same fashion than chmod() or fchmodat() will bypass
    audit rules such as:
    
    -w /tmp/test -p rwa -k test_rwa
    
    The current patch adds fchmodat2() to the change attributes class.
    
    Signed-off-by: Jeffrey Bencteux <[email protected]>
    Signed-off-by: Paul Moore <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

audit: add missing syscalls to read class [+ + +]
Author: Jeffrey Bencteux <[email protected]>
Date:   Sat Dec 27 09:39:24 2025 +0100

    audit: add missing syscalls to read class
    
    [ Upstream commit bcb90a2834c7393c26df9609b889a3097b7700cd ]
    
    The "at" variant of getxattr() and listxattr() are missing from the
    audit read class. Calling getxattrat() or listxattrat() on a file to
    read its extended attributes will bypass audit rules such as:
    
    -w /tmp/test -p rwa -k test_rwa
    
    The current patch adds missing syscalls to the audit read class.
    
    Signed-off-by: Jeffrey Bencteux <[email protected]>
    Signed-off-by: Paul Moore <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
auxdisplay: arm-charlcd: fix release_mem_region() size [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Tue Dec 16 18:47:13 2025 +0100

    auxdisplay: arm-charlcd: fix release_mem_region() size
    
    [ Upstream commit b5c23a4d291d2ac1dfdd574a68a3a68c8da3069e ]
    
    It seems like, after the request_mem_region(), the corresponding
    release_mem_region() must take the same size. This was done
    in (now removed due to previous refactoring) charlcd_remove()
    but not in the error path in charlcd_probe().
    
    Fixes: ce8962455e90 ("ARM: 6214/2: driver for the character LCD found in ARM refdesigns")
    Signed-off-by: Thomas Fourier <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
backlight: qcom-wled: Support ovp values for PMI8994 [+ + +]
Author: Barnabás Czémán <[email protected]>
Date:   Fri Jan 16 08:07:34 2026 +0100

    backlight: qcom-wled: Support ovp values for PMI8994
    
    [ Upstream commit f29f972a6e7e3f187ea4d89b98a76c1981ca4d53 ]
    
    WLED4 found in PMI8994 supports different ovp values.
    
    Fixes: 6fc632d3e3e0 ("video: backlight: qcom-wled: Add PMI8994 compatible")
    Signed-off-by: Barnabás Czémán <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Daniel Thompson (RISCstar) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
binder: don't use %pK through printk [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Wed Jan 7 15:29:50 2026 +0100

    binder: don't use %pK through printk
    
    [ Upstream commit 56d21267663bad91e8b10121224ec46366a7937e ]
    
    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.
    
    There are still a few users of %pK left, but these use it through
    seq_file, for which its usage is safe.
    
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Acked-by: Carlos Llamas <[email protected]>
    Reviewed-by: Alice Ryhl <[email protected]>
    Link: https://patch.msgid.link/20260107-restricted-pointers-binder-v1-1-181018bf3812@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
blk-mq-debugfs: add missing debugfs_mutex in blk_mq_debugfs_register_hctxs() [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Mon Feb 2 16:05:22 2026 +0800

    blk-mq-debugfs: add missing debugfs_mutex in blk_mq_debugfs_register_hctxs()
    
    [ Upstream commit 9d20fd6ce1ba9733cd5ac96fcab32faa9fc404dd ]
    
    In blk_mq_update_nr_hw_queues(), debugfs_mutex is not held while
    creating debugfs entries for hctxs. Hence add debugfs_mutex there,
    it's safe because queue is not frozen.
    
    Signed-off-by: Yu Kuai <[email protected]>
    Reviewed-by: Nilay Shroff <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: btusb: Add device ID for Realtek RTL8761BU [+ + +]
Author: Jacopo Scannella <[email protected]>
Date:   Tue Jan 20 10:13:04 2026 +0100

    Bluetooth: btusb: Add device ID for Realtek RTL8761BU
    
    [ Upstream commit cc6383d4f0cf6127c0552f94cae517a06ccc6b17 ]
    
    Add USB device ID 0x2c0a:0x8761 to the btusb driver fo the Realtek
    RTL8761BU Bluetooth adapter.
    
    Reference:
    https://www.startech.com/en-us/networking-io/av53c1-usb-bluetooth
    
    Signed-off-by: Jacopo Scannella <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_conn: use mod_delayed_work for active mode timeout [+ + +]
Author: Stefan Sørensen <[email protected]>
Date:   Tue Dec 16 10:20:09 2025 +0100

    Bluetooth: hci_conn: use mod_delayed_work for active mode timeout
    
    [ Upstream commit 49d0901e260739de2fcc90c0c29f9e31e39a2d9b ]
    
    hci_conn_enter_active_mode() uses queue_delayed_work() with the
    intention that the work will run after the given timeout. However,
    queue_delayed_work() does nothing if the work is already queued, so
    depending on the link policy we may end up putting the connection
    into idle mode every hdev->idle_timeout ms.
    
    Use mod_delayed_work() instead so the work is queued if not already
    queued, and the timeout is updated otherwise.
    
    Signed-off-by: Stefan Sørensen <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_qca: Cleanup on all setup failures [+ + +]
Author: Jinwang Li <[email protected]>
Date:   Thu Feb 5 14:26:00 2026 +0800

    Bluetooth: hci_qca: Cleanup on all setup failures
    
    [ Upstream commit 5c4e9a8b18457ad28b57069ef0f14661e3192b2e ]
    
    The setup process previously combined error handling and retry gating
    under one condition. As a result, the final failed attempt exited
    without performing cleanup.
    
    Update the failure path to always perform power and port cleanup on
    setup failure, and reopen the port only when retrying.
    
    Fixes: 9e80587aba4c ("Bluetooth: hci_qca: Enhance retry logic in qca_setup")
    Signed-off-by: Jinwang Li <[email protected]>
    Reviewed-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: L2CAP: Fix invalid response to L2CAP_ECRED_RECONF_REQ [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Tue Feb 3 15:16:16 2026 -0500

    Bluetooth: L2CAP: Fix invalid response to L2CAP_ECRED_RECONF_REQ
    
    [ Upstream commit 7accb1c4321acb617faf934af59d928b0b047e2b ]
    
    This fixes responding with an invalid result caused by checking the
    wrong size of CID which should have been (cmd_len - sizeof(*req)) and
    on top of it the wrong result was use L2CAP_CR_LE_INVALID_PARAMS which
    is invalid/reserved for reconf when running test like L2CAP/ECFC/BI-03-C:
    
    > ACL Data RX: Handle 64 flags 0x02 dlen 14
          LE L2CAP: Enhanced Credit Reconfigure Request (0x19) ident 2 len 6
            MTU: 64
            MPS: 64
            Source CID: 64
    < ACL Data TX: Handle 64 flags 0x00 dlen 10
          LE L2CAP: Enhanced Credit Reconfigure Respond (0x1a) ident 2 len 2
    !        Result: Reserved (0x000c)
             Result: Reconfiguration failed - one or more Destination CIDs invalid (0x0003)
    
    Fiix L2CAP/ECFC/BI-04-C which expects L2CAP_RECONF_INVALID_MPS (0x0002)
    when more than one channel gets its MPS reduced:
    
    > ACL Data RX: Handle 64 flags 0x02 dlen 16
          LE L2CAP: Enhanced Credit Reconfigure Request (0x19) ident 2 len 8
            MTU: 264
            MPS: 99
            Source CID: 64
    !       Source CID: 65
    < ACL Data TX: Handle 64 flags 0x00 dlen 10
          LE L2CAP: Enhanced Credit Reconfigure Respond (0x1a) ident 2 len 2
    !        Result: Reconfiguration successful (0x0000)
             Result: Reconfiguration failed - reduction in size of MPS not allowed for more than one channel at a time (0x0002)
    
    Fix L2CAP/ECFC/BI-05-C when SCID is invalid (85 unconnected):
    
    > ACL Data RX: Handle 64 flags 0x02 dlen 14
          LE L2CAP: Enhanced Credit Reconfigure Request (0x19) ident 2 len 6
            MTU: 65
            MPS: 64
    !        Source CID: 85
    < ACL Data TX: Handle 64 flags 0x00 dlen 10
          LE L2CAP: Enhanced Credit Reconfigure Respond (0x1a) ident 2 len 2
    !        Result: Reconfiguration successful (0x0000)
             Result: Reconfiguration failed - one or more Destination CIDs invalid (0x0003)
    
    Fix L2CAP/ECFC/BI-06-C when MPS < L2CAP_ECRED_MIN_MPS (64):
    
    > ACL Data RX: Handle 64 flags 0x02 dlen 14
          LE L2CAP: Enhanced Credit Reconfigure Request (0x19) ident 2 len 6
            MTU: 672
    !       MPS: 63
            Source CID: 64
    < ACL Data TX: Handle 64 flags 0x00 dlen 10
          LE L2CAP: Enhanced Credit Reconfigure Respond (0x1a) ident 2 len 2
    !       Result: Reconfiguration failed - reduction in size of MPS not allowed for more than one channel at a time (0x0002)
            Result: Reconfiguration failed - other unacceptable parameters (0x0004)
    
    Fix L2CAP/ECFC/BI-07-C when MPS reduced for more than one channel:
    
    > ACL Data RX: Handle 64 flags 0x02 dlen 16
          LE L2CAP: Enhanced Credit Reconfigure Request (0x19) ident 3 len 8
            MTU: 84
    !       MPS: 71
            Source CID: 64
    !        Source CID: 65
    < ACL Data TX: Handle 64 flags 0x00 dlen 10
          LE L2CAP: Enhanced Credit Reconfigure Respond (0x1a) ident 2 len 2
    !       Result: Reconfiguration successful (0x0000)
            Result: Reconfiguration failed - reduction in size of MPS not allowed for more than one channel at a time (0x0002)
    
    Link: https://github.com/bluez/bluez/issues/1865
    Fixes: 15f02b910562 ("Bluetooth: L2CAP: Add initial code for Enhanced Credit Based Mode")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Fri Feb 13 13:33:33 2026 -0500

    Bluetooth: L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ
    
    [ Upstream commit 138d7eca445ef37a0333425d269ee59900ca1104 ]
    
    This adds a check for encryption key size upon receiving
    L2CAP_LE_CONN_REQ which is required by L2CAP/LE/CFC/BV-15-C which
    expects L2CAP_CR_LE_BAD_KEY_SIZE.
    
    Link: https://lore.kernel.org/linux-bluetooth/5782243.rdbgypaU67@n9w6sw14/
    Fixes: 27e2d4c8d28b ("Bluetooth: Add basic LE L2CAP connect request receiving support")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Tested-by: Christian Eggers <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: L2CAP: Fix response to L2CAP_ECRED_CONN_REQ [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed Feb 11 15:18:03 2026 -0500

    Bluetooth: L2CAP: Fix response to L2CAP_ECRED_CONN_REQ
    
    [ Upstream commit 05761c2c2b5bfec85c47f60c903c461e9b56cf87 ]
    
    Similar to 03dba9cea72f ("Bluetooth: L2CAP: Fix not responding with
    L2CAP_CR_LE_ENCRYPTION") the result code L2CAP_CR_LE_ENCRYPTION shall
    be used when BT_SECURITY_MEDIUM is set since that means security mode 2
    which mean it doesn't require authentication which results in
    qualification test L2CAP/ECFC/BV-32-C failing.
    
    Link: https://github.com/bluez/bluez/issues/1871
    Fixes: 15f02b910562 ("Bluetooth: L2CAP: Add initial code for Enhanced Credit Based Mode")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bonding: alb: fix UAF in rlb_arp_recv during bond up/down [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Wed Feb 18 06:09:19 2026 +0000

    bonding: alb: fix UAF in rlb_arp_recv during bond up/down
    
    [ Upstream commit e6834a4c474697df23ab9948fd3577b26bf48656 ]
    
    The ALB RX path may access rx_hashtbl concurrently with bond
    teardown. During rapid bond up/down cycles, rlb_deinitialize()
    frees rx_hashtbl while RX handlers are still running, leading
    to a null pointer dereference detected by KASAN.
    
    However, the root cause is that rlb_arp_recv() can still be accessed
    after setting recv_probe to NULL, which is actually a use-after-free
    (UAF) issue. That is the reason for using the referenced commit in the
    Fixes tag.
    
    [  214.174138] Oops: general protection fault, probably for non-canonical address 0xdffffc000000001d: 0000 [#1] SMP KASAN PTI
    [  214.186478] KASAN: null-ptr-deref in range [0x00000000000000e8-0x00000000000000ef]
    [  214.194933] CPU: 30 UID: 0 PID: 2375 Comm: ping Kdump: loaded Not tainted 6.19.0-rc8+ #2 PREEMPT(voluntary)
    [  214.205907] Hardware name: Dell Inc. PowerEdge R730/0WCJNT, BIOS 2.14.0 01/14/2022
    [  214.214357] RIP: 0010:rlb_arp_recv+0x505/0xab0 [bonding]
    [  214.220320] Code: 0f 85 2b 05 00 00 48 b8 00 00 00 00 00 fc ff df 40 0f b6 ed 48 c1 e5 06 49 03 ad 78 01 00 00 48 8d 7d 28 48 89 fa 48 c1 ea 03 <0f> b6
     04 02 84 c0 74 06 0f 8e 12 05 00 00 80 7d 28 00 0f 84 8c 00
    [  214.241280] RSP: 0018:ffffc900073d8870 EFLAGS: 00010206
    [  214.247116] RAX: dffffc0000000000 RBX: ffff888168556822 RCX: ffff88816855681e
    [  214.255082] RDX: 000000000000001d RSI: dffffc0000000000 RDI: 00000000000000e8
    [  214.263048] RBP: 00000000000000c0 R08: 0000000000000002 R09: ffffed11192021c8
    [  214.271013] R10: ffff8888c9010e43 R11: 0000000000000001 R12: 1ffff92000e7b119
    [  214.278978] R13: ffff8888c9010e00 R14: ffff888168556822 R15: ffff888168556810
    [  214.286943] FS:  00007f85d2d9cb80(0000) GS:ffff88886ccb3000(0000) knlGS:0000000000000000
    [  214.295966] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  214.302380] CR2: 00007f0d047b5e34 CR3: 00000008a1c2e002 CR4: 00000000001726f0
    [  214.310347] Call Trace:
    [  214.313070]  <IRQ>
    [  214.315318]  ? __pfx_rlb_arp_recv+0x10/0x10 [bonding]
    [  214.320975]  bond_handle_frame+0x166/0xb60 [bonding]
    [  214.326537]  ? __pfx_bond_handle_frame+0x10/0x10 [bonding]
    [  214.332680]  __netif_receive_skb_core.constprop.0+0x576/0x2710
    [  214.339199]  ? __pfx_arp_process+0x10/0x10
    [  214.343775]  ? sched_balance_find_src_group+0x98/0x630
    [  214.349513]  ? __pfx___netif_receive_skb_core.constprop.0+0x10/0x10
    [  214.356513]  ? arp_rcv+0x307/0x690
    [  214.360311]  ? __pfx_arp_rcv+0x10/0x10
    [  214.364499]  ? __lock_acquire+0x58c/0xbd0
    [  214.368975]  __netif_receive_skb_one_core+0xae/0x1b0
    [  214.374518]  ? __pfx___netif_receive_skb_one_core+0x10/0x10
    [  214.380743]  ? lock_acquire+0x10b/0x140
    [  214.385026]  process_backlog+0x3f1/0x13a0
    [  214.389502]  ? process_backlog+0x3aa/0x13a0
    [  214.394174]  __napi_poll.constprop.0+0x9f/0x370
    [  214.399233]  net_rx_action+0x8c1/0xe60
    [  214.403423]  ? __pfx_net_rx_action+0x10/0x10
    [  214.408193]  ? lock_acquire.part.0+0xbd/0x260
    [  214.413058]  ? sched_clock_cpu+0x6c/0x540
    [  214.417540]  ? mark_held_locks+0x40/0x70
    [  214.421920]  handle_softirqs+0x1fd/0x860
    [  214.426302]  ? __pfx_handle_softirqs+0x10/0x10
    [  214.431264]  ? __neigh_event_send+0x2d6/0xf50
    [  214.436131]  do_softirq+0xb1/0xf0
    [  214.439830]  </IRQ>
    
    The issue is reproducible by repeatedly running
    ip link set bond0 up/down while receiving ARP messages, where
    rlb_arp_recv() can race with rlb_deinitialize() and dereference
    a freed rx_hashtbl entry.
    
    Fix this by setting recv_probe to NULL and then calling
    synchronize_net() to wait for any concurrent RX processing to finish.
    This ensures that no RX handler can access rx_hashtbl after it is freed
    in bond_alb_deinitialize().
    
    Reported-by: Liang Li <[email protected]>
    Fixes: 3aba891dde38 ("bonding: move processing of recv handlers into handle_frame()")
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Acked-by: Jay Vosburgh <[email protected]>
    Signed-off-by: Hangbin Liu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bonding: only set speed/duplex to unknown, if getting speed failed [+ + +]
Author: Thomas Bogendoerfer <[email protected]>
Date:   Tue Feb 3 15:11:52 2026 +0100

    bonding: only set speed/duplex to unknown, if getting speed failed
    
    [ Upstream commit 48dec8d88af96039a4a17b8c2f148f2a4066e195 ]
    
    bond_update_speed_duplex() first set speed/duplex to unknown and
    then asks slave driver for current speed/duplex. Since getting
    speed/duplex might take longer there is a race, where this false state
    is visible by /proc/net/bonding. With commit 691b2bf14946 ("bonding:
     update port speed when getting bond speed") this race gets more visible,
    if user space is calling ethtool on a regular base.
    
    Fix this by only setting speed/duplex to unknown, if link speed is
    really unknown/unusable.
    
    Fixes: 98f41f694f46 ("bonding:update speed/duplex for NETDEV_CHANGE")
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Acked-by: Jay Vosburgh <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Reviewed-by: Hangbin Liu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: verifier improvement in 32bit shift sign extension pattern [+ + +]
Author: Cupertino Miranda <[email protected]>
Date:   Tue Dec 2 18:02:19 2025 +0000

    bpf: verifier improvement in 32bit shift sign extension pattern
    
    [ Upstream commit d18dec4b8990048ce75f0ece32bb96b3fbd3f422 ]
    
    This patch improves the verifier to correctly compute bounds for
    sign extension compiler pattern composed of left shift by 32bits
    followed by a sign right shift by 32bits.  Pattern in the verifier was
    limitted to positive value bounds and would reset bound computation for
    negative values.  New code allows both positive and negative values for
    sign extension without compromising bound computation and verifier to
    pass.
    
    This change is required by GCC which generate such pattern, and was
    detected in the context of systemd, as described in the following GCC
    bugzilla: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119731
    
    Three new tests were added in verifier_subreg.c.
    
    Signed-off-by: Cupertino Miranda  <[email protected]>
    Signed-off-by: Andrew Pinski  <[email protected]>
    Acked-by: Eduard Zingerman <[email protected]>
    Cc: David Faust  <[email protected]>
    Cc: Jose Marchesi  <[email protected]>
    Cc: Elena Zannoni  <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpftool: Fix truncated netlink dumps [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Tue Feb 17 11:41:50 2026 -0800

    bpftool: Fix truncated netlink dumps
    
    [ Upstream commit 3b39d73cc3379360a33eb583b17f21fe55e1288e ]
    
    Netlink requires that the recv buffer used during dumps is at least
    min(PAGE_SIZE, 8k) (see the man page). Otherwise the messages will
    get truncated. Make sure bpftool follows this requirement, avoid
    missing information on systems with large pages.
    
    Acked-by: Quentin Monnet <[email protected]>
    Fixes: 7084566a236f ("tools/bpftool: Remove libbpf_internal.h usage in bpftool")
    Signed-off-by: Jakub Kicinski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: continue trimming remaining devices on failure [+ + +]
Author: jinbaohong <[email protected]>
Date:   Wed Jan 28 07:06:38 2026 +0000

    btrfs: continue trimming remaining devices on failure
    
    [ Upstream commit 912d1c6680bdb40b72b1b9204706f32b6eb842c3 ]
    
    Commit 93bba24d4b5a ("btrfs: Enhance btrfs_trim_fs function to handle
    error better") intended to make device trimming continue even if one
    device fails, tracking failures and reporting them at the end. However,
    it used 'break' instead of 'continue', causing the loop to exit on the
    first device failure.
    
    Fix this by replacing 'break' with 'continue'.
    
    Fixes: 93bba24d4b5a ("btrfs: Enhance btrfs_trim_fs function to handle error better")
    CC: [email protected] # 5.4+
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Robbie Ko <[email protected]>
    Signed-off-by: jinbaohong <[email protected]>
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: fix invalid leaf access in btrfs_quota_enable() if ref key not found [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Feb 4 17:15:53 2026 +0000

    btrfs: fix invalid leaf access in btrfs_quota_enable() if ref key not found
    
    [ Upstream commit ecb7c2484cfc83a93658907580035a8adf1e0a92 ]
    
    If btrfs_search_slot_for_read() returns 1, it means we did not find any
    key greater than or equals to the key we asked for, meaning we have
    reached the end of the tree and therefore the path is not valid. If
    this happens we need to break out of the loop and stop, instead of
    continuing and accessing an invalid path.
    
    Fixes: 5223cc60b40a ("btrfs: drop the path before adding qgroup items when enabling qgroups")
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: qgroup: return correct error when deleting qgroup relation item [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Tue Jan 20 19:35:23 2026 +0000

    btrfs: qgroup: return correct error when deleting qgroup relation item
    
    [ Upstream commit 51b1fcf71c88c3c89e7dcf07869c5de837b1f428 ]
    
    If we fail to delete the second qgroup relation item, we end up returning
    success or -ENOENT in case the first item does not exist, instead of
    returning the error from the second item deletion.
    
    Fixes: 73798c465b66 ("btrfs: qgroup: Try our best to delete qgroup relations")
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: replace BUG() with error handling in __btrfs_balance() [+ + +]
Author: Adarsh Das <[email protected]>
Date:   Tue Feb 3 22:53:57 2026 +0530

    btrfs: replace BUG() with error handling in __btrfs_balance()
    
    [ Upstream commit be6324a809dbda76d5fdb23720ad9b20e5c1905c ]
    
    We search with offset (u64)-1 which should never match exactly.
    Previously this was handled with BUG(). Now logs an error
    and return -EUCLEAN.
    
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Adarsh Das <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bus: fsl-mc: fix an error handling in fsl_mc_device_add() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Sat Jan 24 18:20:54 2026 +0800

    bus: fsl-mc: fix an error handling in fsl_mc_device_add()
    
    [ Upstream commit 52f527d0916bcdd7621a0c9e7e599b133294d495 ]
    
    In fsl_mc_device_add(), device_initialize() is called first.
    put_device() should be called to drop the reference if error
    occurs. And other resources would be released via put_device
    -> fsl_mc_device_release. So remove redundant kfree() in
    error handling path.
    
    Fixes: bbf9d17d9875 ("staging: fsl-mc: Freescale Management Complex (fsl-mc) bus driver")
    Cc: [email protected]
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Su Hui <[email protected]>
    Suggested-by: Christophe Leroy (CS GROUP) <[email protected]>
    Signed-off-by: Haoxiang Li <[email protected]>
    Reviewed-by: Ioana Ciornei <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christophe Leroy (CS GROUP) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ceph: supply snapshot context in ceph_zero_partial_object() [+ + +]
Author: ethanwu <[email protected]>
Date:   Thu Sep 25 18:42:05 2025 +0800

    ceph: supply snapshot context in ceph_zero_partial_object()
    
    [ Upstream commit f16bd3fa74a2084ee7e16a8a2be7e7399b970907 ]
    
    The ceph_zero_partial_object function was missing proper snapshot
    context for its OSD write operations, which could lead to data
    inconsistencies in snapshots.
    
    Reproducer:
    ../src/vstart.sh --new -x --localhost --bluestore
    ./bin/ceph auth caps client.fs_a mds 'allow rwps fsname=a' mon 'allow r fsname=a' osd 'allow rw tag cephfs data=a'
    mount -t ceph [email protected]=/ /mnt/mycephfs/ -o conf=./ceph.conf
    dd if=/dev/urandom of=/mnt/mycephfs/foo bs=64K count=1
    mkdir /mnt/mycephfs/.snap/snap1
    md5sum /mnt/mycephfs/.snap/snap1/foo
    fallocate -p -o 0 -l 4096 /mnt/mycephfs/foo
    echo 3 > /proc/sys/vm/drop/caches
    md5sum /mnt/mycephfs/.snap/snap1/foo # get different md5sum!!
    
    Cc: [email protected]
    Fixes: ad7a60de882ac ("ceph: punch hole support")
    Signed-off-by: ethanwu <[email protected]>
    Reviewed-by: Viacheslav Dubeyko <[email protected]>
    Tested-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Ilya Dryomov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
char: tpm: cr50: Remove IRQF_ONESHOT [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 28 10:55:29 2026 +0100

    char: tpm: cr50: Remove IRQF_ONESHOT
    
    [ Upstream commit 1affd29ffbd50125a5492c6be1dbb1f04be18d4f ]
    
    Passing IRQF_ONESHOT ensures that the interrupt source is masked until
    the secondary (threaded) handler is done. If only a primary handler is
    used then the flag makes no sense because the interrupt can not fire
    (again) while its handler is running.
    
    The flag also prevents force-threading of the primary handler and the
    irq-core will warn about this.
    
    Remove IRQF_ONESHOT from irqflags.
    
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
clk: meson: gxbb: Limit the HDMI PLL OD to /4 on GXL/GXM SoCs [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Mon Jan 5 21:47:08 2026 +0100

    clk: meson: gxbb: Limit the HDMI PLL OD to /4 on GXL/GXM SoCs
    
    [ Upstream commit 5b1a43950fd3162af0ce52b13c14a2d29b179d4f ]
    
    GXBB has the HDMI PLL OD in the HHI_HDMI_PLL_CNTL2 register while for
    GXL/GXM the OD has moved to HHI_HDMI_PLL_CNTL3. At first glance the rest
    of the OD setup seems identical.
    
    However, looking at the downstream kernel sources as well as testing
    shows that GXL only supports three OD values:
    - register value 0 means: divide by 1
    - register value 1 means: divide by 2
    - register value 2 means: divide by 4
    
    Using register value 3 (which on GXBB means: divide by 8) still divides
    by 4 as verified using meson-clk-measure. Downstream sources are also
    only using OD register values 0, 1 and 2 for GXL (while for GXBB the
    downstream kernel sources are also using value 3).
    
    Add clk_div_table and have it replace the CLK_DIVIDER_POWER_OF_TWO flag
    to make the kernel's view of this register match with how the hardware
    actually works.
    
    Fixes: 69d92293274b ("clk: meson: add the gxl hdmi pll")
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jerome Brunet <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: microchip: core: correct return value on *_get_parent() [+ + +]
Author: Brian Masney <[email protected]>
Date:   Fri Dec 5 14:46:28 2025 -0500

    clk: microchip: core: correct return value on *_get_parent()
    
    [ Upstream commit 5df96d141cccb37f0c3112a22fc1112ea48e9246 ]
    
    roclk_get_parent() and sclk_get_parent() has the possibility of
    returning -EINVAL, however the framework expects this call to always
    succeed since the return value is unsigned.
    
    If there is no parent map defined, then the current value programmed in
    the hardware is used. Let's use that same value in the case where
    -EINVAL is currently returned.
    
    This index is only used by clk_core_get_parent_by_index(), and it
    validates that it doesn't overflow the number of available parents.
    
    Reported-by: kernel test robot <[email protected]>
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Signed-off-by: Brian Masney <[email protected]>
    Reviewed-by: Claudiu Beznea <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: Move clk_{save,restore}_context() to COMMON_CLK section [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Mon Dec 1 10:42:26 2025 +0100

    clk: Move clk_{save,restore}_context() to COMMON_CLK section
    
    [ Upstream commit f47c1b77d0a2a9c0d49ec14302e74f933398d1a3 ]
    
    The clk_save_context() and clk_restore_context() helpers are only
    implemented by the Common Clock Framework.  They are not available when
    using legacy clock frameworks.  Dummy implementations are provided, but
    only if no clock support is available at all.
    
    Hence when CONFIG_HAVE_CLK=y, but CONFIG_COMMON_CLK is not enabled:
    
        m68k-linux-gnu-ld: drivers/net/phy/air_en8811h.o: in function `en8811h_resume':
        air_en8811h.c:(.text+0x83e): undefined reference to `clk_restore_context'
        m68k-linux-gnu-ld: drivers/net/phy/air_en8811h.o: in function `en8811h_suspend':
        air_en8811h.c:(.text+0x856): undefined reference to `clk_save_context'
    
    Fix this by moving forward declarations and dummy implementions from the
    HAVE_CLK to the COMMON_CLK section.
    
    Fixes: 8b95d1ce3300c411 ("clk: Add functions to save/restore clock context en-masse")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: dispcc-sdm845: Enable parents for pixel clocks [+ + +]
Author: Petr Hodina <[email protected]>
Date:   Wed Jan 7 12:44:43 2026 +0100

    clk: qcom: dispcc-sdm845: Enable parents for pixel clocks
    
    [ Upstream commit a1d63493634e98360140027fef49d82b1ff0a267 ]
    
    Add CLK_OPS_PARENT_ENABLE to MDSS pixel clock sources to ensure parent
    clocks are enabled during clock operations, preventing potential
    stability issues during display configuration.
    
    Fixes: 81351776c9fb ("clk: qcom: Add display clock controller driver for SDM845")
    Signed-off-by: Petr Hodina <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: David Heidelberg <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: gcc-msm8953: Remove ALWAYS_ON flag from cpp_gdsc [+ + +]
Author: Barnabás Czémán <[email protected]>
Date:   Mon Nov 17 18:58:47 2025 +0100

    clk: qcom: gcc-msm8953: Remove ALWAYS_ON flag from cpp_gdsc
    
    [ Upstream commit 5f613e7034187179a9d088ff5fd02b1089d0cf20 ]
    
    cpp_gdsc should not be always on, ALWAYS_ON flag was set accidentally.
    
    Fixes: 9bb6cfc3c77e ("clk: qcom: Add Global Clock Controller driver for MSM8953")
    Signed-off-by: Barnabás Czémán <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/20251117-fix-gdsc-cpp-msm8917-msm8953-v1-1-db33adcff28a@mainlining.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: rcg2: compute 2d using duty fraction directly [+ + +]
Author: Taniya Das <[email protected]>
Date:   Mon Jan 5 16:09:50 2026 +0530

    clk: qcom: rcg2: compute 2d using duty fraction directly
    
    [ Upstream commit d6205a1878dd4cc9664c4b4829b68a29c0426efc ]
    
    The duty-cycle calculation in clk_rcg2_set_duty_cycle() currently
    derives an intermediate percentage `duty_per = (num * 100) / den` and
    then computes:
    
        d = DIV_ROUND_CLOSEST(n * duty_per * 2, 100);
    
    This introduces integer truncation at the percentage step (division by
    `den`) and a redundant scaling by 100, which can reduce precision for
    large `den` and skew the final rounding.
    
    Compute `2d` directly from the duty fraction to preserve precision and
    avoid the unnecessary scaling:
    
        d = DIV_ROUND_CLOSEST(n * duty->num * 2, duty->den);
    
    This keeps the intended formula `d ≈ n * 2 * (num/den)` while performing
    a single, final rounded division, improving accuracy especially for small
    duty cycles or large denominators. It also removes the unused `duty_per`
    variable, simplifying the code.
    
    There is no functional changes beyond improved numerical accuracy.
    
    Fixes: 7f891faf596ed ("clk: qcom: clk-rcg2: Add support for duty-cycle for RCG")
    Signed-off-by: Taniya Das <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: Return correct error code in qcom_cc_probe_by_index() [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Wed Dec 17 12:13:38 2025 +0800

    clk: qcom: Return correct error code in qcom_cc_probe_by_index()
    
    [ Upstream commit 1e07ebe744fb522983bd52a4a6148601675330c7 ]
    
    When devm_platform_ioremap_resource() fails, it returns various
    error codes. Returning a hardcoded -ENOMEM masks the actual
    failure reason.
    
    Use PTR_ERR() to propagate the actual error code returned by
    devm_platform_ioremap_resource() instead of -ENOMEM.
    
    Fixes: 75e0a1e30191 ("clk: qcom: define probe by index API as common API")
    Signed-off-by: Haotian Zhang <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: tegra: tegra124-emc: Fix potential memory leak in tegra124_clk_register_emc() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Thu Jan 15 13:05:42 2026 +0800

    clk: tegra: tegra124-emc: Fix potential memory leak in tegra124_clk_register_emc()
    
    [ Upstream commit fce0d0bd9c20fefd180ea9e8362d619182f97a1d ]
    
    If clk_register() fails, call kfree to release "tegra".
    
    Fixes: 2db04f16b589 ("clk: tegra: Add EMC clock driver")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Reviewed-by: Brian Masney <[email protected]>
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clocksource/drivers/sh_tmu: Always leave device running after probe [+ + +]
Author: Niklas Söderlund <[email protected]>
Date:   Tue Dec 2 23:13:41 2025 +0100

    clocksource/drivers/sh_tmu: Always leave device running after probe
    
    [ Upstream commit b1278972b08e480990e2789bdc6a7c918bc349be ]
    
    The TMU device can be used as both a clocksource and a clockevent
    provider. The driver tries to be smart and power itself on and off, as
    well as enabling and disabling its clock when it's not in operation.
    This behavior is slightly altered if the TMU is used as an early
    platform device in which case the device is left powered on after probe,
    but the clock is still enabled and disabled at runtime.
    
    This has worked for a long time, but recent improvements in PREEMPT_RT
    and PROVE_LOCKING have highlighted an issue. As the TMU registers itself
    as a clockevent provider, clockevents_register_device(), it needs to use
    raw spinlocks internally as this is the context of which the clockevent
    framework interacts with the TMU driver. However in the context of
    holding a raw spinlock the TMU driver can't really manage its power
    state or clock with calls to pm_runtime_*() and clk_*() as these calls
    end up in other platform drivers using regular spinlocks to control
    power and clocks.
    
    This mix of spinlock contexts trips a lockdep warning.
    
        =============================
        [ BUG: Invalid wait context ]
        6.18.0-arm64-renesas-09926-gee959e7c5e34 #1 Not tainted
        -----------------------------
        swapper/0/0 is trying to lock:
        ffff000008c9e180 (&dev->power.lock){-...}-{3:3}, at: __pm_runtime_resume+0x38/0x88
        other info that might help us debug this:
        context-{5:5}
        1 lock held by swapper/0/0:
        ccree e6601000.crypto: ARM CryptoCell 630P Driver: HW version 0xAF400001/0xDCC63000, Driver version 5.0
         #0: ffff8000817ec298
        ccree e6601000.crypto: ARM ccree device initialized
         (tick_broadcast_lock){-...}-{2:2}, at: __tick_broadcast_oneshot_control+0xa4/0x3a8
        stack backtrace:
        CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.18.0-arm64-renesas-09926-gee959e7c5e34 #1 PREEMPT
        Hardware name: Renesas Salvator-X 2nd version board based on r8a77965 (DT)
        Call trace:
         show_stack+0x14/0x1c (C)
         dump_stack_lvl+0x6c/0x90
         dump_stack+0x14/0x1c
         __lock_acquire+0x904/0x1584
         lock_acquire+0x220/0x34c
         _raw_spin_lock_irqsave+0x58/0x80
         __pm_runtime_resume+0x38/0x88
         sh_tmu_clock_event_set_oneshot+0x84/0xd4
         clockevents_switch_state+0xfc/0x13c
         tick_broadcast_set_event+0x30/0xa4
         __tick_broadcast_oneshot_control+0x1e0/0x3a8
         tick_broadcast_oneshot_control+0x30/0x40
         cpuidle_enter_state+0x40c/0x680
         cpuidle_enter+0x30/0x40
         do_idle+0x1f4/0x280
         cpu_startup_entry+0x34/0x40
         kernel_init+0x0/0x130
         do_one_initcall+0x0/0x230
         __primary_switched+0x88/0x90
    
    For non-PREEMPT_RT builds this is not really an issue, but for
    PREEMPT_RT builds where normal spinlocks can sleep this might be an
    issue. Be cautious and always leave the power and clock running after
    probe.
    
    Signed-off-by: Niklas Söderlund <[email protected]>
    Signed-off-by: Daniel Lezcano <[email protected]>
    Tested-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
clocksource/drivers/timer-integrator-ap: Add missing Kconfig dependency on OF [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Fri Jan 16 12:17:23 2026 +0100

    clocksource/drivers/timer-integrator-ap: Add missing Kconfig dependency on OF
    
    [ Upstream commit 2246464821e2820572e6feefca2029f17629cc50 ]
    
    This driver accesses the of_aliases global variable declared in
    linux/of.h and defined in drivers/base/of.c. It requires OF support or
    will cause a link failure. Add the missing Kconfig dependency.
    
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Daniel Lezcano <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
coresight: etm3x: Fix cpulocked warning on cpuhp [+ + +]
Author: Antonio Borneo <[email protected]>
Date:   Thu Jan 8 16:24:27 2026 +0100

    coresight: etm3x: Fix cpulocked warning on cpuhp
    
    [ Upstream commit 1feb0377b9b816f89a04fc381eb19fc6bac9f4a4 ]
    
    When changes [1] and [2] have been applied to the driver etm4x, the
    same modifications have been also collapsed in [3] and applied in
    one shot to the driver etm3x.
    While doing this, the driver etm3x has not been aligned to etm4x on
    the use of non cpuslocked version of cpuhp callback setup APIs.
    
    The current code triggers two run-time warnings when the kernel is
    compiled with CONFIG_PROVE_LOCKING=y.
    
    Use non cpuslocked version of cpuhp callback setup APIs in driver
    etm3x, aligning it to the driver etm4x.
    
    [1] commit 2d1a8bfb61ec ("coresight: etm4x: Fix etm4_count race by
                              moving cpuhp callbacks to init")
    [2] commit 22a550a306ad ("coresight: etm4x: Allow etm4x to be built
                              as a module")
    [3] commit 97fe626ce64c ("coresight: etm3x: Allow etm3x to be built
                              as a module")
    
    Fixes: 97fe626ce64c ("coresight: etm3x: Allow etm3x to be built as a module")
    Signed-off-by: Antonio Borneo <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
cpuidle: Skip governor when only one idle state is available [+ + +]
Author: Aboorva Devarajan <[email protected]>
Date:   Tue Feb 17 00:20:02 2026 +0530

    cpuidle: Skip governor when only one idle state is available
    
    [ Upstream commit e5c9ffc6ae1bcdb1062527d611043681ac301aca ]
    
    On certain platforms (PowerNV systems without a power-mgt DT node),
    cpuidle may register only a single idle state. In cases where that
    single state is a polling state (state 0), the ladder governor may
    incorrectly treat state 1 as the first usable state and pass an
    out-of-bounds index. This can lead to a NULL enter callback being
    invoked, ultimately resulting in a system crash.
    
    [   13.342636] cpuidle-powernv : Only Snooze is available
    [   13.351854] Faulting instruction address: 0x00000000
    [   13.376489] NIP [0000000000000000] 0x0
    [   13.378351] LR  [c000000001e01974] cpuidle_enter_state+0x2c4/0x668
    
    Fix this by adding a bail-out in cpuidle_select() that returns state 0
    directly when state_count <= 1, bypassing the governor and keeping the
    tick running.
    
    Fixes: dc2251bf98c6 ("cpuidle: Eliminate the CPUIDLE_DRIVER_STATE_START symbol")
    Signed-off-by: Aboorva Devarajan <[email protected]>
    Reviewed-by: Christian Loehle <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: cavium - fix dma_free_coherent() size [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Thu Dec 18 10:56:45 2025 +0100

    crypto: cavium - fix dma_free_coherent() size
    
    [ Upstream commit 941676c30ba5b40a01bed92448f457ce62fd1f07 ]
    
    The size of the buffer in alloc_command_queues() is
    curr->size + CPT_NEXT_CHUNK_PTR_SIZE, so used that length for
    dma_free_coherent().
    
    Fixes: c694b233295b ("crypto: cavium - Add the Virtual Function driver for CPT")
    Signed-off-by: Thomas Fourier <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: ccp - Add an S4 restore flow [+ + +]
Author: Mario Limonciello (AMD) <[email protected]>
Date:   Thu Jan 15 22:11:30 2026 -0600

    crypto: ccp - Add an S4 restore flow
    
    [ Upstream commit 0ba2035026d0ab6c7c7e65ad8b418dc73d5700d9 ]
    
    The system will have lost power during S4.  The ring used for TEE
    communications needs to be initialized before use.
    
    Fixes: f892a21f51162 ("crypto: ccp - use generic power management")
    Reported-by: Lars Francke <[email protected]>
    Closes: https://lore.kernel.org/platform-driver-x86/CAD-Ua_gfJnQSo8ucS_7ZwzuhoBRJ14zXP7s8b-zX3ZcxcyWePw@mail.gmail.com/
    Tested-by: Yijun Shen <[email protected]>
    Signed-off-by: Mario Limonciello (AMD) <[email protected]>
    Reviewed-by: Shyam Sundar S K <[email protected]>
    Reviewed-by: Tom Lendacky <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: hisilicon/trng - modifying the order of header files [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Sat Aug 31 17:50:09 2024 +0800

    crypto: hisilicon/trng - modifying the order of header files
    
    [ Upstream commit f5dd7c43022799ac5c4e3a0d445f9c293a198413 ]
    
    Header files is included Order-ref: standard library headers,
    OS library headers, and project-specific headers. This patch
    modifies the order of header files according to suggestions.
    
    In addition, use %u to print unsigned int variables to prevent
    overflow.
    
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Stable-dep-of: 3d3135057ff5 ("crypto: hisilicon/trng - support tfms sharing the device")
    Signed-off-by: Sasha Levin <[email protected]>

crypto: hisilicon/trng - support tfms sharing the device [+ + +]
Author: Weili Qian <[email protected]>
Date:   Sat Jan 17 15:18:21 2026 +0800

    crypto: hisilicon/trng - support tfms sharing the device
    
    [ Upstream commit 3d3135057ff567d5c09fff4c9ef6391a684e8042 ]
    
    Since the number of devices is limited, and the number
    of tfms may exceed the number of devices, to ensure that
    tfms can be successfully allocated, support tfms
    sharing the same device.
    
    Fixes: e4d9d10ef4be ("crypto: hisilicon/trng - add support for PRNG")
    Signed-off-by: Weili Qian <[email protected]>
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: octeontx - fix dma_free_coherent() size [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Thu Dec 18 11:12:57 2025 +0100

    crypto: octeontx - fix dma_free_coherent() size
    
    [ Upstream commit 624a6760bf8464965c17c8df10b40b557eaa3002 ]
    
    The size of the buffer in alloc_command_queues() is
    curr->size + OTX_CPT_NEXT_CHUNK_PTR_SIZE, so used that length for
    dma_free_coherent().
    
    Fixes: 10b4f09491bf ("crypto: marvell - add the Virtual Function driver for CPT")
    Signed-off-by: Thomas Fourier <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm mpath: make pg_init_delay_msecs settable [+ + +]
Author: Benjamin Marzinski <[email protected]>
Date:   Tue Jan 27 19:12:24 2026 -0500

    dm mpath: make pg_init_delay_msecs settable
    
    [ Upstream commit 218b16992a37ea97b9e09b7659a25a864fb9976f ]
    
    "pg_init_delay_msecs X" can be passed as a feature in the multipath
    table and is used to set m->pg_init_delay_msecs in parse_features().
    However, alloc_multipath_stage2(), which is called after
    parse_features(), resets m->pg_init_delay_msecs to its default value.
    Instead, set m->pg_init_delay_msecs in alloc_multipath(), which is
    called before parse_features(), to avoid overwriting a value passed in
    by the table.
    
    Signed-off-by: Benjamin Marzinski <[email protected]>
    Cc: [email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
dm-integrity: fix a typo in the code for write/discard race [+ + +]
Author: Mikulas Patocka <[email protected]>
Date:   Mon Jan 12 21:15:27 2026 +0100

    dm-integrity: fix a typo in the code for write/discard race
    
    [ Upstream commit c698b7f417801fcd79f0dc844250b3361d38e6b8 ]
    
    If we send a write followed by a discard, it may be possible that the
    discarded data end up being overwritten by the previous write from the
    journal. The code tries to prevent that, but there was a typo in this
    logic that made it not being activated as it should be.
    
    Note that if we end up here the second time (when discard_retried is
    true), it means that the write bio is actually racing with the discard
    bio, and in this situation it is not specified which of them should win.
    
    Cc: [email protected]
    Fixes: 31843edab7cb ("dm integrity: improve discard in journal mode")
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm-unstripe: fix mapping bug when there are multiple targets in a table [+ + +]
Author: Matt Whitlock <[email protected]>
Date:   Sun Jan 18 13:36:15 2026 -0500

    dm-unstripe: fix mapping bug when there are multiple targets in a table
    
    [ Upstream commit 83c10e8dd43628d0bf86486616556cd749a3c310 ]
    
    The "unstriped" device-mapper target incorrectly calculates the sector
    offset on the mapped device when the target's origin is not zero.
    
    Take for example this hypothetical concatenation of the members of a
    two-disk RAID0:
    
    linearized:       0 2097152 unstriped 2 128 0 /dev/md/raid0 0
    linearized: 2097152 2097152 unstriped 2 128 1 /dev/md/raid0 0
    
    The intent in this example is to create a single device named
    /dev/mapper/linearized that comprises all of the chunks of the first disk
    of the RAID0 set, followed by all of the chunks of the second disk of the
    RAID0 set.
    
    This fails because dm-unstripe.c's map_to_core function does its
    computations based on the sector number within the mapper device rather
    than the sector number within the target. The bug turns invisible when
    the target's origin is at sector zero of the mapper device, as is the
    common case. In the example above, however, what happens is that the
    first half of the mapper device gets mapped correctly to the first disk
    of the RAID0, but the second half of the mapper device gets mapped past
    the end of the RAID0 device, and accesses to any of those sectors return
    errors.
    
    Signed-off-by: Matt Whitlock <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Cc: [email protected]
    Fixes: 18a5bf270532 ("dm: add unstriped target")
    Signed-off-by: Sasha Levin <[email protected]>

 
dm-verity: correctly handle dm_bufio_client_create() failure [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Fri Dec 19 11:29:08 2025 -0800

    dm-verity: correctly handle dm_bufio_client_create() failure
    
    [ Upstream commit 119f4f04186fa4f33ee6bd39af145cdaff1ff17f ]
    
    If either of the calls to dm_bufio_client_create() in verity_fec_ctr()
    fails, then dm_bufio_client_destroy() is later called with an ERR_PTR()
    argument.  That causes a crash.  Fix this.
    
    Fixes: a739ff3f543a ("dm verity: add support for forward error correction")
    Cc: [email protected]
    Reviewed-by: Sami Tolvanen <[email protected]>
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm: clear cloned request bio pointer when last clone bio completes [+ + +]
Author: Michael Liang <[email protected]>
Date:   Fri Jan 9 15:52:54 2026 -0700

    dm: clear cloned request bio pointer when last clone bio completes
    
    [ Upstream commit fb8a6c18fb9a6561f7a15b58b272442b77a242dd ]
    
    Stale rq->bio values have been observed to cause double-initialization of
    cloned bios in request-based device-mapper targets, leading to
    use-after-free and double-free scenarios.
    
    One such case occurs when using dm-multipath on top of a PCIe NVMe
    namespace, where cloned request bios are freed during
    blk_complete_request(), but rq->bio is left intact. Subsequent clone
    teardown then attempts to free the same bios again via
    blk_rq_unprep_clone().
    
    The resulting double-free path looks like:
    
      nvme_pci_complete_batch()
        nvme_complete_batch()
          blk_mq_end_request_batch()
            blk_complete_request()        // called on a DM clone request
              bio_endio()                 // first free of all clone bios
              ...
            rq->end_io()                  // end_clone_request()
              dm_complete_request(tio->orig)
                dm_softirq_done()
                  dm_done()
                    dm_end_request()
                      blk_rq_unprep_clone()  // second free of clone bios
    
    Fix this by clearing the clone request's bio pointer when the last cloned
    bio completes, ensuring that later teardown paths do not attempt to free
    already-released bios.
    
    Signed-off-by: Michael Liang <[email protected]>
    Reviewed-by: Mohamed Khalfella <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Cc: [email protected]
    Signed-off-by: Sasha Levin <[email protected]>

dm: remove fake timeout to avoid leak request [+ + +]
Author: Ding Hui <[email protected]>
Date:   Sat Dec 20 20:03:50 2025 +0800

    dm: remove fake timeout to avoid leak request
    
    [ Upstream commit f3a9c95a15d2f4466acad5c68faeff79ca5e9f47 ]
    
    Since commit 15f73f5b3e59 ("blk-mq: move failure injection out of
    blk_mq_complete_request"), drivers are responsible for calling
    blk_should_fake_timeout() at appropriate code paths and opportunities.
    
    However, the dm driver does not implement its own timeout handler and
    relies on the timeout handling of its slave devices.
    
    If an io-timeout-fail error is injected to a dm device, the request
    will be leaked and never completed, causing tasks to hang indefinitely.
    
    Reproduce:
    1. prepare dm which has iscsi slave device
    2. inject io-timeout-fail to dm
       echo 1 >/sys/class/block/dm-0/io-timeout-fail
       echo 100 >/sys/kernel/debug/fail_io_timeout/probability
       echo 10 >/sys/kernel/debug/fail_io_timeout/times
    3. read/write dm
    4. iscsiadm -m node -u
    
    Result: hang task like below
    [  862.243768] INFO: task kworker/u514:2:151 blocked for more than 122 seconds.
    [  862.244133]       Tainted: G            E       6.19.0-rc1+ #51
    [  862.244337] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [  862.244718] task:kworker/u514:2  state:D stack:0     pid:151   tgid:151   ppid:2      task_flags:0x4288060 flags:0x00080000
    [  862.245024] Workqueue: iscsi_ctrl_3:1 __iscsi_unbind_session [scsi_transport_iscsi]
    [  862.245264] Call Trace:
    [  862.245587]  <TASK>
    [  862.245814]  __schedule+0x810/0x15c0
    [  862.246557]  schedule+0x69/0x180
    [  862.246760]  blk_mq_freeze_queue_wait+0xde/0x120
    [  862.247688]  elevator_change+0x16d/0x460
    [  862.247893]  elevator_set_none+0x87/0xf0
    [  862.248798]  blk_unregister_queue+0x12e/0x2a0
    [  862.248995]  __del_gendisk+0x231/0x7e0
    [  862.250143]  del_gendisk+0x12f/0x1d0
    [  862.250339]  sd_remove+0x85/0x130 [sd_mod]
    [  862.250650]  device_release_driver_internal+0x36d/0x530
    [  862.250849]  bus_remove_device+0x1dd/0x3f0
    [  862.251042]  device_del+0x38a/0x930
    [  862.252095]  __scsi_remove_device+0x293/0x360
    [  862.252291]  scsi_remove_target+0x486/0x760
    [  862.252654]  __iscsi_unbind_session+0x18a/0x3e0 [scsi_transport_iscsi]
    [  862.252886]  process_one_work+0x633/0xe50
    [  862.253101]  worker_thread+0x6df/0xf10
    [  862.253647]  kthread+0x36d/0x720
    [  862.254533]  ret_from_fork+0x2a6/0x470
    [  862.255852]  ret_from_fork_asm+0x1a/0x30
    [  862.256037]  </TASK>
    
    Remove the blk_should_fake_timeout() check from dm, as dm has no
    native timeout handling and should not attempt to fake timeouts.
    
    Signed-off-by: Ding Hui <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dma: dma-axi-dmac: fix SW cyclic transfers [+ + +]
Author: Nuno Sá <[email protected]>
Date:   Tue Nov 4 16:22:25 2025 +0000

    dma: dma-axi-dmac: fix SW cyclic transfers
    
    [ Upstream commit 9bd257181fd5c996d922e9991500ad27987cfbf4 ]
    
    If 'hw_cyclic' is false we should still be able to do cyclic transfers in
    "software". That was not working for the case where 'desc->num_sgs' is 1
    because 'chan->next_desc' is never set with the current desc which means
    that the cyclic transfer only runs once and in the next SOT interrupt we
    do nothing since vchan_next_desc() will return NULL.
    
    Fix it by setting 'chan->next_desc' as soon as we get a new desc via
    vchan_next_desc().
    
    Fixes: 0e3b67b348b8 ("dmaengine: Add support for the Analog Devices AXI-DMAC DMA controller")
    Signed-off-by: Nuno Sá <[email protected]>
    base-commit: 398035178503bf662281bbffb4bebce1460a4bc5
    change-id: 20251104-axi-dmac-fixes-and-improvs-e3ad512a329c
    Acked-by: Michael Hennerich <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dmaengine: mediatek: uart-apdma: Fix above 4G addressing TX/RX [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Thu Nov 13 13:22:26 2025 +0100

    dmaengine: mediatek: uart-apdma: Fix above 4G addressing TX/RX
    
    [ Upstream commit 58ab9d7b6651d21e1cff1777529f2d3dd0b4e851 ]
    
    The VFF_4G_SUPPORT register is named differently in datasheets,
    and its name is "VFF_ADDR2"; was this named correctly from the
    beginning it would've been clearer that there was a mistake in
    the programming sequence.
    
    This register is supposed to hold the high bits to support the
    DMA addressing above 4G (so, more than 32 bits) and not a bit
    to "enable" the support for VFF 4G.
    
    Fix the name of this register, and also fix its usage by writing
    the upper 32 bits of the dma_addr_t on it when the SoC supports
    such feature.
    
    Fixes: 9135408c3ace ("dmaengine: mediatek: Add MediaTek UART APDMA support")
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dpaa2-switch: validate num_ifs to prevent out-of-bounds write [+ + +]
Author: Junrui Luo <[email protected]>
Date:   Tue Feb 24 19:05:56 2026 +0800

    dpaa2-switch: validate num_ifs to prevent out-of-bounds write
    
    [ Upstream commit 8a5752c6dcc085a3bfc78589925182e4e98468c5 ]
    
    The driver obtains sw_attr.num_ifs from firmware via dpsw_get_attributes()
    but never validates it against DPSW_MAX_IF (64). This value controls
    iteration in dpaa2_switch_fdb_get_flood_cfg(), which writes port indices
    into the fixed-size cfg->if_id[DPSW_MAX_IF] array. When firmware reports
    num_ifs >= 64, the loop can write past the array bounds.
    
    Add a bound check for num_ifs in dpaa2_switch_init().
    
    dpaa2_switch_fdb_get_flood_cfg() appends the control interface (port
    num_ifs) after all matched ports. When num_ifs == DPSW_MAX_IF and all
    ports match the flood filter, the loop fills all 64 slots and the control
    interface write overflows by one entry.
    
    The check uses >= because num_ifs == DPSW_MAX_IF is also functionally
    broken.
    
    build_if_id_bitmap() silently drops any ID >= 64:
          if (id[i] < DPSW_MAX_IF)
              bmap[id[i] / 64] |= ...
    
    Fixes: 539dda3c5d19 ("staging: dpaa2-switch: properly setup switching domains")
    Signed-off-by: Junrui Luo <[email protected]>
    Reviewed-by: Ioana Ciornei <[email protected]>
    Link: https://patch.msgid.link/SYBPR01MB78812B47B7F0470B617C408AAF74A@SYBPR01MB7881.ausprd01.prod.outlook.com
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drivers: iio: mpu3050: use dev_err_probe for regulator request [+ + +]
Author: Svyatoslav Ryhel <[email protected]>
Date:   Thu Jan 22 17:34:25 2026 +0200

    drivers: iio: mpu3050: use dev_err_probe for regulator request
    
    [ Upstream commit b010880b9936da14f8035585ab57577aa05be23a ]
    
    Regulator requesting may result in deferred probing error which will
    abort driver probing. To avoid this just use dev_err_probe which handles
    deferred probing.
    
    Fixes: 3904b28efb2c ("iio: gyro: Add driver for the MPU-3050 gyroscope")
    Signed-off-by: Svyatoslav Ryhel <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Avoid updating surface with the same surface under MPO [+ + +]
Author: Wayne Lin <[email protected]>
Date:   Fri Jan 23 14:47:01 2026 +0800

    drm/amd/display: Avoid updating surface with the same surface under MPO
    
    [ Upstream commit 1a38ded4bc8ac09fd029ec656b1e2c98cc0d238c ]
    
    [Why & How]
    Although it's dummy updates of surface update for committing stream
    updates, we should not have dummy_updates[j].surface all indicating
    to the same surface under multiple surfaces case. Otherwise,
    copy_surface_update_to_plane() in update_planes_and_stream_state()
    will update to the same surface only.
    
    Reviewed-by: Harry Wentland <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu: Add HAINAN clock adjustment [+ + +]
Author: decce6 <[email protected]>
Date:   Tue Feb 10 07:24:01 2026 +0000

    drm/amdgpu: Add HAINAN clock adjustment
    
    [ Upstream commit 49fe2c57bdc0acff9d2551ae337270b6fd8119d9 ]
    
    This patch limits the clock speeds of the AMD Radeon R5 M420 GPU from
    850/1000MHz (core/memory) to 800/950 MHz, making it work stably. This
    patch is for amdgpu.
    
    Signed-off-by: decce6 <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Adjust usleep_range in fence wait [+ + +]
Author: Ce Sun <[email protected]>
Date:   Tue Feb 10 15:32:01 2026 +0800

    drm/amdgpu: Adjust usleep_range in fence wait
    
    [ Upstream commit 3ee1c72606bd2842f0f377fd4b118362af0323ae ]
    
    Tune the sleep interval in the PSP fence wait loop from 10-100us to
    60-100us.This adjustment results in an overall wait window of 1.2s
    (60us * 20000 iterations) to 2 seconds (100us * 20000 iterations),
    which guarantees that we can retrieve the correct fence value
    
    Signed-off-by: Ce Sun <[email protected]>
    Reviewed-by: Lijo Lazar <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: keep vga memory on MacBooks with switchable graphics [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Mon Feb 16 10:02:32 2026 -0500

    drm/amdgpu: keep vga memory on MacBooks with switchable graphics
    
    [ Upstream commit 096bb75e13cc508d3915b7604e356bcb12b17766 ]
    
    On Intel MacBookPros with switchable graphics, when the iGPU
    is enabled, the address of VRAM gets put at 0 in the dGPU's
    virtual address space.  This is non-standard and seems to cause
    issues with the cursor if it ends up at 0.  We have the framework
    to reserve memory at 0 in the address space, so enable it here if
    the vram start address is 0.
    
    Reviewed-and-tested-by: Mario Kleiner <[email protected]>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4302
    Cc: [email protected]
    Cc: Mario Kleiner <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Use explicit VCN instance 0 in SR-IOV init [+ + +]
Author: Srinivasan Shanmugam <[email protected]>
Date:   Thu Dec 18 15:25:25 2025 +0530

    drm/amdgpu: Use explicit VCN instance 0 in SR-IOV init
    
    [ Upstream commit af26fa751c2eef66916acbf0d3c3e9159da56186 ]
    
    vcn_v2_0_start_sriov() declares a local variable "i" initialized to zero
    and uses it only as the instance index in SOC15_REG_OFFSET(UVD, i, ...).
    The value is never changed and all other fields are taken from
    adev->vcn.inst[0], so this path only ever programs VCN instance 0.
    
    This triggered a Smatch:
    warn: iterator 'i' not incremented
    
    Replace the dummy iterator with an explicit instance index of 0 in
    SOC15_REG_OFFSET() calls.
    
    Fixes: dd26858a9cd8 ("drm/amdgpu: implement initialization part on VCN2.0 for SRIOV")
    Reported by: Dan Carpenter <[email protected]>
    Cc: darlington Opara <[email protected]>
    Cc: Jinage Zhao <[email protected]>
    Cc: Monk Liu <[email protected]>
    Cc: Emily Deng <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Signed-off-by: Srinivasan Shanmugam <[email protected]>
    Reviewed-by: Emily Deng <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdkfd: Fix GART PTE for non-4K pagesize in svm_migrate_gart_map() [+ + +]
Author: Donet Tom <[email protected]>
Date:   Mon Jan 12 19:36:56 2026 +0530

    drm/amdkfd: Fix GART PTE for non-4K pagesize in svm_migrate_gart_map()
    
    [ Upstream commit 6c160001661b6c4e20f5c31909c722741e14c2d8 ]
    
    In svm_migrate_gart_map(), while migrating GART mapping, the number of
    bytes copied for the GART table only accounts for CPU pages. On non-4K
    systems, each CPU page can contain multiple GPU pages, and the GART
    requires one 8-byte PTE per GPU page. As a result, an incorrect size was
    passed to the DMA, causing only a partial update of the GART table.
    
    Fix this function to work correctly on non-4K page-size systems by
    accounting for the number of GPU pages per CPU page when calculating the
    number of bytes to be copied.
    
    Acked-by: Christian König <[email protected]>
    Reviewed-by: Philip Yang <[email protected]>
    Signed-off-by: Ritesh Harjani (IBM) <[email protected]>
    Signed-off-by: Donet Tom <[email protected]>
    Signed-off-by: Felix Kuehling <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: Fix out-of-bounds write in kfd_event_page_set() [+ + +]
Author: Sunday Clement <[email protected]>
Date:   Mon Feb 2 12:41:39 2026 -0500

    drm/amdkfd: Fix out-of-bounds write in kfd_event_page_set()
    
    [ Upstream commit 8a70a26c9f34baea6c3199a9862ddaff4554a96d ]
    
    The kfd_event_page_set() function writes KFD_SIGNAL_EVENT_LIMIT * 8
    bytes via memset without checking the buffer size parameter. This allows
    unprivileged userspace to trigger an out-of bounds kernel memory write
    by passing a small buffer, leading to  potential privilege
    escalation.
    
    Signed-off-by: Sunday Clement <[email protected]>
    Reviewed-by: Alexander Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/atmel-hlcdc: don't reject the commit if the src rect has fractional parts [+ + +]
Author: Ludovic Desroches <[email protected]>
Date:   Thu Nov 20 11:38:25 2025 +0100

    drm/atmel-hlcdc: don't reject the commit if the src rect has fractional parts
    
    [ Upstream commit 06682206e2a1883354ed758c09efeb51f435adbd ]
    
    Don’t reject the commit when the source rectangle has fractional parts.
    This can occur due to scaling: drm_atomic_helper_check_plane_state() calls
    drm_rect_clip_scaled(), which may introduce fractional parts while
    computing the clipped source rectangle. This does not imply the commit is
    invalid, so we should accept it instead of discarding it.
    
    Signed-off-by: Ludovic Desroches <[email protected]>
    Reviewed-by: Manikandan Muralidharan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Manikandan Muralidharan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/atmel-hlcdc: fix memory leak from the atomic_destroy_state callback [+ + +]
Author: Ludovic Desroches <[email protected]>
Date:   Fri Oct 24 18:14:52 2025 +0200

    drm/atmel-hlcdc: fix memory leak from the atomic_destroy_state callback
    
    [ Upstream commit f12352471061df83a36edf54bbb16284793284e4 ]
    
    After several commits, the slab memory increases. Some drm_crtc_commit
    objects are not freed. The atomic_destroy_state callback only put the
    framebuffer. Use the __drm_atomic_helper_plane_destroy_state() function
    to put all the objects that are no longer needed.
    
    It has been seen after hours of usage of a graphics application or using
    kmemleak:
    
    unreferenced object 0xc63a6580 (size 64):
      comm "egt_basic", pid 171, jiffies 4294940784
      hex dump (first 32 bytes):
        40 50 34 c5 01 00 00 00 ff ff ff ff 8c 65 3a c6  @P4..........e:.
        8c 65 3a c6 ff ff ff ff 98 65 3a c6 98 65 3a c6  .e:......e:..e:.
      backtrace (crc c25aa925):
        kmemleak_alloc+0x34/0x3c
        __kmalloc_cache_noprof+0x150/0x1a4
        drm_atomic_helper_setup_commit+0x1e8/0x7bc
        drm_atomic_helper_commit+0x3c/0x15c
        drm_atomic_commit+0xc0/0xf4
        drm_atomic_helper_set_config+0x84/0xb8
        drm_mode_setcrtc+0x32c/0x810
        drm_ioctl+0x20c/0x488
        sys_ioctl+0x14c/0xc20
        ret_fast_syscall+0x0/0x54
    
    Signed-off-by: Ludovic Desroches <[email protected]>
    Reviewed-by: Manikandan Muralidharan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Manikandan Muralidharan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/atmel-hlcdc: fix use-after-free of drm_crtc_commit after release [+ + +]
Author: Ludovic Desroches <[email protected]>
Date:   Fri Oct 24 18:14:53 2025 +0200

    drm/atmel-hlcdc: fix use-after-free of drm_crtc_commit after release
    
    [ Upstream commit bc847787233277a337788568e90a6ee1557595eb ]
    
    The atmel_hlcdc_plane_atomic_duplicate_state() callback was copying
    the atmel_hlcdc_plane state structure without properly duplicating the
    drm_plane_state. In particular, state->commit remained set to the old
    state commit, which can lead to a use-after-free in the next
    drm_atomic_commit() call.
    
    Fix this by calling
    __drm_atomic_helper_duplicate_plane_state(), which correctly clones
    the base drm_plane_state (including the ->commit pointer).
    
    It has been seen when closing and re-opening the device node while
    another DRM client (e.g. fbdev) is still attached:
    
    =============================================================================
    BUG kmalloc-64 (Not tainted): Poison overwritten
    -----------------------------------------------------------------------------
    
    0xc611b344-0xc611b344 @offset=836. First byte 0x6a instead of 0x6b
    FIX kmalloc-64: Restoring Poison 0xc611b344-0xc611b344=0x6b
    Allocated in drm_atomic_helper_setup_commit+0x1e8/0x7bc age=178 cpu=0
    pid=29
     drm_atomic_helper_setup_commit+0x1e8/0x7bc
     drm_atomic_helper_commit+0x3c/0x15c
     drm_atomic_commit+0xc0/0xf4
     drm_framebuffer_remove+0x4cc/0x5a8
     drm_mode_rmfb_work_fn+0x6c/0x80
     process_one_work+0x12c/0x2cc
     worker_thread+0x2a8/0x400
     kthread+0xc0/0xdc
     ret_from_fork+0x14/0x28
    Freed in drm_atomic_helper_commit_hw_done+0x100/0x150 age=8 cpu=0
    pid=169
     drm_atomic_helper_commit_hw_done+0x100/0x150
     drm_atomic_helper_commit_tail+0x64/0x8c
     commit_tail+0x168/0x18c
     drm_atomic_helper_commit+0x138/0x15c
     drm_atomic_commit+0xc0/0xf4
     drm_atomic_helper_set_config+0x84/0xb8
     drm_mode_setcrtc+0x32c/0x810
     drm_ioctl+0x20c/0x488
     sys_ioctl+0x14c/0xc20
     ret_fast_syscall+0x0/0x54
    Slab 0xef8bc360 objects=21 used=16 fp=0xc611b7c0
    flags=0x200(workingset|zone=0)
    Object 0xc611b340 @offset=832 fp=0xc611b7c0
    
    Signed-off-by: Ludovic Desroches <[email protected]>
    Reviewed-by: Manikandan Muralidharan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Manikandan Muralidharan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/acpi: free _DSM package when no connectors [+ + +]
Author: Kaushlendra Kumar <[email protected]>
Date:   Fri Jan 9 08:55:49 2026 +0530

    drm/i915/acpi: free _DSM package when no connectors
    
    [ Upstream commit 57b85fd53fccfdf14ce7b36d919c31aa752255f8 ]
    
    acpi_evaluate_dsm_typed() returns an ACPI package in pkg.
    When pkg->package.count == 0, we returned without freeing pkg,
    leaking memory. Free pkg before returning on the empty case.
    
    Signed-off-by: Kaushlendra Kumar <[email protected]>
    Fixes: 337d7a1621c7 ("drm/i915: Fix invalid access to ACPI _DSM objects")
    Reviewed-by: Jani Nikula <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jani Nikula <[email protected]>
    (cherry picked from commit c0a27a0ca8a34e96d08bb05a2c5d5ccf63fb8dc0)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/radeon: Add HAINAN clock adjustment [+ + +]
Author: decce6 <[email protected]>
Date:   Tue Feb 10 07:26:00 2026 +0000

    drm/radeon: Add HAINAN clock adjustment
    
    [ Upstream commit 908d318f23d6b5d625bea093c5fc056238cdb7ff ]
    
    This patch limits the clock speeds of the AMD Radeon R5 M420 GPU from
    850/1000MHz (core/memory) to 800/950 MHz, making it work stably. This
    patch is for radeon.
    
    Signed-off-by: decce6 <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/v3d: Set DMA segment size to avoid debug warnings [+ + +]
Author: Xiaolei Wang <[email protected]>
Date:   Wed Dec 3 21:03:23 2025 +0800

    drm/v3d: Set DMA segment size to avoid debug warnings
    
    [ Upstream commit 9eb018828b1b30dfba689c060735c50fc5b9f704 ]
    
    When using V3D rendering with CONFIG_DMA_API_DEBUG enabled, the
    kernel occasionally reports a segment size mismatch. This is because
    'max_seg_size' is not set. The kernel defaults to 64K. setting
    'max_seg_size' to the maximum will prevent 'debug_dma_map_sg()'
    from complaining about the over-mapping of the V3D segment length.
    
    DMA-API: v3d 1002000000.v3d: mapping sg segment longer than device
     claims to support [len=8290304] [max=65536]
    WARNING: CPU: 0 PID: 493 at kernel/dma/debug.c:1179 debug_dma_map_sg+0x330/0x388
    CPU: 0 UID: 0 PID: 493 Comm: Xorg Not tainted 6.12.53-yocto-standard #1
    Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
    pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : debug_dma_map_sg+0x330/0x388
    lr : debug_dma_map_sg+0x330/0x388
    sp : ffff8000829a3ac0
    x29: ffff8000829a3ac0 x28: 0000000000000001 x27: ffff8000813fe000
    x26: ffffc1ffc0000000 x25: ffff00010fdeb760 x24: 0000000000000000
    x23: ffff8000816a9bf0 x22: 0000000000000001 x21: 0000000000000002
    x20: 0000000000000002 x19: ffff00010185e810 x18: ffffffffffffffff
    x17: 69766564206e6168 x16: 74207265676e6f6c x15: 20746e656d676573
    x14: 20677320676e6970 x13: 5d34303334393134 x12: 0000000000000000
    x11: 00000000000000c0 x10: 00000000000009c0 x9 : ffff8000800e0b7c
    x8 : ffff00010a315ca0 x7 : ffff8000816a5110 x6 : 0000000000000001
    x5 : 000000000000002b x4 : 0000000000000002 x3 : 0000000000000008
    x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff00010a315280
    Call trace:
     debug_dma_map_sg+0x330/0x388
     __dma_map_sg_attrs+0xc0/0x278
     dma_map_sgtable+0x30/0x58
     drm_gem_shmem_get_pages_sgt+0xb4/0x140
     v3d_bo_create_finish+0x28/0x130 [v3d]
     v3d_create_bo_ioctl+0x54/0x180 [v3d]
     drm_ioctl_kernel+0xc8/0x140
     drm_ioctl+0x2d4/0x4d8
    
    Signed-off-by: Xiaolei Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Maíra Canal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm: Account property blob allocations to memcg [+ + +]
Author: Xiao Kan <[email protected]>
Date:   Wed Jan 14 08:22:26 2026 -0500

    drm: Account property blob allocations to memcg
    
    [ Upstream commit 26b4309a3ab82a0697751cde52eb336c29c19035 ]
    
    DRM_IOCTL_MODE_CREATEPROPBLOB allows userspace to allocate arbitrary-sized
    property blobs backed by kernel memory.
    
    Currently, the blob data allocation is not accounted to the allocating
    process's memory cgroup, allowing unprivileged users to trigger unbounded
    kernel memory consumption and potentially cause system-wide OOM.
    
    Mark the property blob data allocation with GFP_KERNEL_ACCOUNT so that the memory
    is properly charged to the caller's memcg. This ensures existing cgroup
    memory limits apply and prevents uncontrolled kernel memory growth without
    introducing additional policy or per-file limits.
    
    Signed-off-by: Xiao Kan <[email protected]>
    Signed-off-by: Xiao Kan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Maxime Ripard <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm: of: drm_of_panel_bridge_remove(): fix device_node leak [+ + +]
Author: Luca Ceresoli <[email protected]>
Date:   Fri Jan 9 08:31:32 2026 +0100

    drm: of: drm_of_panel_bridge_remove(): fix device_node leak
    
    [ Upstream commit a4b4385d0523e39a7c058cb5a6c8269e513126ca ]
    
    drm_of_panel_bridge_remove() uses of_graph_get_remote_node() to get a
    device_node but does not put the node reference.
    
    Fixes: c70087e8f16f ("drm/drm_of: add drm_of_panel_bridge_remove function")
    Cc: [email protected] # v4.15
    Acked-by: Maxime Ripard <[email protected]>
    Link: https://patch.msgid.link/20260109-drm-bridge-alloc-getput-drm_of_find_bridge-2-v2-1-8bad3ef90b9f@bootlin.com
    Signed-off-by: Luca Ceresoli <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/altera: Remove IRQF_ONESHOT [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 28 10:55:30 2026 +0100

    EDAC/altera: Remove IRQF_ONESHOT
    
    [ Upstream commit 5c858d6c66304b4c7579582ec5235f02d43578ea ]
    
    Passing IRQF_ONESHOT ensures that the interrupt source is masked until
    the secondary (threaded) handler is done. If only a primary handler is
    used then the flag makes no sense because the interrupt can not fire
    (again) while its handler is running.
    
    The flag also prevents force-threading of the primary handler and the
    irq-core will warn about this.
    
    Remove IRQF_ONESHOT from irqflags.
    
    Fixes: a29d64a45eed1 ("EDAC, altera: Add IRQ Flags to disable IRQ while handling")
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/i5000: Fix snprintf() size calculation in calculate_dimm_size() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Tue Dec 9 17:36:59 2025 +0300

    EDAC/i5000: Fix snprintf() size calculation in calculate_dimm_size()
    
    [ Upstream commit 7b5c7e83ac405ff9ecbdd92b37a477f4288f8814 ]
    
    The snprintf() can't really overflow because we're writing a max of 42
    bytes to a PAGE_SIZE buffer.  But the limit calculation doesn't take
    the first 11 bytes that we wrote into consideration so the limit is
    not correct.  Just fix it for correctness even though it doesn't
    affect runtime.
    
    Fixes: 64e1fdaf55d6 ("i5000_edac: Fix the logic that retrieves memory information")
    Signed-off-by: Dan Carpenter <[email protected]>
    Signed-off-by: Tony Luck <[email protected]>
    Reviewed-by: Qiuxu Zhuo <[email protected]>
    Link: https://patch.msgid.link/07cd652c51e77aad5a8350e1a7cd9407e5bbe373.1765290801.git.dan.carpenter@linaro.org
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/i5400: Fix snprintf() limit calculation in calculate_dimm_size() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Tue Dec 9 17:37:04 2025 +0300

    EDAC/i5400: Fix snprintf() limit calculation in calculate_dimm_size()
    
    [ Upstream commit 72f12683611344853ab030fe7d19b23970ed2bd8 ]
    
    The snprintf() can't really overflow because we're writing a max of 42
    bytes to a PAGE_SIZE buffer.  But my static checker complains because
    the limit calculation doesn't take the first 11 space characters that
    we wrote into the buffer into consideration.  Fix this for the sake of
    correctness even though it doesn't affect runtime.
    
    Also delete an earlier "space -= n;" which was not used.
    
    Fixes: 68d086f89b80 ("i5400_edac: improve debug messages to better represent the filled memory")
    Signed-off-by: Dan Carpenter <[email protected]>
    Signed-off-by: Tony Luck <[email protected]>
    Reviewed-by: Qiuxu Zhuo <[email protected]>
    Link: https://patch.msgid.link/ccd06b91748e7ed8e33eeb2ff1e7b98700879304.1765290801.git.dan.carpenter@linaro.org
    Signed-off-by: Sasha Levin <[email protected]>

 
EFI/CPER: don't dump the entire memory region [+ + +]
Author: Mauro Carvalho Chehab <[email protected]>
Date:   Thu Jan 8 12:35:06 2026 +0100

    EFI/CPER: don't dump the entire memory region
    
    [ Upstream commit 55cc6fe5716f678f06bcb95140882dfa684464ec ]
    
    The current logic at cper_print_fw_err() doesn't check if the
    error record length is big enough to handle offset. On a bad firmware,
    if the ofset is above the actual record, length -= offset will
    underflow, making it dump the entire memory.
    
    The end result can be:
    
     - the logic taking a lot of time dumping large regions of memory;
     - data disclosure due to the memory dumps;
     - an OOPS, if it tries to dump an unmapped memory region.
    
    Fix it by checking if the section length is too small before doing
    a hex dump.
    
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Acked-by: Ard Biesheuvel <[email protected]>
    Reviewed-by: Hanjun Guo <[email protected]>
    [ rjw: Subject tweaks ]
    Link: https://patch.msgid.link/1752b5ba63a3e2f148ddee813b36c996cc617e86.1767871950.git.mchehab+huawei@kernel.org
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

EFI/CPER: don't go past the ARM processor CPER record buffer [+ + +]
Author: Mauro Carvalho Chehab <[email protected]>
Date:   Thu Jan 8 12:35:04 2026 +0100

    EFI/CPER: don't go past the ARM processor CPER record buffer
    
    [ Upstream commit eae21beecb95a3b69ee5c38a659f774e171d730e ]
    
    There's a logic inside GHES/CPER to detect if the section_length
    is too small, but it doesn't detect if it is too big.
    
    Currently, if the firmware receives an ARM processor CPER record
    stating that a section length is big, kernel will blindly trust
    section_length, producing a very long dump. For instance, a 67
    bytes record with ERR_INFO_NUM set 46198 and section length
    set to 854918320 would dump a lot of data going a way past the
    firmware memory-mapped area.
    
    Fix it by adding a logic to prevent it to go past the buffer
    if ERR_INFO_NUM is too big, making it report instead:
    
            [Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 1
            [Hardware Error]: event severity: recoverable
            [Hardware Error]:  Error 0, type: recoverable
            [Hardware Error]:   section_type: ARM processor error
            [Hardware Error]:   MIDR: 0xff304b2f8476870a
            [Hardware Error]:   section length: 854918320, CPER size: 67
            [Hardware Error]:   section length is too big
            [Hardware Error]:   firmware-generated error record is incorrect
            [Hardware Error]:   ERR_INFO_NUM is 46198
    
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Acked-by: Ard Biesheuvel <[email protected]>
    Reviewed-by: Hanjun Guo <[email protected]>
    [ rjw: Subject and changelog tweaks ]
    Link: https://patch.msgid.link/41cd9f6b3ace3cdff7a5e864890849e4b1c58b63.1767871950.git.mchehab+huawei@kernel.org
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ethtool: add support to set/get tx copybreak buf size via ethtool [+ + +]
Author: Hao Chen <[email protected]>
Date:   Thu Nov 18 20:12:40 2021 +0800

    ethtool: add support to set/get tx copybreak buf size via ethtool
    
    [ Upstream commit 448f413a8bdc727d25d9a786ccbdb974fb85d973 ]
    
    Add support for ethtool to set/get tx copybreak buf size.
    
    Signed-off-by: Hao Chen <[email protected]>
    Signed-off-by: Guangbin Huang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 6d2f142b1e4b ("net: hns3: fix double free issue for tx spare buffer")
    Signed-off-by: Sasha Levin <[email protected]>

 
ext4: don't cache extent during splitting extent [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Sat Nov 29 18:32:37 2025 +0800

    ext4: don't cache extent during splitting extent
    
    commit 8b4b19a2f96348d70bfa306ef7d4a13b0bcbea79 upstream.
    
    Caching extents during the splitting process is risky, as it may result
    in stale extents remaining in the status tree. Moreover, in most cases,
    the corresponding extent block entries are likely already cached before
    the split happens, making caching here not particularly useful.
    
    Assume we have an unwritten extent, and then DIO writes the first half.
    
      [UUUUUUUUUUUUUUUU] on-disk extent        U: unwritten extent
      [UUUUUUUUUUUUUUUU] extent status tree
      |<-   ->| ----> dio write this range
    
    First, when ext4_split_extent_at() splits this extent, it truncates the
    existing extent and then inserts a new one. During this process, this
    extent status entry may be shrunk, and calls to ext4_find_extent() and
    ext4_cache_extents() may occur, which could potentially insert the
    truncated range as a hole into the extent status tree. After the split
    is completed, this hole is not replaced with the correct status.
    
      [UUUUUUU|UUUUUUUU] on-disk extent        U: unwritten extent
      [UUUUUUU|HHHHHHHH] extent status tree    H: hole
    
    Then, the outer calling functions will not correct this remaining hole
    extent either. Finally, if we perform a delayed buffer write on this
    latter part, it will re-insert the delayed extent and cause an error in
    space accounting.
    
    In adition, if the unwritten extent cache is not shrunk during the
    splitting, ext4_cache_extents() also conflicts with existing extents
    when caching extents. In the future, we will add checks when caching
    extents, which will trigger a warning. Therefore, Do not cache extents
    that are being split.
    
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Ojaswin Mujoo <[email protected]>
    Reviewed-by: Baokun Li <[email protected]>
    Cc: [email protected]
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ext4: fix memory leak in ext4_ext_shift_extents() [+ + +]
Author: Zilin Guan <[email protected]>
Date:   Thu Dec 25 08:48:00 2025 +0000

    ext4: fix memory leak in ext4_ext_shift_extents()
    
    commit ca81109d4a8f192dc1cbad4a1ee25246363c2833 upstream.
    
    In ext4_ext_shift_extents(), if the extent is NULL in the while loop, the
    function returns immediately without releasing the path obtained via
    ext4_find_extent(), leading to a memory leak.
    
    Fix this by jumping to the out label to ensure the path is properly
    released.
    
    Fixes: a18ed359bdddc ("ext4: always check ext4_ext_find_extent result")
    Signed-off-by: Zilin Guan <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Reviewed-by: Baokun Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ext4: mark group add fast-commit ineligible [+ + +]
Author: Li Chen <[email protected]>
Date:   Thu Dec 11 19:51:41 2025 +0800

    ext4: mark group add fast-commit ineligible
    
    [ Upstream commit 89b4336fd5ec78f51f9d3a1d100f3ffa3228e604 ]
    
    Fast commits only log operations that have dedicated replay support.
    Online resize via EXT4_IOC_GROUP_ADD updates the superblock and group
    descriptor metadata without going through the fast commit tracking
    paths.
    In practice these operations are rare and usually followed by further
    updates, but mixing them into a fast commit makes the overall
    semantics harder to reason about and risks replay gaps if new call
    sites appear.
    
    Teach ext4 to mark the filesystem fast-commit ineligible when
    ext4_ioctl_group_add() adds new block groups.
    This forces those transactions to fall back to a full commit,
    ensuring that the filesystem geometry updates are captured by the
    normal journal rather than partially encoded in fast commit TLVs.
    This change should not affect common workloads but makes online
    resize via GROUP_ADD safer and easier to reason about under fast
    commit.
    
    Testing:
    1. prepare:
        dd if=/dev/zero of=/root/fc_resize.img bs=1M count=0 seek=256
        mkfs.ext4 -O fast_commit -F /root/fc_resize.img
        mkdir -p /mnt/fc_resize && mount -t ext4 -o loop /root/fc_resize.img /mnt/fc_resize
    2. Ran a helper that issues EXT4_IOC_GROUP_ADD on the mounted
       filesystem and checked the resize ineligible reason:
        ./group_add_helper /mnt/fc_resize
        cat /proc/fs/ext4/loop0/fc_info
       shows "Resize": > 0.
    3. Fsynced a file on the resized filesystem and verified that the fast
       commit stats report at least one ineligible commit:
        touch /mnt/fc_resize/file
        /root/fsync_file /mnt/fc_resize/file
        sync
        cat /proc/fs/ext4/loop0/fc_info
       shows fc stats ineligible > 0.
    
    Signed-off-by: Li Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: mark group extend fast-commit ineligible [+ + +]
Author: Li Chen <[email protected]>
Date:   Thu Dec 11 19:51:42 2025 +0800

    ext4: mark group extend fast-commit ineligible
    
    [ Upstream commit 1f8dd813a1c771b13c303f73d876164bc9b327cc ]
    
    Fast commits only log operations that have dedicated replay support.
    EXT4_IOC_GROUP_EXTEND grows the filesystem to the end of the last
    block group and updates the same on-disk metadata without going
    through the fast commit tracking paths.
    In practice these operations are rare and usually followed by further
    updates, but mixing them into a fast commit makes the overall
    semantics harder to reason about and risks replay gaps if new call
    sites appear.
    
    Teach ext4 to mark the filesystem fast-commit ineligible when
    EXT4_IOC_GROUP_EXTEND grows the filesystem.
    This forces those transactions to fall back to a full commit,
    ensuring that the group extension changes are captured by the normal
    journal rather than partially encoded in fast commit TLVs.
    This change should not affect common workloads but makes online
    resize via GROUP_EXTEND safer and easier to reason about under fast
    commit.
    
    Testing:
    1. prepare:
        dd if=/dev/zero of=/root/fc_resize.img bs=1M count=0 seek=256
        mkfs.ext4 -O fast_commit -F /root/fc_resize.img
        mkdir -p /mnt/fc_resize && mount -t ext4 -o loop /root/fc_resize.img /mnt/fc_resize
    2. Extended the filesystem to the end of the last block group using a
       helper that calls EXT4_IOC_GROUP_EXTEND on the mounted filesystem
       and checked fc_info:
        ./group_extend_helper /mnt/fc_resize
        cat /proc/fs/ext4/loop0/fc_info
       shows the "Resize" ineligible reason increased.
    3. Fsynced a file on the resized filesystem and confirmed that the fast
       commit ineligible counter incremented for the resize transaction:
        touch /mnt/fc_resize/file
        /root/fsync_file /mnt/fc_resize/file
        sync
        cat /proc/fs/ext4/loop0/fc_info
    
    Signed-off-by: Li Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: use optimized mballoc scanning regardless of inode format [+ + +]
Author: Jan Kara <[email protected]>
Date:   Wed Jan 14 19:28:19 2026 +0100

    ext4: use optimized mballoc scanning regardless of inode format
    
    commit 3574c322b1d0eb32dbd76b469cb08f9a67641599 upstream.
    
    Currently we don't used mballoc optimized scanning (using max free
    extent order and avg free extent order group lists) for inodes with
    indirect block based format. This is confusing for users and I don't see
    a good reason for that. Even with indirect block based inode format we
    can spend big amount of time searching for free blocks for large
    filesystems with fragmented free space. To add to the confusion before
    commit 077d0c2c78df ("ext4: make mb_optimize_scan performance mount
    option work with extents") optimized scanning was applied *only* to
    indirect block based inodes so that commit appears as a performance
    regression to some users. Just use optimized scanning whenever it is
    enabled by mount options.
    
    Reviewed-by: Baokun Li <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Signed-off-by: Jan Kara <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fat: avoid parent link count underflow in rmdir [+ + +]
Author: Zhiyu Zhang <[email protected]>
Date:   Thu Jan 1 19:11:48 2026 +0800

    fat: avoid parent link count underflow in rmdir
    
    [ Upstream commit 8cafcb881364af5ef3a8b9fed4db254054033d8a ]
    
    Corrupted FAT images can leave a directory inode with an incorrect
    i_nlink (e.g. 2 even though subdirectories exist). rmdir then
    unconditionally calls drop_nlink(dir) and can drive i_nlink to 0,
    triggering the WARN_ON in drop_nlink().
    
    Add a sanity check in vfat_rmdir() and msdos_rmdir(): only drop the
    parent link count when it is at least 3, otherwise report a filesystem
    error.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 9a53c3a783c2 ("[PATCH] r/o bind mounts: unlink: monitor i_nlink")
    Signed-off-by: Zhiyu Zhang <[email protected]>
    Reported-by: Zhiyu Zhang <[email protected]>
    Closes: https://lore.kernel.org/linux-fsdevel/[email protected]/T/#t
    Tested-by: Zhiyu Zhang <[email protected]>
    Acked-by: OGAWA Hirofumi <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Jan Kara <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fbdev: au1200fb: Fix a memory leak in au1200fb_drv_probe() [+ + +]
Author: Felix Gu <[email protected]>
Date:   Tue Feb 3 20:14:58 2026 +0800

    fbdev: au1200fb: Fix a memory leak in au1200fb_drv_probe()
    
    [ Upstream commit ce4e25198a6aaaaf36248edf8daf3d744ec8e309 ]
    
    In au1200fb_drv_probe(), when platform_get_irq fails(), it directly
    returns from the function with an error code, which causes a memory
    leak.
    
    Replace it with a goto label to ensure proper cleanup.
    
    Fixes: 4e88761f5f8c ("fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe")
    Signed-off-by: Felix Gu <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fbdev: ffb: fix corrupted video output on Sun FFB1 [+ + +]
Author: René Rebe <[email protected]>
Date:   Thu Feb 5 16:49:58 2026 +0100

    fbdev: ffb: fix corrupted video output on Sun FFB1
    
    [ Upstream commit b28da0d092461ac239ff034a8ac3129320177ba3 ]
    
    Fix Sun FFB1 corrupted video out ([1] and [2]) by disabling overlay and
    initializing window mode to a known state. The issue never appeared on
    my FFB2+/vertical nor Elite3D/M6. It could also depend on the PROM
    version.
    
    /SUNW,ffb@1e,0: FFB at 000001fc00000000, type 11, DAC pnum[236c] rev[10] manuf_rev[4]
    X (II) /dev/fb0: Detected FFB1, Z-buffer, Single-buffered.
    X (II) /dev/fb0: BT9068 (PAC1) ramdac detected (with normal cursor control)
    X (II) /dev/fb0: Detected Creator/Creator3D
    
    [1] https://www.instagram.com/p/DUTcSmSjSem/
    [2] https://chaos.social/@ReneRebe/116023241660154102
    
    Signed-off-by: René Rebe <[email protected]>
    Cc: [email protected]
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fbdev: of: display_timing: fix refcount leak in of_get_display_timings() [+ + +]
Author: Weigang He <[email protected]>
Date:   Fri Jan 16 09:57:51 2026 +0000

    fbdev: of: display_timing: fix refcount leak in of_get_display_timings()
    
    [ Upstream commit eacf9840ae1285a1ef47eb0ce16d786e542bd4d7 ]
    
    of_parse_phandle() returns a device_node with refcount incremented,
    which is stored in 'entry' and then copied to 'native_mode'. When the
    error paths at lines 184 or 192 jump to 'entryfail', native_mode's
    refcount is not decremented, causing a refcount leak.
    
    Fix this by changing the goto target from 'entryfail' to 'timingfail',
    which properly calls of_node_put(native_mode) before cleanup.
    
    Fixes: cc3f414cf2e4 ("video: add of helper for display timings/videomode")
    Cc: [email protected]
    Signed-off-by: Weigang He <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fbdev: vt8500lcdfb: fix missing dma_free_coherent() [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Mon Jan 12 15:00:27 2026 +0100

    fbdev: vt8500lcdfb: fix missing dma_free_coherent()
    
    [ Upstream commit 88b3b9924337336a31cefbe99a22ed09401be74a ]
    
    fbi->fb.screen_buffer is allocated with dma_alloc_coherent() but is not
    freed if the error path is reached.
    
    Fixes: e7b995371fe1 ("video: vt8500: Add devicetree support for vt8500-fb and wm8505-fb")
    Cc: <[email protected]>
    Signed-off-by: Thomas Fourier <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: fix it87_wdt early reboot by reporting running timer [+ + +]
Author: René Rebe <[email protected]>
Date:   Mon Nov 17 13:11:24 2025 +0100

    fix it87_wdt early reboot by reporting running timer
    
    [ Upstream commit 88b2ab346436f799b99894a3e9518a3ffa344524 ]
    
    Some products, such as the Ugreen DXP4800 Plus NAS, ship with the it87
    wdt enabled by the firmware and a broken BIOS option that does not
    allow to change the time or turn it off. As this makes installing
    Linux rather difficult, change the it87_wdt to report it running to
    the watchdog core.
    
    Signed-off-by: René Rebe <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Wim Van Sebroeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fpga: dfl: use subsys_initcall to allow built-in drivers to be added [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Mon Dec 15 16:05:50 2025 -0300

    fpga: dfl: use subsys_initcall to allow built-in drivers to be added
    
    [ Upstream commit 267f53140c9d0bf270bbe0148082e9b8e5011273 ]
    
    The dfl code adds a bus. If it is built-in and there is a built-in driver
    as well, the dfl module_init may be called after the driver module_init,
    leading to a failure to register the driver as the bus has not been added
    yet.
    
    Use subsys_initcall, which guarantees it will be called before the drivers
    init code.
    
    Without the fix, we see failures like this:
    
    [    0.479475] Driver 'intel-m10-bmc' was unable to register with bus_type 'dfl' because the bus was not initialized.
    
    Cc: [email protected]
    Fixes: 9ba3a0aa09fe ("fpga: dfl: create a dfl bus type to support DFL devices")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Xu Yilun <[email protected]>
    Signed-off-by: Xu Yilun <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/ntfs3: avoid calling run_get_entry() when run == NULL in ntfs_read_run_nb_ra() [+ + +]
Author: Konstantin Komarov <[email protected]>
Date:   Mon Feb 9 16:07:32 2026 +0100

    fs/ntfs3: avoid calling run_get_entry() when run == NULL in ntfs_read_run_nb_ra()
    
    [ Upstream commit c5226b96c08a010ebef5fdf4c90572bcd89e4299 ]
    
    When ntfs_read_run_nb_ra() is invoked with run == NULL the code later
    assumes run is valid and may call run_get_entry(NULL, ...), and also
    uses clen/idx without initializing them. Smatch reported uninitialized
    variable warnings and this can lead to undefined behaviour. This patch
    fixes it.
    
    Reported-by: kernel test robot <[email protected]>
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs/ntfs3: Fix slab-out-of-bounds read in DeleteIndexEntryRoot [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Sat Jan 17 16:50:24 2026 +0000

    fs/ntfs3: Fix slab-out-of-bounds read in DeleteIndexEntryRoot
    
    [ Upstream commit b2bc7c44ed1779fc9eaab9a186db0f0d01439622 ]
    
    In the 'DeleteIndexEntryRoot' case of the 'do_action' function, the
    entry size ('esize') is retrieved from the log record without adequate
    bounds checking.
    
    Specifically, the code calculates the end of the entry ('e2') using:
        e2 = Add2Ptr(e1, esize);
    
    It then calculates the size for memmove using 'PtrOffset(e2, ...)',
    which subtracts the end pointer from the buffer limit. If 'esize' is
    maliciously large, 'e2' exceeds the used buffer size. This results in
    a negative offset which, when cast to size_t for memmove, interprets
    as a massive unsigned integer, leading to a heap buffer overflow.
    
    This commit adds a check to ensure that the entry size ('esize') strictly
    fits within the remaining used space of the index header before performing
    memory operations.
    
    Fixes: b46acd6a6a62 ("fs/ntfs3: Add NTFS journal")
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs/ntfs3: prevent infinite loops caused by the next valid being the same [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Sun Dec 28 11:53:25 2025 +0800

    fs/ntfs3: prevent infinite loops caused by the next valid being the same
    
    [ Upstream commit 27b75ca4e51e3e4554dc85dbf1a0246c66106fd3 ]
    
    When processing valid within the range [valid : pos), if valid cannot
    be retrieved correctly, for example, if the retrieved valid value is
    always the same, this can trigger a potential infinite loop, similar
    to the hung problem reported by syzbot [1].
    
    Adding a check for the valid value within the loop body, and terminating
    the loop and returning -EINVAL if the value is the same as the current
    value, can prevent this.
    
    [1]
    INFO: task syz.4.21:6056 blocked for more than 143 seconds.
    Call Trace:
     rwbase_write_lock+0x14f/0x750 kernel/locking/rwbase_rt.c:244
     inode_lock include/linux/fs.h:1027 [inline]
     ntfs_file_write_iter+0xe6/0x870 fs/ntfs3/file.c:1284
    
    Fixes: 4342306f0f0d ("fs/ntfs3: Add file operations and implementation")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=bcf9e1868c1a0c7e04f1
    Signed-off-by: Edward Adam Davis <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs: add for 'init_fs' [+ + +]
Author: Ben Dooks <[email protected]>
Date:   Thu Jan 8 11:58:56 2026 +0000

    fs: add <linux/init_task.h> for 'init_fs'
    
    [ Upstream commit 589cff4975afe1a4eaaa1d961652f50b1628d78d ]
    
    The init_fs symbol is defined in <linux/init_task.h> but was
    not included in fs/fs_struct.c so fix by adding the include.
    
    Fixes the following sparse warning:
    fs/fs_struct.c:150:18: warning: symbol 'init_fs' was not declared. Should it be static?
    
    Fixes: 3e93cd671813e ("Take fs_struct handling to new file")
    Signed-off-by: Ben Dooks <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs: ntfs3: check return value of indx_find to avoid infinite loop [+ + +]
Author: Jaehun Gou <[email protected]>
Date:   Tue Dec 2 19:59:59 2025 +0900

    fs: ntfs3: check return value of indx_find to avoid infinite loop
    
    [ Upstream commit 1732053c8a6b360e2d5afb1b34fe9779398b072c ]
    
    We found an infinite loop bug in the ntfs3 file system that can lead to a
    Denial-of-Service (DoS) condition.
    
    A malformed dentry in the ntfs3 filesystem can cause the kernel to hang
    during the lookup operations. By setting the HAS_SUB_NODE flag in an
    INDEX_ENTRY within a directory's INDEX_ALLOCATION block and manipulating the
    VCN pointer, an attacker can cause the indx_find() function to repeatedly
    read the same block, allocating 4 KB of memory each time. The kernel lacks
    VCN loop detection and depth limits, causing memory exhaustion and an OOM
    crash.
    
    This patch adds a return value check for fnd_push() to prevent a memory
    exhaustion vulnerability caused by infinite loops. When the index exceeds the
    size of the fnd->nodes array, fnd_push() returns -EINVAL. The indx_find()
    function checks this return value and stops processing, preventing further
    memory allocation.
    
    Co-developed-by: Seunghun Han <[email protected]>
    Signed-off-by: Seunghun Han <[email protected]>
    Co-developed-by: Jihoon Kwon <[email protected]>
    Signed-off-by: Jihoon Kwon <[email protected]>
    Signed-off-by: Jaehun Gou <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs: ntfs3: fix infinite loop in attr_load_runs_range on inconsistent metadata [+ + +]
Author: Jaehun Gou <[email protected]>
Date:   Tue Dec 2 20:01:09 2025 +0900

    fs: ntfs3: fix infinite loop in attr_load_runs_range on inconsistent metadata
    
    [ Upstream commit 4b90f16e4bb5607fb35e7802eb67874038da4640 ]
    
    We found an infinite loop bug in the ntfs3 file system that can lead to a
    Denial-of-Service (DoS) condition.
    
    A malformed NTFS image can cause an infinite loop when an attribute header
    indicates an empty run list, while directory entries reference it as
    containing actual data. In NTFS, setting evcn=-1 with svcn=0 is a valid way
    to represent an empty run list, and run_unpack() correctly handles this by
    checking if evcn + 1 equals svcn and returning early without parsing any run
    data. However, this creates a problem when there is metadata inconsistency,
    where the attribute header claims to be empty (evcn=-1) but the caller
    expects to read actual data. When run_unpack() immediately returns success
    upon seeing this condition, it leaves the runs_tree uninitialized with
    run->runs as a NULL. The calling function attr_load_runs_range() assumes
    that a successful return means that the runs were loaded and sets clen to 0,
    expecting the next run_lookup_entry() call to succeed. Because runs_tree
    remains uninitialized, run_lookup_entry() continues to fail, and the loop
    increments vcn by zero (vcn += 0), leading to an infinite loop.
    
    This patch adds a retry counter to detect when run_lookup_entry() fails
    consecutively after attr_load_runs_vcn(). If the run is still not found on
    the second attempt, it indicates corrupted metadata and returns -EINVAL,
    preventing the Denial-of-Service (DoS) vulnerability.
    
    Co-developed-by: Seunghun Han <[email protected]>
    Signed-off-by: Seunghun Han <[email protected]>
    Co-developed-by: Jihoon Kwon <[email protected]>
    Signed-off-by: Jihoon Kwon <[email protected]>
    Signed-off-by: Jaehun Gou <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs: ntfs3: fix infinite loop triggered by zero-sized ATTR_LIST [+ + +]
Author: Jaehun Gou <[email protected]>
Date:   Tue Dec 2 20:01:46 2025 +0900

    fs: ntfs3: fix infinite loop triggered by zero-sized ATTR_LIST
    
    [ Upstream commit 06909b2549d631a47fcda249d34be26f7ca1711d ]
    
    We found an infinite loop bug in the ntfs3 file system that can lead to a
    Denial-of-Service (DoS) condition.
    
    A malformed NTFS image can cause an infinite loop when an ATTR_LIST attribute
    indicates a zero data size while the driver allocates memory for it.
    
    When ntfs_load_attr_list() processes a resident ATTR_LIST with data_size set
    to zero, it still allocates memory because of al_aligned(0). This creates an
    inconsistent state where ni->attr_list.size is zero, but ni->attr_list.le is
    non-null. This causes ni_enum_attr_ex to incorrectly assume that no attribute
    list exists and enumerates only the primary MFT record. When it finds
    ATTR_LIST, the code reloads it and restarts the enumeration, repeating
    indefinitely. The mount operation never completes, hanging the kernel thread.
    
    This patch adds validation to ensure that data_size is non-zero before memory
    allocation. When a zero-sized ATTR_LIST is detected, the function returns
    -EINVAL, preventing a DoS vulnerability.
    
    Co-developed-by: Seunghun Han <[email protected]>
    Signed-off-by: Seunghun Han <[email protected]>
    Co-developed-by: Jihoon Kwon <[email protected]>
    Signed-off-by: Jihoon Kwon <[email protected]>
    Signed-off-by: Jaehun Gou <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gfs2: Add metapath_dibh helper [+ + +]
Author: Andreas Gruenbacher <[email protected]>
Date:   Fri Oct 20 01:32:15 2023 +0200

    gfs2: Add metapath_dibh helper
    
    [ Upstream commit 92099f0c92270c8c7a79e6bc6e0312ad248ea331 ]
    
    Add a metapath_dibh() helper for extracting the inode's buffer head from
    a metapath.
    
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path")
    Signed-off-by: Sasha Levin <[email protected]>

gfs2: fiemap page fault fix [+ + +]
Author: Andreas Gruenbacher <[email protected]>
Date:   Thu Feb 5 15:52:57 2026 +0100

    gfs2: fiemap page fault fix
    
    [ Upstream commit e411d74cc5ba290f85d0dd5e4d1df8f1d6d975d2 ]
    
    In gfs2_fiemap(), we are calling iomap_fiemap() while holding the inode
    glock.  This can lead to recursive glock taking if the fiemap buffer is
    memory mapped to the same inode and accessing it triggers a page fault.
    
    Fix by disabling page faults for iomap_fiemap() and faulting in the
    buffer by hand if necessary.
    
    Fixes xfstest generic/742.
    
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gfs2: Fix use-after-free in iomap inline data write path [+ + +]
Author: Deepanshu Kartikey <[email protected]>
Date:   Fri Jan 30 14:51:34 2026 +0530

    gfs2: Fix use-after-free in iomap inline data write path
    
    [ Upstream commit faddeb848305e79db89ee0479bb0e33380656321 ]
    
    The inline data buffer head (dibh) is being released prematurely in
    gfs2_iomap_begin() via release_metapath() while iomap->inline_data
    still points to dibh->b_data. This causes a use-after-free when
    iomap_write_end_inline() later attempts to write to the inline data
    area.
    
    The bug sequence:
    1. gfs2_iomap_begin() calls gfs2_meta_inode_buffer() to read inode
       metadata into dibh
    2. Sets iomap->inline_data = dibh->b_data + sizeof(struct gfs2_dinode)
    3. Calls release_metapath() which calls brelse(dibh), dropping refcount
       to 0
    4. kswapd reclaims the page (~39ms later in the syzbot report)
    5. iomap_write_end_inline() tries to memcpy() to iomap->inline_data
    6. KASAN detects use-after-free write to freed memory
    
    Fix by storing dibh in iomap->private and incrementing its refcount
    with get_bh() in gfs2_iomap_begin(). The buffer is then properly
    released in gfs2_iomap_end() after the inline write completes,
    ensuring the page stays alive for the entire iomap operation.
    
    Note: A C reproducer is not available for this issue. The fix is based
    on analysis of the KASAN report and code review showing the buffer head
    is freed before use.
    
    [agruenba: Take buffer head reference in gfs2_iomap_begin() to avoid
    leaks in gfs2_iomap_get() and gfs2_iomap_alloc().]
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=ea1cd4aa4d1e98458a55
    Fixes: d0a22a4b03b8 ("gfs2: Fix iomap write page reclaim deadlock")
    Signed-off-by: Deepanshu Kartikey <[email protected]>
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gpio: aspeed-sgpio: Change the macro to support deferred probe [+ + +]
Author: Billy Tsai <[email protected]>
Date:   Fri Jan 23 17:26:26 2026 +0800

    gpio: aspeed-sgpio: Change the macro to support deferred probe
    
    [ Upstream commit e18533b023ec7a33488bcf33140ce69bbba2894f ]
    
    Use module_platform_driver() to replace module_platform_driver_probe().
    The former utilizes platform_driver_register(), which allows the driver to
    defer probing when it doesn't acquire the necessary resources due to probe
    order. In contrast, the latter uses __platform_driver_probe(), which
    includes the comment "Note that this is incompatible with deferred
    probing." Since our SGPIO driver requires access to the clock resource, the
    former is more suitable.
    
    Reviewed-by: Linus Walleij <[email protected]>
    Signed-off-by: Billy Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hfsplus: fix volume corruption issue for generic/498 [+ + +]
Author: Viacheslav Dubeyko <[email protected]>
Date:   Sat Dec 6 19:58:22 2025 -0800

    hfsplus: fix volume corruption issue for generic/498
    
    [ Upstream commit 9a8c4ad44721da4c48e1ff240ac76286c82837fe ]
    
    The xfstests' test-case generic/498 leaves HFS+ volume
    in corrupted state:
    
    sudo ./check generic/498
    FSTYP -- hfsplus
    PLATFORM -- Linux/x86_64 hfsplus-testing-0001 6.18.0-rc1+ #18 SMP PREEMPT_DYNAMIC Thu Dec 4 12:24:45 PST 2025
    MKFS_OPTIONS -- /dev/loop51
    MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
    
    generic/498 _check_generic_filesystem: filesystem on /dev/loop51 is inconsistent
    (see XFSTESTS-2/xfstests-dev/results//generic/498.full for details)
    
    Ran: generic/498
    Failures: generic/498
    Failed 1 of 1 tests
    
    sudo fsck.hfsplus -d /dev/loop51
    ** /dev/loop51
    Using cacheBlockSize=32K cacheTotalBlock=1024 cacheSize=32768K.
    Executing fsck_hfs (version 540.1-Linux).
    ** Checking non-journaled HFS Plus Volume.
    The volume name is untitled
    ** Checking extents overflow file.
    ** Checking catalog file.
    Invalid leaf record count
    (It should be 16 instead of 2)
    ** Checking multi-linked files.
    CheckHardLinks: found 1 pre-Leopard file inodes.
    ** Checking catalog hierarchy.
    ** Checking extended attributes file.
    ** Checking volume bitmap.
    ** Checking volume information.
    Verify Status: VIStat = 0x0000, ABTStat = 0x0000 EBTStat = 0x0000
    CBTStat = 0x8000 CatStat = 0x00000000
    ** Repairing volume.
    ** Rechecking volume.
    ** Checking non-journaled HFS Plus Volume.
    The volume name is untitled
    ** Checking extents overflow file.
    ** Checking catalog file.
    ** Checking multi-linked files.
    CheckHardLinks: found 1 pre-Leopard file inodes.
    ** Checking catalog hierarchy.
    ** Checking extended attributes file.
    ** Checking volume bitmap.
    ** Checking volume information.
    ** The volume untitled was repaired successfully.
    
    The generic/498 test executes such steps on final phase:
    
    mkdir $SCRATCH_MNT/A
    mkdir $SCRATCH_MNT/B
    mkdir $SCRATCH_MNT/A/C
    touch $SCRATCH_MNT/B/foo
    $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/B/foo
    
    ln $SCRATCH_MNT/B/foo $SCRATCH_MNT/A/C/foo
    $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/A
    
    "Simulate a power failure and mount the filesystem
    to check that what we explicitly fsync'ed exists."
    
    _flakey_drop_and_remount
    
    The FSCK tool complains about "Invalid leaf record count".
    HFS+ b-tree header contains leaf_count field is updated
    by hfs_brec_insert() and hfs_brec_remove(). The hfs_brec_insert()
    is involved into hard link creation process. However,
    modified in-core leaf_count field is stored into HFS+
    b-tree header by hfs_btree_write() method. But,
    unfortunately, hfs_btree_write() hasn't been called
    by hfsplus_cat_write_inode() and hfsplus_file_fsync()
    stores not fully consistent state of the Catalog File's
    b-tree.
    
    This patch adds calling hfs_btree_write() method in
    the hfsplus_cat_write_inode() with the goal of
    storing consistent state of Catalog File's b-tree.
    Finally, it makes FSCK tool happy.
    
    sudo ./check generic/498
    FSTYP         -- hfsplus
    PLATFORM      -- Linux/x86_64 hfsplus-testing-0001 6.18.0-rc1+ #22 SMP PREEMPT_DYNAMIC Sat Dec  6 17:01:31 PST 2025
    MKFS_OPTIONS  -- /dev/loop51
    MOUNT_OPTIONS -- /dev/loop51 /mnt/scratch
    
    generic/498 33s ...  31s
    Ran: generic/498
    Passed all 1 tests
    
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    cc: John Paul Adrian Glaubitz <[email protected]>
    cc: Yangtao Li <[email protected]>
    cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hfsplus: pretend special inodes as regular files [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Tue Jan 6 18:39:33 2026 +0900

    hfsplus: pretend special inodes as regular files
    
    [ Upstream commit ed8889ca21b6ab37bc1435c4009ce37a79acb9e6 ]
    
    Since commit af153bb63a33 ("vfs: catch invalid modes in may_open()")
    requires any inode be one of S_IFDIR/S_IFLNK/S_IFREG/S_IFCHR/S_IFBLK/
    S_IFIFO/S_IFSOCK type, use S_IFREG for special inodes.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=895c23f6917da440ed0d
    Signed-off-by: Tetsuo Handa <[email protected]>
    Reviewed-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hfsplus: return error when node already exists in hfs_bnode_create [+ + +]
Author: Shardul Bankar <[email protected]>
Date:   Tue Dec 30 02:19:38 2025 +0530

    hfsplus: return error when node already exists in hfs_bnode_create
    
    [ Upstream commit d8a73cc46c8462a969a7516131feb3096f4c49d3 ]
    
    When hfs_bnode_create() finds that a node is already hashed (which should
    not happen in normal operation), it currently returns the existing node
    without incrementing its reference count. This causes a reference count
    inconsistency that leads to a kernel panic when the node is later freed
    in hfs_bnode_put():
    
        kernel BUG at fs/hfsplus/bnode.c:676!
        BUG_ON(!atomic_read(&node->refcnt))
    
    This scenario can occur when hfs_bmap_alloc() attempts to allocate a node
    that is already in use (e.g., when node 0's bitmap bit is incorrectly
    unset), or due to filesystem corruption.
    
    Returning an existing node from a create path is not normal operation.
    
    Fix this by returning ERR_PTR(-EEXIST) instead of the node when it's
    already hashed. This properly signals the error condition to callers,
    which already check for IS_ERR() return values.
    
    Reported-by: [email protected]
    Link: https://syzkaller.appspot.com/bug?extid=1c8ff72d0cd8a50dfeaa
    Link: https://lore.kernel.org/all/[email protected]/
    Fixes: 634725a92938 ("[PATCH] hfs: cleanup HFS+ prints")
    Signed-off-by: Shardul Bankar <[email protected]>
    Reviewed-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: elecom: Add support for ELECOM HUGE Plus M-HT1MRBK [+ + +]
Author: David Phillips <[email protected]>
Date:   Fri Jan 23 12:56:09 2026 +0900

    HID: elecom: Add support for ELECOM HUGE Plus M-HT1MRBK
    
    [ Upstream commit b8e5fdf0bd022cd5493a5987ef66f5a24f8352d8 ]
    
    New model in the ELECOM HUGE trackball line that has 8 buttons but the
    report descriptor specifies only 5. The HUGE Plus supports connecting via
    Bluetooth, 2.4GHz wireless USB dongle, and directly via a USB-C cable.
    Each connection type reports a different device id, 01AA for cable,
    01AB for USB dongle, and 01AC for Bluetooth.
    
    This patch adds these device IDs and applies the fixups similar to the
    other ELECOM devices to get all 8 buttons working for all 3 connection
    types.
    
    For reference, the usbhid-dump output:
    001:013:001:DESCRIPTOR         1769085639.598405
     05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01
     29 05 15 00 25 01 75 01 95 05 81 02 75 03 95 01
     81 01 05 01 09 30 09 31 16 01 80 26 FF 7F 75 10
     95 02 81 06 09 38 15 81 25 7F 75 08 95 01 81 06
     05 0C 0A 38 02 15 81 25 7F 75 08 95 01 81 06 C0
     C0 05 0C 09 01 A1 01 85 02 15 01 26 8C 02 19 01
     2A 8C 02 75 10 95 01 81 00 C0 05 01 09 80 A1 01
     85 03 09 82 09 81 09 83 15 00 25 01 19 01 29 03
     75 01 95 03 81 02 95 05 81 01 C0 06 01 FF 09 00
     A1 01 85 08 09 00 15 00 26 FF 00 75 08 95 07 81
     02 C0 06 02 FF 09 02 A1 01 85 06 09 02 15 00 26
     FF 00 75 08 95 07 B1 02 C0
    
    Signed-off-by: David Phillips <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: hid-pl: handle probe errors [+ + +]
Author: Oliver Neukum <[email protected]>
Date:   Wed Nov 19 10:09:57 2025 +0100

    HID: hid-pl: handle probe errors
    
    [ Upstream commit 3756a272d2cf356d2203da8474d173257f5f8521 ]
    
    Errors in init must be reported back or we'll
    follow a NULL pointer the first time FF is used.
    
    Fixes: 20eb127906709 ("hid: force feedback driver for PantherLord USB/PS2 2in1 Adapter")
    Cc: [email protected]
    Signed-off-by: Oliver Neukum <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: logitech-hidpp: Check maxfield in hidpp_get_report_length() [+ + +]
Author: Günther Noack <[email protected]>
Date:   Fri Jan 9 13:25:58 2026 +0100

    HID: logitech-hidpp: Check maxfield in hidpp_get_report_length()
    
    [ Upstream commit 1547d41f9f19d691c2c9ce4c29f746297baef9e9 ]
    
    Do not crash when a report has no fields.
    
    Fake USB gadgets can send their own HID report descriptors and can define report
    structures without valid fields.  This can be used to crash the kernel over USB.
    
    Cc: [email protected]
    Signed-off-by: Günther Noack <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: magicmouse: Do not crash on missing msc->input [+ + +]
Author: Günther Noack <[email protected]>
Date:   Fri Jan 9 11:57:14 2026 +0100

    HID: magicmouse: Do not crash on missing msc->input
    
    [ Upstream commit 17abd396548035fbd6179ee1a431bd75d49676a7 ]
    
    Fake USB devices can send their own report descriptors for which the
    input_mapping() hook does not get called.  In this case, msc->input stays NULL,
    leading to a crash at a later time.
    
    Detect this condition in the input_configured() hook and reject the device.
    
    This is not supposed to happen with actual magic mouse devices, but can be
    provoked by imposing as a magic mouse USB device.
    
    Cc: [email protected]
    Signed-off-by: Günther Noack <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: add eGalaxTouch EXC3188 support [+ + +]
Author: Thorsten Schmelzer <[email protected]>
Date:   Fri Jan 23 09:57:05 2026 +0100

    HID: multitouch: add eGalaxTouch EXC3188 support
    
    [ Upstream commit 8e4ac86b2ddd36fe501e20ecfcc080e536df1f48 ]
    
    Add support for the for the EXC3188 touchscreen from eGalaxy.
    
    Signed-off-by: Thorsten Schmelzer <[email protected]>
    Signed-off-by: Michael Tretter <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: playstation: Add missing check for input_ff_create_memless [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Mon Nov 17 16:28:08 2025 +0800

    HID: playstation: Add missing check for input_ff_create_memless
    
    [ Upstream commit e6807641ac94e832988655a1c0e60ccc806b76dc ]
    
    The ps_gamepad_create() function calls input_ff_create_memless()
    without verifying its return value,  which can lead to incorrect
    behavior or potential crashes when FF effects are triggered.
    
    Add a check for the return value of input_ff_create_memless().
    
    Fixes: 51151098d7ab ("HID: playstation: add DualSense classic rumble support.")
    Signed-off-by: Haotian Zhang <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: prodikeys: Check presence of pm->input_ep82 [+ + +]
Author: Günther Noack <[email protected]>
Date:   Fri Jan 9 11:58:08 2026 +0100

    HID: prodikeys: Check presence of pm->input_ep82
    
    [ Upstream commit cee8337e1bad168136aecfe6416ecd7d3aa7529a ]
    
    Fake USB devices can send their own report descriptors for which the
    input_mapping() hook does not get called.  In this case, pm->input_ep82 stays
    NULL, which leads to a crash later.
    
    This does not happen with the real device, but can be provoked by imposing as
    one.
    
    Cc: [email protected]
    Signed-off-by: Günther Noack <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hrtimer: Fix trace oddity [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Mon Jan 19 11:38:34 2026 +0100

    hrtimer: Fix trace oddity
    
    [ Upstream commit 5d6446f409da00e5a389125ddb5ce09f5bc404c9 ]
    
    It turns out that __run_hrtimer() will trace like:
    
              <idle>-0     [032] d.h2. 20705.474563: hrtimer_cancel:       hrtimer=0xff2db8f77f8226e8
              <idle>-0     [032] d.h1. 20705.474563: hrtimer_expire_entry: hrtimer=0xff2db8f77f8226e8 now=20699452001850 function=tick_nohz_handler/0x0
    
    Which is a bit nonsensical, the timer doesn't get canceled on
    expiration. The cause is the use of the incorrect debug helper.
    
    Fixes: c6a2a1770245 ("hrtimer: Add tracepoint for hrtimers")
    Reported-by: Peter Zijlstra (Intel) <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
hyper-v: Mark inner union in hv_kvp_exchg_msg_value as packed [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Thu Jan 15 08:35:44 2026 +0100

    hyper-v: Mark inner union in hv_kvp_exchg_msg_value as packed
    
    [ Upstream commit 1e5271393d777f6159d896943b4c44c4f3ecff52 ]
    
    The unpacked union within a packed struct generates alignment warnings
    on clang for 32-bit ARM:
    
    ./usr/include/linux/hyperv.h:361:2: error: field  within 'struct hv_kvp_exchg_msg_value'
      is less aligned than 'union hv_kvp_exchg_msg_value::(anonymous at ./usr/include/linux/hyperv.h:361:2)'
      and is usually due to 'struct hv_kvp_exchg_msg_value' being packed,
      which can lead to unaligned accesses [-Werror,-Wunaligned-access]
         361 |         union {
             |         ^
    
    With the recent changes to compile-test the UAPI headers in more cases,
    this warning in combination with CONFIG_WERROR breaks the build.
    
    Fix the warning.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Reported-by: Nathan Chancellor <[email protected]>
    Closes: https://lore.kernel.org/linux-kbuild/20260110-uapi-test-disable-headers-arm-clang-unaligned-access-v1-1-b7b0fa541daa@kernel.org/
    Suggested-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/linux-kbuild/[email protected]/
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Acked-by: Wei Liu (Microsoft) <[email protected]>
    Tested-by: Nicolas Schier <[email protected]>
    Reviewed-by: Nicolas Schier <[email protected]>
    Acked-by: Greg Kroah-Hartman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i3c: master: svc: Initialize 'dev' to NULL in svc_i3c_master_ibi_isr() [+ + +]
Author: Frank Li <[email protected]>
Date:   Mon Dec 15 15:08:51 2025 -0500

    i3c: master: svc: Initialize 'dev' to NULL in svc_i3c_master_ibi_isr()
    
    [ Upstream commit 3c9ffb4db787428a5851d5865823ab23842d5103 ]
    
    Initialize the 'dev' pointer to NULL in svc_i3c_master_ibi_isr() and add
    a NULL check in the error path.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Signed-off-by: Frank Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i3c: Move device name assignment after i3c_bus_init [+ + +]
Author: Billy Tsai <[email protected]>
Date:   Mon Jan 12 14:07:22 2026 +0800

    i3c: Move device name assignment after i3c_bus_init
    
    [ Upstream commit 3502cea99c7ceb331458cbd34ef6792c83144687 ]
    
    Move device name initialization to occur after i3c_bus_init()
    so that i3cbus->id is guaranteed to be assigned before it is used.
    
    Fixes: 9d4f219807d5 ("i3c: fix refcount inconsistency in i3c_master_register")
    Signed-off-by: Billy Tsai <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i3c: remove i2c board info from i2c_dev_desc [+ + +]
Author: Jamie Iles <[email protected]>
Date:   Mon Jan 17 17:48:15 2022 +0000

    i3c: remove i2c board info from i2c_dev_desc
    
    [ Upstream commit 31b9887c7258ca47d9c665a80f19f006c86756b1 ]
    
    I2C board info is only required during adapter setup so there is no
    requirement to keeping a pointer to it once running.  To support dynamic
    device addition we can't rely on board info - user-space creation
    through sysfs won't have a boardinfo.
    
    Cc: Alexandre Belloni <[email protected]>
    Signed-off-by: Jamie Iles <[email protected]>
    Signed-off-by: Alexandre Belloni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 3502cea99c7c ("i3c: Move device name assignment after i3c_bus_init")
    Signed-off-by: Sasha Levin <[email protected]>

 
IB/cache: update gid cache on client reregister event [+ + +]
Author: Etienne AUJAMES <[email protected]>
Date:   Wed Dec 31 14:07:45 2025 +0100

    IB/cache: update gid cache on client reregister event
    
    [ Upstream commit ddd6c8c873e912cb1ead79def54de5e24ff71c80 ]
    
    Some HCAs (e.g: ConnectX4) do not trigger a IB_EVENT_GID_CHANGE on
    subnet prefix update from SM (PortInfo).
    
    Since the commit d58c23c92548 ("IB/core: Only update PKEY and GID caches
    on respective events"), the GID cache is updated exclusively on
    IB_EVENT_GID_CHANGE. If this event is not emitted, the subnet prefix in the
    IPoIB interface’s hardware address remains set to its default value
    (0xfe80000000000000).
    
    Then rdma_bind_addr() failed because it relies on hardware address to
    find the port GID (subnet_prefix + port GUID).
    
    This patch fixes this issue by updating the GID cache on
    IB_EVENT_CLIENT_REREGISTER event (emitted on PortInfo::ClientReregister=1).
    
    Fixes: d58c23c92548 ("IB/core: Only update PKEY and GID caches on respective events")
    Signed-off-by: Etienne AUJAMES <[email protected]>
    Link: https://patch.msgid.link/aVUfsO58QIDn5bGX@eaujamesFR0130
    Reviewed-by: Parav Pandit <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iio: gyro: itg3200: Fix unchecked return value in read_raw [+ + +]
Author: Antoniu Miclaus <[email protected]>
Date:   Thu Jan 29 17:01:45 2026 +0200

    iio: gyro: itg3200: Fix unchecked return value in read_raw
    
    [ Upstream commit b79b24f578cdb2d657db23e5fafe82c7e6a36b72 ]
    
    The return value from itg3200_read_reg_s16() is stored in ret but
    never checked. The function unconditionally returns IIO_VAL_INT,
    ignoring potential I2C read failures. This causes garbage data to
    be returned to userspace when the read fails, with no error reported.
    
    Add proper error checking to propagate the failure to callers.
    
    Fixes: 9dbf091da080 ("iio: gyro: Add itg3200")
    Signed-off-by: Antoniu Miclaus <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: magnetometer: Remove IRQF_ONESHOT [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 28 10:55:38 2026 +0100

    iio: magnetometer: Remove IRQF_ONESHOT
    
    [ Upstream commit a54e9440925e6617c98669066b4753c4cdcea8a0 ]
    
    Passing IRQF_ONESHOT ensures that the interrupt source is masked until
    the secondary (threaded) handler is done. If only a primary handler is
    used then the flag makes no sense because the interrupt can not fire
    (again) while its handler is running.
    The flag also disallows force-threading of the primary handler and the
    irq-core will warn about this.
    The force-threading functionality is required on PREEMPT_RT because the
    handler is using locks with can sleep on PREEMPT_RT.
    
    Remove IRQF_ONESHOT from irqflags.
    
    Tested-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Nuno Sá <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: sca3000: Fix a resource leak in sca3000_probe() [+ + +]
Author: Harshit Mogalapalli <[email protected]>
Date:   Tue Jan 27 22:49:49 2026 -0800

    iio: sca3000: Fix a resource leak in sca3000_probe()
    
    [ Upstream commit 62b44ebc1f2c71db3ca2d4737c52e433f6f03038 ]
    
    spi->irq from request_threaded_irq() not released when
    iio_device_register() fails. Add an return value check and jump to a
    common error handler when iio_device_register() fails.
    
    Fixes: 9a4936dc89a3 ("staging:iio:accel:sca3000 Tidy up probe order to avoid a race.")
    Signed-off-by: Harshit Mogalapalli <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: Use IRQF_NO_THREAD [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 28 10:55:36 2026 +0100

    iio: Use IRQF_NO_THREAD
    
    [ Upstream commit 04d390af97f2c28166f7ddfe1a6bda622e3a4766 ]
    
    The interrupt handler iio_trigger_generic_data_rdy_poll() will invoke
    other interrupt handler and this supposed to happen from within the
    hardirq.
    
    Use IRQF_NO_THREAD to forbid forced-threading.
    
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
include: uapi: netfilter_bridge.h: Cover for musl libc [+ + +]
Author: Phil Sutter <[email protected]>
Date:   Sat Feb 14 15:54:06 2026 +0100

    include: uapi: netfilter_bridge.h: Cover for musl libc
    
    [ Upstream commit 4edd4ba71ce0df015303dba75ea9d20d1a217546 ]
    
    Musl defines its own struct ethhdr and thus defines __UAPI_DEF_ETHHDR to
    zero. To avoid struct redefinition errors, user space is therefore
    supposed to include netinet/if_ether.h before (or instead of)
    linux/if_ether.h. To relieve them from this burden, include the libc
    header here if not building for kernel space.
    
    Reported-by: Alyssa Ross <[email protected]>
    Suggested-by: Florian Westphal <[email protected]>
    Signed-off-by: Phil Sutter <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iomap: fix submission side handling of completion side errors [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Jan 26 06:53:38 2026 +0100

    iomap: fix submission side handling of completion side errors
    
    [ Upstream commit 4ad357e39b2ecd5da7bcc7e840ee24d179593cd5 ]
    
    The "if (dio->error)" in iomap_dio_bio_iter exists to stop submitting
    more bios when a completion already return an error.  Commit cfe057f7db1f
    ("iomap_dio_actor(): fix iov_iter bugs") made it revert the iov by
    "copied", which is very wrong given that we've already consumed that
    range and submitted a bio for it.
    
    Fixes: cfe057f7db1f ("iomap_dio_actor(): fix iov_iter bugs")
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu/arm-smmu-v3: Improve CMDQ lock fairness and efficiency [+ + +]
Author: Alexander Grest <[email protected]>
Date:   Mon Dec 8 13:28:57 2025 -0800

    iommu/arm-smmu-v3: Improve CMDQ lock fairness and efficiency
    
    [ Upstream commit df180b1a4cc51011c5f8c52c7ec02ad2e42962de ]
    
    The SMMU CMDQ lock is highly contentious when there are multiple CPUs
    issuing commands and the queue is nearly full.
    
    The lock has the following states:
     - 0:           Unlocked
     - >0:          Shared lock held with count
     - INT_MIN+N:   Exclusive lock held, where N is the # of shared waiters
     - INT_MIN:     Exclusive lock held, no shared waiters
    
    When multiple CPUs are polling for space in the queue, they attempt to
    grab the exclusive lock to update the cons pointer from the hardware. If
    they fail to get the lock, they will spin until either the cons pointer
    is updated by another CPU.
    
    The current code allows the possibility of shared lock starvation
    if there is a constant stream of CPUs trying to grab the exclusive lock.
    This leads to severe latency issues and soft lockups.
    
    Consider the following scenario where CPU1's attempt to acquire the
    shared lock is starved by CPU2 and CPU0 contending for the exclusive
    lock.
    
    CPU0 (exclusive)  | CPU1 (shared)     | CPU2 (exclusive)    | `cmdq->lock`
    --------------------------------------------------------------------------
    trylock() //takes |                   |                     | 0
                      | shared_lock()     |                     | INT_MIN
                      | fetch_inc()       |                     | INT_MIN
                      | no return         |                     | INT_MIN + 1
                      | spins // VAL >= 0 |                     | INT_MIN + 1
    unlock()          | spins...          |                     | INT_MIN + 1
    set_release(0)    | spins...          |                     | 0 see[NOTE]
    (done)            | (sees 0)          | trylock() // takes  | 0
                      | *exits loop*      | cmpxchg(0, INT_MIN) | 0
                      |                   | *cuts in*           | INT_MIN
                      | cmpxchg(0, 1)     |                     | INT_MIN
                      | fails // != 0     |                     | INT_MIN
                      | spins // VAL >= 0 |                     | INT_MIN
                      | *starved*         |                     | INT_MIN
    
    [NOTE] The current code resets the exclusive lock to 0 regardless of the
    state of the lock. This causes two problems:
    1. It opens the possibility of back-to-back exclusive locks and the
       downstream effect of starving shared lock.
    2. The count of shared lock waiters are lost.
    
    To mitigate this, we release the exclusive lock by only clearing the sign
    bit while retaining the shared lock waiter count as a way to avoid
    starving the shared lock waiters.
    
    Also deleted cmpxchg loop while trying to acquire the shared lock as it
    is not needed. The waiters can see the positive lock count and proceed
    immediately after the exclusive lock is released.
    
    Exclusive lock is not starved in that submitters will try exclusive lock
    first when new spaces become available.
    
    Reviewed-by: Mostafa Saleh <[email protected]>
    Reviewed-by: Nicolin Chen <[email protected]>
    Signed-off-by: Alexander Grest <[email protected]>
    Signed-off-by: Jacob Pan <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu/vt-d: Flush cache for PASID table before using it [+ + +]
Author: Dmytro Maluka <[email protected]>
Date:   Thu Jan 22 09:48:52 2026 +0800

    iommu/vt-d: Flush cache for PASID table before using it
    
    [ Upstream commit 22d169bdd2849fe6bd18c2643742e1c02be6451c ]
    
    When writing the address of a freshly allocated zero-initialized PASID
    table to a PASID directory entry, do that after the CPU cache flush for
    this PASID table, not before it, to avoid the time window when this
    PASID table may be already used by non-coherent IOMMU hardware while
    its contents in RAM is still some random old data, not zero-initialized.
    
    Fixes: 194b3348bdbb ("iommu/vt-d: Fix PASID directory pointer coherency")
    Signed-off-by: Dmytro Maluka <[email protected]>
    Reviewed-by: Kevin Tian <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lu Baolu <[email protected]>
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iommu/vt-d: Flush dev-IOTLB only when PCIe device is accessible in scalable mode [+ + +]
Author: Jinhui Guo <[email protected]>
Date:   Thu Jan 22 09:48:51 2026 +0800

    iommu/vt-d: Flush dev-IOTLB only when PCIe device is accessible in scalable mode
    
    [ Upstream commit 10e60d87813989e20eac1f3eda30b3bae461e7f9 ]
    
    Commit 4fc82cd907ac ("iommu/vt-d: Don't issue ATS Invalidation
    request when device is disconnected") relies on
    pci_dev_is_disconnected() to skip ATS invalidation for
    safely-removed devices, but it does not cover link-down caused
    by faults, which can still hard-lock the system.
    
    For example, if a VM fails to connect to the PCIe device,
    "virsh destroy" is executed to release resources and isolate
    the fault, but a hard-lockup occurs while releasing the group fd.
    
    Call Trace:
     qi_submit_sync
     qi_flush_dev_iotlb
     intel_pasid_tear_down_entry
     device_block_translation
     blocking_domain_attach_dev
     __iommu_attach_device
     __iommu_device_set_domain
     __iommu_group_set_domain_internal
     iommu_detach_group
     vfio_iommu_type1_detach_group
     vfio_group_detach_container
     vfio_group_fops_release
     __fput
    
    Although pci_device_is_present() is slower than
    pci_dev_is_disconnected(), it still takes only ~70 µs on a
    ConnectX-5 (8 GT/s, x2) and becomes even faster as PCIe speed
    and width increase.
    
    Besides, devtlb_invalidation_with_pasid() is called only in the
    paths below, which are far less frequent than memory map/unmap.
    
    1. mm-struct release
    2. {attach,release}_dev
    3. set/remove PASID
    4. dirty-tracking setup
    
    The gain in system stability far outweighs the negligible cost
    of using pci_device_is_present() instead of pci_dev_is_disconnected()
    to decide when to skip ATS invalidation, especially under GDR
    high-load conditions.
    
    Fixes: 4fc82cd907ac ("iommu/vt-d: Don't issue ATS Invalidation request when device is disconnected")
    Cc: [email protected]
    Signed-off-by: Jinhui Guo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lu Baolu <[email protected]>
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ionic: Rate limit unknown xcvr type messages [+ + +]
Author: Eric Joyner <[email protected]>
Date:   Fri Feb 6 14:46:51 2026 -0800

    ionic: Rate limit unknown xcvr type messages
    
    [ Upstream commit cdb1634de3bf197c0d86487d1fb84c128a79cc7c ]
    
    Running ethtool repeatedly with a transceiver unknown to the driver or
    firmware will cause the driver to spam the kernel logs with "unknown
    xcvr type" messages which can distract from real issues; and this isn't
    interesting information outside of debugging. Fix this by rate limiting
    the output so that there are still notifications but not so many that
    they flood the log.
    
    Using dev_dbg_once() would reduce the number of messages further, but
    this would miss the case where a different unknown transceiver type is
    plugged in, and its status is requested.
    
    Fixes: 4d03e00a2140 ("ionic: Add initial ethtool support")
    Signed-off-by: Eric Joyner <[email protected]>
    Reviewed-by: Brett Creeley <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv4: fib: Annotate access to struct fib_alias.fa_state. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Tue Jan 27 04:35:24 2026 +0000

    ipv4: fib: Annotate access to struct fib_alias.fa_state.
    
    [ Upstream commit 6e84fc395e90465f1418f582a9f7d53c87ab010e ]
    
    syzbot reported that struct fib_alias.fa_state can be
    modified locklessly by RCU readers. [0]
    
    Let's use READ_ONCE()/WRITE_ONCE() properly.
    
    [0]:
    BUG: KCSAN: data-race in fib_table_lookup / fib_table_lookup
    
    write to 0xffff88811b06a7fa of 1 bytes by task 4167 on cpu 0:
     fib_alias_accessed net/ipv4/fib_lookup.h:32 [inline]
     fib_table_lookup+0x361/0xd60 net/ipv4/fib_trie.c:1565
     fib_lookup include/net/ip_fib.h:390 [inline]
     ip_route_output_key_hash_rcu+0x378/0x1380 net/ipv4/route.c:2814
     ip_route_output_key_hash net/ipv4/route.c:2705 [inline]
     __ip_route_output_key include/net/route.h:169 [inline]
     ip_route_output_flow+0x65/0x110 net/ipv4/route.c:2932
     udp_sendmsg+0x13c3/0x15d0 net/ipv4/udp.c:1450
     inet_sendmsg+0xac/0xd0 net/ipv4/af_inet.c:859
     sock_sendmsg_nosec net/socket.c:727 [inline]
     __sock_sendmsg net/socket.c:742 [inline]
     ____sys_sendmsg+0x53a/0x600 net/socket.c:2592
     ___sys_sendmsg+0x195/0x1e0 net/socket.c:2646
     __sys_sendmmsg+0x185/0x320 net/socket.c:2735
     __do_sys_sendmmsg net/socket.c:2762 [inline]
     __se_sys_sendmmsg net/socket.c:2759 [inline]
     __x64_sys_sendmmsg+0x57/0x70 net/socket.c:2759
     x64_sys_call+0x1e28/0x3000 arch/x86/include/generated/asm/syscalls_64.h:308
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xc0/0x2a0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    read to 0xffff88811b06a7fa of 1 bytes by task 4168 on cpu 1:
     fib_alias_accessed net/ipv4/fib_lookup.h:31 [inline]
     fib_table_lookup+0x338/0xd60 net/ipv4/fib_trie.c:1565
     fib_lookup include/net/ip_fib.h:390 [inline]
     ip_route_output_key_hash_rcu+0x378/0x1380 net/ipv4/route.c:2814
     ip_route_output_key_hash net/ipv4/route.c:2705 [inline]
     __ip_route_output_key include/net/route.h:169 [inline]
     ip_route_output_flow+0x65/0x110 net/ipv4/route.c:2932
     udp_sendmsg+0x13c3/0x15d0 net/ipv4/udp.c:1450
     inet_sendmsg+0xac/0xd0 net/ipv4/af_inet.c:859
     sock_sendmsg_nosec net/socket.c:727 [inline]
     __sock_sendmsg net/socket.c:742 [inline]
     ____sys_sendmsg+0x53a/0x600 net/socket.c:2592
     ___sys_sendmsg+0x195/0x1e0 net/socket.c:2646
     __sys_sendmmsg+0x185/0x320 net/socket.c:2735
     __do_sys_sendmmsg net/socket.c:2762 [inline]
     __se_sys_sendmmsg net/socket.c:2759 [inline]
     __x64_sys_sendmmsg+0x57/0x70 net/socket.c:2759
     x64_sys_call+0x1e28/0x3000 arch/x86/include/generated/asm/syscalls_64.h:308
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xc0/0x2a0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    value changed: 0x00 -> 0x01
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 UID: 0 PID: 4168 Comm: syz.4.206 Not tainted syzkaller #0 PREEMPT(voluntary)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv6: annotate data-races in ip6_multipath_hash_{policy,fields}() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jan 15 09:41:37 2026 +0000

    ipv6: annotate data-races in ip6_multipath_hash_{policy,fields}()
    
    [ Upstream commit 03e9d91dd64e2f5ea632df5d59568d91757efc4d ]
    
    Add missing READ_ONCE() when reading sysctl values.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv6: exthdrs: annotate data-race over multiple sysctl [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jan 15 09:41:40 2026 +0000

    ipv6: exthdrs: annotate data-race over multiple sysctl
    
    [ Upstream commit 978b67d28358b0b4eacfa94453d1ad4e09b123ad ]
    
    Following four sysctls can change under us, add missing READ_ONCE().
    
    - ipv6.sysctl.max_dst_opts_len
    - ipv6.sysctl.max_dst_opts_cnt
    - ipv6.sysctl.max_hbh_opts_len
    - ipv6.sysctl.max_hbh_opts_cnt
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv6: fix a race in ip6_sock_set_v6only() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Feb 16 10:22:02 2026 +0000

    ipv6: fix a race in ip6_sock_set_v6only()
    
    [ Upstream commit 452a3eee22c57a5786ae6db5c97f3b0ec13bb3b7 ]
    
    It is unlikely that this function will be ever called
    with isk->inet_num being not zero.
    
    Perform the check on isk->inet_num inside the locked section
    for complete safety.
    
    Fixes: 9b115749acb24 ("ipv6: add ip6_sock_set_v6only")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Fernando Fernandez Mancera <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data() [+ + +]
Author: Qanux <[email protected]>
Date:   Wed Feb 11 12:04:12 2026 +0800

    ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()
    
    [ Upstream commit 6db8b56eed62baacaf37486e83378a72635c04cc ]
    
    On the receive path, __ioam6_fill_trace_data() uses trace->nodelen
    to decide how much data to write for each node. It trusts this field
    as-is from the incoming packet, with no consistency check against
    trace->type (the 24-bit field that tells which data items are
    present). A crafted packet can set nodelen=0 while setting type bits
    0-21, causing the function to write ~100 bytes past the allocated
    region (into skb_shared_info), which corrupts adjacent heap memory
    and leads to a kernel panic.
    
    Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to
    derive the expected nodelen from the type field, and use it:
    
      - in ioam6_iptunnel.c (send path, existing validation) to replace
        the open-coded computation;
      - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose
        nodelen is inconsistent with the type field, before any data is
        written.
    
    Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they
    are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to
    0xff1ffc00).
    
    Fixes: 9ee11f0fff20 ("ipv6: ioam: Data plane support for Pre-allocated Trace")
    Cc: [email protected]
    Signed-off-by: Junxi Qian <[email protected]>
    Reviewed-by: Justin Iurman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
jfs: Add missing set_freezable() for freezable kthread [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Mon Dec 1 19:38:01 2025 +0800

    jfs: Add missing set_freezable() for freezable kthread
    
    [ Upstream commit eb0cfcf265714b419cc3549895a00632e76732ae ]
    
    The jfsIOWait() thread calls try_to_freeze() but lacks set_freezable(),
    causing it to remain non-freezable by default. This prevents proper
    freezing during system suspend.
    
    Add set_freezable() to make the thread freezable as intended.
    
    Signed-off-by: Haotian Zhang <[email protected]>
    Signed-off-by: Dave Kleikamp <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

jfs: nlink overflow in jfs_rename [+ + +]
Author: Jori Koolstra <[email protected]>
Date:   Tue Oct 28 13:22:12 2025 +0100

    jfs: nlink overflow in jfs_rename
    
    [ Upstream commit 9218dc26fd922b09858ecd3666ed57dfd8098da8 ]
    
    If nlink is maximal for a directory (-1) and inside that directory you
    perform a rename for some child directory (not moving from the parent),
    then the nlink of the first directory is first incremented and later
    decremented. Normally this is fine, but when nlink = -1 this causes a
    wrap around to 0, and then drop_nlink issues a warning.
    
    After applying the patch syzbot no longer issues any warnings. I also
    ran some basic fs tests to look for any regressions.
    
    Signed-off-by: Jori Koolstra <[email protected]>
    Reported-by: [email protected]
    Closes: https://syzbot.org/bug?extid=9131ddfd7870623b719f
    Signed-off-by: Dave Kleikamp <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kexec: derive purgatory entry from symbol [+ + +]
Author: Li Chen <[email protected]>
Date:   Tue Jan 20 20:40:04 2026 +0800

    kexec: derive purgatory entry from symbol
    
    [ Upstream commit 480e1d5c64bb14441f79f2eb9421d5e26f91ea3d ]
    
    kexec_load_purgatory() derives image->start by locating e_entry inside an
    SHF_EXECINSTR section.  If the purgatory object contains multiple
    executable sections with overlapping sh_addr, the entrypoint check can
    match more than once and trigger a WARN.
    
    Derive the entry section from the purgatory_start symbol when present and
    compute image->start from its final placement.  Keep the existing e_entry
    fallback for purgatories that do not expose the symbol.
    
    WARNING: kernel/kexec_file.c:1009 at kexec_load_purgatory+0x395/0x3c0, CPU#10: kexec/1784
    Call Trace:
     <TASK>
     bzImage64_load+0x133/0xa00
     __do_sys_kexec_file_load+0x2b3/0x5c0
     do_syscall_64+0x81/0x610
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    [[email protected]: move helper to avoid forward declaration, per Baoquan]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 8652d44f466a ("kexec: support purgatories with .text.hot sections")
    Signed-off-by: Li Chen <[email protected]>
    Acked-by: Baoquan He <[email protected]>
    Cc: Alexander Graf <[email protected]>
    Cc: Eric Biggers <[email protected]>
    Cc: Li Chen <[email protected]>
    Cc: Philipp Rudo <[email protected]>
    Cc: Ricardo Ribalda Delgado <[email protected]>
    Cc: Ross Zwisler <[email protected]>
    Cc: Sourabh Jain <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
KVM: nSVM: Always use vmcb01 in VMLOAD/VMSAVE emulation [+ + +]
Author: Yosry Ahmed <[email protected]>
Date:   Sat Jan 10 00:48:18 2026 +0000

    KVM: nSVM: Always use vmcb01 in VMLOAD/VMSAVE emulation
    
    [ Upstream commit 127ccae2c185f62e6ecb4bf24f9cb307e9b9c619 ]
    
    Commit cc3ed80ae69f ("KVM: nSVM: always use vmcb01 to for vmsave/vmload
    of guest state") made KVM always use vmcb01 for the fields controlled by
    VMSAVE/VMLOAD, but it missed updating the VMLOAD/VMSAVE emulation code
    to always use vmcb01.
    
    As a result, if VMSAVE/VMLOAD is executed by an L2 guest and is not
    intercepted by L1, KVM will mistakenly use vmcb02. Always use vmcb01
    instead of the current VMCB.
    
    Fixes: cc3ed80ae69f ("KVM: nSVM: always use vmcb01 to for vmsave/vmload of guest state")
    Cc: Maxim Levitsky <[email protected]>
    Cc: [email protected]
    Signed-off-by: Yosry Ahmed <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

KVM: nSVM: Remove a user-triggerable WARN on nested_svm_load_cr3() succeeding [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Tue Dec 16 08:17:54 2025 -0800

    KVM: nSVM: Remove a user-triggerable WARN on nested_svm_load_cr3() succeeding
    
    [ Upstream commit fc3ba56385d03501eb582e4b86691ba378e556f9 ]
    
    Drop the WARN in svm_set_nested_state() on nested_svm_load_cr3() failing
    as it is trivially easy to trigger from userspace by modifying CPUID after
    loading CR3.  E.g. modifying the state restoration selftest like so:
    
      --- tools/testing/selftests/kvm/x86/state_test.c
      +++ tools/testing/selftests/kvm/x86/state_test.c
      @@ -280,7 +280,16 @@ int main(int argc, char *argv[])
    
                     /* Restore state in a new VM.  */
                      vcpu = vm_recreate_with_one_vcpu(vm);
      -               vcpu_load_state(vcpu, state);
      +
      +               if (stage == 4) {
      +                       state->sregs.cr3 = BIT(44);
      +                       vcpu_load_state(vcpu, state);
      +
      +                       vcpu_set_cpuid_property(vcpu, X86_PROPERTY_MAX_PHY_ADDR, 36);
      +                       __vcpu_nested_state_set(vcpu, &state->nested);
      +               } else {
      +                       vcpu_load_state(vcpu, state);
      +               }
    
                      /*
                       * Restore XSAVE state in a dummy vCPU, first without doing
    
    generates:
    
      WARNING: CPU: 30 PID: 938 at arch/x86/kvm/svm/nested.c:1877 svm_set_nested_state+0x34a/0x360 [kvm_amd]
      Modules linked in: kvm_amd kvm irqbypass [last unloaded: kvm]
      CPU: 30 UID: 1000 PID: 938 Comm: state_test Tainted: G        W           6.18.0-rc7-58e10b63777d-next-vm
      Tainted: [W]=WARN
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:svm_set_nested_state+0x34a/0x360 [kvm_amd]
      Call Trace:
       <TASK>
       kvm_arch_vcpu_ioctl+0xf33/0x1700 [kvm]
       kvm_vcpu_ioctl+0x4e6/0x8f0 [kvm]
       __x64_sys_ioctl+0x8f/0xd0
       do_syscall_64+0x61/0xad0
       entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Simply delete the WARN instead of trying to prevent userspace from shoving
    "illegal" state into CR3.  For better or worse, KVM's ABI allows userspace
    to set CPUID after SREGS, and vice versa, and KVM is very permissive when
    it comes to guest CPUID.  I.e. attempting to enforce the virtual CPU model
    when setting CPUID could break userspace.  Given that the WARN doesn't
    provide any meaningful protection for KVM or benefit for userspace, simply
    drop it even though the odds of breaking userspace are minuscule.
    
    Opportunistically delete a spurious newline.
    
    Fixes: b222b0b88162 ("KVM: nSVM: refactor the CR3 reload on migration")
    Cc: [email protected]
    Cc: Yosry Ahmed <[email protected]>
    Reviewed-by: Yosry Ahmed <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
lan78xx: Fix memory allocation bug [+ + +]
Author: John Efstathiades <[email protected]>
Date:   Thu Nov 18 11:01:34 2021 +0000

    lan78xx: Fix memory allocation bug
    
    [ Upstream commit a6df95cae40bee555e01a37b4023ce8e97ffa249 ]
    
    Fix memory allocation that fails to check for NULL return.
    
    Signed-off-by: John Efstathiades <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: f1e2f0ce704e ("net: usb: lan78xx: scan all MDIO addresses on LAN7801")
    Signed-off-by: Sasha Levin <[email protected]>

 
libbpf: Fix dumping big-endian bitfields [+ + +]
Author: Ilya Leoshkevich <[email protected]>
Date:   Wed Oct 13 18:09:00 2021 +0200

    libbpf: Fix dumping big-endian bitfields
    
    [ Upstream commit c9e982b879465ca74e3593ce82808aa259265a71 ]
    
    On big-endian arches not only bytes, but also bits are numbered in
    reverse order (see e.g. S/390 ELF ABI Supplement, but this is also true
    for other big-endian arches as well).
    
    Signed-off-by: Ilya Leoshkevich <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Stable-dep-of: 5714ca8cba5e ("libbpf: Fix OOB read in btf_dump_get_bitfield_value")
    Signed-off-by: Sasha Levin <[email protected]>

libbpf: Fix OOB read in btf_dump_get_bitfield_value [+ + +]
Author: Varun R Mallya <[email protected]>
Date:   Wed Jan 7 05:05:27 2026 +0530

    libbpf: Fix OOB read in btf_dump_get_bitfield_value
    
    [ Upstream commit 5714ca8cba5ed736f3733663c446cbee63a10a64 ]
    
    When dumping bitfield data, btf_dump_get_bitfield_value() reads data
    based on the underlying type's size (t->size). However, it does not
    verify that the provided data buffer (data_sz) is large enough to
    contain these bytes.
    
    If btf_dump__dump_type_data() is called with a buffer smaller than
    the type's size, this leads to an out-of-bounds read. This was
    confirmed by AddressSanitizer in the linked issue.
    
    Fix this by ensuring we do not read past the provided data_sz limit.
    
    Fixes: a1d3cc3c5eca ("libbpf: Avoid use of __int128 in typed dump display")
    Reported-by: Harrison Green <[email protected]>
    Suggested-by: Alan Maguire <[email protected]>
    Signed-off-by: Varun R Mallya <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    
    Closes: https://github.com/libbpf/libbpf/issues/928
    Signed-off-by: Sasha Levin <[email protected]>

 
libceph: define and enforce CEPH_MAX_KEY_LEN [+ + +]
Author: Ilya Dryomov <[email protected]>
Date:   Fri Jul 4 16:30:50 2025 +0200

    libceph: define and enforce CEPH_MAX_KEY_LEN
    
    [ Upstream commit ac431d597a9bdfc2ba6b314813f29a6ef2b4a3bf ]
    
    When decoding the key, verify that the key material would fit into
    a fixed-size buffer in process_auth_done() and generally has a sane
    length.
    
    The new CEPH_MAX_KEY_LEN check replaces the existing check for a key
    with no key material which is a) not universal since CEPH_CRYPTO_NONE
    has to be excluded and b) doesn't provide much value since a smaller
    than needed key is just as invalid as no key -- this has to be handled
    elsewhere anyway.
    
    Signed-off-by: Ilya Dryomov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
libperf build: Always place libperf includes first [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Mon Feb 2 22:09:18 2026 -0800

    libperf build: Always place libperf includes first
    
    [ Upstream commit 8c5b40678c63be6b85f1c2dc8c8b89d632faf988 ]
    
    When building tools/perf the CFLAGS can contain a directory for the
    installed headers.
    
    As the headers may be being installed while building libperf.a this can
    cause headers to be partially installed and found in the include path
    while building an object file for libperf.a.
    
    The installed header may reference other installed headers that are
    missing given the partial nature of the install and then the build fails
    with a missing header file.
    
    Avoid this by ensuring the libperf source headers are always first in
    the CFLAGS.
    
    Fixes: 3143504918105156 ("libperf: Make libperf.a part of the perf build")
    Signed-off-by: Ian Rogers <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
libperf: Don't remove -g when EXTRA_CFLAGS are used [+ + +]
Author: James Clark <[email protected]>
Date:   Wed Mar 19 11:40:09 2025 +0000

    libperf: Don't remove -g when EXTRA_CFLAGS are used
    
    [ Upstream commit f5b07010c13c77541e8ade167d05bef3b8a63739 ]
    
    When using EXTRA_CFLAGS, for example "EXTRA_CFLAGS=-DREFCNT_CHECKING=1",
    this construct stops setting -g which you'd expect would not be affected
    by adding extra flags. Additionally, EXTRA_CFLAGS should be the last
    thing to be appended so that it can be used to undo any defaults. And no
    condition is required, just += appends to any existing CFLAGS and also
    appends or doesn't append EXTRA_CFLAGS if they are or aren't set.
    
    It's not clear why DEBUG=1 is required for -g in Perf when in libperf
    it's always on, but I don't think we need to change that behavior now
    because someone may be depending on it.
    
    Signed-off-by: James Clark <[email protected]>
    Reviewed-by: Ian Rogers <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Namhyung Kim <[email protected]>
    Stable-dep-of: 8c5b40678c63 ("libperf build: Always place libperf includes first")
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 5.15.202 [+ + +]
Author: Sasha Levin <[email protected]>
Date:   Wed Mar 4 07:36:34 2026 -0500

    Linux 5.15.202
    
    Signed-off-by: Sasha Levin <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Vijayendra Suman <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Mark Brown <[email protected]>

 
m68k: nommu: fix memmove() with differently aligned src and dest for 68000 [+ + +]
Author: Daniel Palmer <[email protected]>
Date:   Sat Dec 13 21:04:01 2025 +0900

    m68k: nommu: fix memmove() with differently aligned src and dest for 68000
    
    [ Upstream commit 590fe2f46c8698bb758f9002cb247ca10ce95569 ]
    
    68000 has different alignment needs to 68020+.
    memcpy() checks if the destination is aligned and does a smaller copy
    to fix the alignment and then critically for 68000 it checks if the
    source is still unaligned and if it is reverts to smaller copies.
    
    memmove() does not currently do the second part and malfunctions if
    one of the pointers is aligned and the other isn't.
    
    This is apparently getting triggered by printk. If I put breakpoints
    into the new checks added by this commit the first hit looks like this:
    
    memmove (n=205, src=0x2f3971 <printk_shared_pbufs+205>, dest=0x2f3980 <printk_shared_pbufs+220>) at arch/m68k/lib/memmove.c:82
    
    Signed-off-by: Daniel Palmer <[email protected]>
    Signed-off-by: Greg Ungerer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
macvlan: observe an RCU grace period in macvlan_common_newlink() error path [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 13 14:25:57 2026 +0000

    macvlan: observe an RCU grace period in macvlan_common_newlink() error path
    
    [ Upstream commit e3f000f0dee1bfab52e2e61ca6a3835d9e187e35 ]
    
    valis reported that a race condition still happens after my prior patch.
    
    macvlan_common_newlink() might have made @dev visible before
    detecting an error, and its caller will directly call free_netdev(dev).
    
    We must respect an RCU period, either in macvlan or the core networking
    stack.
    
    After adding a temporary mdelay(1000) in macvlan_forward_source_one()
    to open the race window, valis repro was:
    
    ip link add p1 type veth peer p2
    ip link set address 00:00:00:00:00:20 dev p1
    ip link set up dev p1
    ip link set up dev p2
    ip link add mv0 link p2 type macvlan mode source
    
    (ip link add invalid% link p2 type macvlan mode source macaddr add
    00:00:00:00:00:20 &) ; sleep 0.5 ; ping -c1 -I p1 1.2.3.4
    PING 1.2.3.4 (1.2.3.4): 56 data bytes
    RTNETLINK answers: Invalid argument
    
    BUG: KASAN: slab-use-after-free in macvlan_forward_source
    (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
    Read of size 8 at addr ffff888016bb89c0 by task e/175
    
    CPU: 1 UID: 1000 PID: 175 Comm: e Not tainted 6.19.0-rc8+ #33 NONE
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
    Call Trace:
    <IRQ>
    dump_stack_lvl (lib/dump_stack.c:123)
    print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)
    ? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
    kasan_report (mm/kasan/report.c:597)
    ? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
    macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
    ? tasklet_init (kernel/softirq.c:983)
    macvlan_handle_frame (drivers/net/macvlan.c:501)
    
    Allocated by task 169:
    kasan_save_stack (mm/kasan/common.c:58)
    kasan_save_track (./arch/x86/include/asm/current.h:25
    mm/kasan/common.c:70 mm/kasan/common.c:79)
    __kasan_kmalloc (mm/kasan/common.c:419)
    __kvmalloc_node_noprof (./include/linux/kasan.h:263 mm/slub.c:5657
    mm/slub.c:7140)
    alloc_netdev_mqs (net/core/dev.c:12012)
    rtnl_create_link (net/core/rtnetlink.c:3648)
    rtnl_newlink (net/core/rtnetlink.c:3830 net/core/rtnetlink.c:3957
    net/core/rtnetlink.c:4072)
    rtnetlink_rcv_msg (net/core/rtnetlink.c:6958)
    netlink_rcv_skb (net/netlink/af_netlink.c:2550)
    netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344)
    netlink_sendmsg (net/netlink/af_netlink.c:1894)
    __sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206)
    __x64_sys_sendto (net/socket.c:2209)
    do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131)
    
    Freed by task 169:
    kasan_save_stack (mm/kasan/common.c:58)
    kasan_save_track (./arch/x86/include/asm/current.h:25
    mm/kasan/common.c:70 mm/kasan/common.c:79)
    kasan_save_free_info (mm/kasan/generic.c:587)
    __kasan_slab_free (mm/kasan/common.c:287)
    kfree (mm/slub.c:6674 mm/slub.c:6882)
    rtnl_newlink (net/core/rtnetlink.c:3845 net/core/rtnetlink.c:3957
    net/core/rtnetlink.c:4072)
    rtnetlink_rcv_msg (net/core/rtnetlink.c:6958)
    netlink_rcv_skb (net/netlink/af_netlink.c:2550)
    netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344)
    netlink_sendmsg (net/netlink/af_netlink.c:1894)
    __sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206)
    __x64_sys_sendto (net/socket.c:2209)
    do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131)
    
    Fixes: f8db6475a836 ("macvlan: fix error recovery in macvlan_common_newlink()")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reported-by: valis <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mailbox: bcm-ferxrm-mailbox: Use default primary handler [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 28 10:55:24 2026 +0100

    mailbox: bcm-ferxrm-mailbox: Use default primary handler
    
    [ Upstream commit 03843d95a4a4e0ba22ad4fcda65ccf21822b104c ]
    
    request_threaded_irq() is invoked with a primary and a secondary handler
    and no flags are passed. The primary handler is the same as
    irq_default_primary_handler() so there is no need to have an identical
    copy.
    
    The lack of the IRQF_ONESHOT flag can be dangerous because the interrupt
    source is not masked while the threaded handler is active. This means,
    especially on LEVEL typed interrupt lines, the interrupt can fire again
    before the threaded handler had a chance to run.
    
    Use the default primary interrupt handler by specifying NULL and set
    IRQF_ONESHOT so the interrupt source is masked until the secondary handler
    is done.
    
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

mailbox: sprd: clear delivery flag before handling TX done [+ + +]
Author: Otto Pflüger <[email protected]>
Date:   Sat Jan 10 16:43:36 2026 +0100

    mailbox: sprd: clear delivery flag before handling TX done
    
    [ Upstream commit c77661d60d4223bf2ff10d409beb0c3b2021183b ]
    
    If there are any pending messages in the mailbox queue, they are sent
    as soon as a TX done event arrives from the driver. This may trigger a
    new delivery interrupt while the previous one is still being handled.
    If the delivery status is cleared after this, the interrupt is lost.
    To prevent this from happening, clear the delivery status immediately
    after checking it and before any new messages are sent.
    
    Signed-off-by: Otto Pflüger <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mailbox: sprd: mask interrupts that are not handled [+ + +]
Author: Otto Pflüger <[email protected]>
Date:   Sat Jan 10 16:43:38 2026 +0100

    mailbox: sprd: mask interrupts that are not handled
    
    [ Upstream commit 75df94d05fc03fd9d861eaf79ce10fbb7a548bd8 ]
    
    To reduce the amount of spurious interrupts, disable the interrupts that
    are not handled in this driver.
    
    Signed-off-by: Otto Pflüger <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
md/bitmap: fix GPF in write_page caused by resize race [+ + +]
Author: Jack Wang <[email protected]>
Date:   Tue Jan 20 11:24:56 2026 +0100

    md/bitmap: fix GPF in write_page caused by resize race
    
    [ Upstream commit 46ef85f854dfa9d5226b3c1c46493d79556c9589 ]
    
    A General Protection Fault occurs in write_page() during array resize:
    RIP: 0010:write_page+0x22b/0x3c0 [md_mod]
    
    This is a use-after-free race between bitmap_daemon_work() and
    __bitmap_resize(). The daemon iterates over `bitmap->storage.filemap`
    without locking, while the resize path frees that storage via
    md_bitmap_file_unmap(). `quiesce()` does not stop the md thread,
    allowing concurrent access to freed pages.
    
    Fix by holding `mddev->bitmap_info.mutex` during the bitmap update.
    
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Closes: https://lore.kernel.org/linux-raid/CAMGffE=Mbfp=7xD_hYxXk1PAaCZNSEAVeQGKGy7YF9f2S4=NEA@mail.gmail.com/T/#u
    Cc: [email protected]
    Fixes: d60b479d177a ("md/bitmap: add bitmap_resize function to allow bitmap resizing.")
    Signed-off-by: Jack Wang <[email protected]>
    Signed-off-by: Yu Kuai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
md/raid10: fix any_working flag handling in raid10_sync_request [+ + +]
Author: Li Nan <[email protected]>
Date:   Mon Jan 5 19:02:58 2026 +0800

    md/raid10: fix any_working flag handling in raid10_sync_request
    
    [ Upstream commit 99582edb3f62e8ee6c34512021368f53f9b091f2 ]
    
    In raid10_sync_request(), 'any_working' indicates if any IO will
    be submitted. When there's only one In_sync disk with badblocks,
    'any_working' might be set to 1 but no IO is submitted. Fix it by
    setting 'any_working' after badblock checks.
    
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Fixes: e875ecea266a ("md/raid10 record bad blocks as needed during recovery.")
    Signed-off-by: Li Nan <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Signed-off-by: Yu Kuai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
media: adv7180: fix frame interval in progressive mode [+ + +]
Author: Thorsten Schmelzer <[email protected]>
Date:   Tue Nov 25 15:29:57 2025 +0100

    media: adv7180: fix frame interval in progressive mode
    
    [ Upstream commit 90289b67c5c1d4c18784059b27460d292e16d208 ]
    
    The ADV7280-M may internally convert interlaced video input to
    progressive video. If this mode is enabled, the ADV7280-M delivers
    progressive video frames at the field rate of 50 fields per second (PAL)
    or 60 fields per second (NTSC).
    
    Fix the reported frame interval if progressive video is enabled.
    
    Signed-off-by: Thorsten Schmelzer <[email protected]>
    Reviewed-by: Niklas Söderlund <[email protected]>
    Signed-off-by: Michael Tretter <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: ccs: Accommodate C-PHY into the calculation [+ + +]
Author: David Heidelberg <[email protected]>
Date:   Fri Jan 9 18:57:07 2026 +0100

    media: ccs: Accommodate C-PHY into the calculation
    
    [ Upstream commit 3085977e734dab74adebb1dda195befce25addff ]
    
    We need to set correct mode for PLL to calculate correct frequency.
    Signalling mode is known at this point, so use it for that.
    
    Fixes: 47b6eaf36eba ("media: ccs-pll: Differentiate between CSI-2 D-PHY and C-PHY")
    Reviewed-by: Mehdi Djait <[email protected]>
    Signed-off-by: David Heidelberg <[email protected]>
    [Sakari Ailus: Drop extra newline.]
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: ccs: Avoid possible division by zero [+ + +]
Author: Sakari Ailus <[email protected]>
Date:   Tue Nov 25 00:24:48 2025 +0200

    media: ccs: Avoid possible division by zero
    
    [ Upstream commit 679f0b7b6a409750a25754c8833e268e5fdde742 ]
    
    Calculating maximum M for scaler configuration involves dividing by
    MIN_X_OUTPUT_SIZE limit register's value. Albeit the value is presumably
    non-zero, the driver was missing the check it in fact was. Fix this.
    
    Reported-by: Josh Poimboeuf <[email protected]>
    Closes: https://lore.kernel.org/all/ahukd6b3wonye3zgtptvwzvrxldcruazs2exfvll6etjhmcxyj@vq3eh6pd375b/
    Fixes: ccfc97bdb5ae ("[media] smiapp: Add driver")
    Cc: [email protected] # for 5.15 and later
    Signed-off-by: Sakari Ailus <[email protected]>
    Reviewed-by: Nathan Chancellor <[email protected]>
    Tested-by: Nathan Chancellor <[email protected]> # build
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cx23885: Add missing unmap in snd_cx23885_hw_params() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Wed Dec 10 11:02:17 2025 +0800

    media: cx23885: Add missing unmap in snd_cx23885_hw_params()
    
    [ Upstream commit 141c81849fab2ad4d6e3fdaff7cbaa873e8b5eb2 ]
    
    In error path, add cx23885_alsa_dma_unmap() to release the
    resource acquired by cx23885_alsa_dma_map().
    
    Fixes: 9529a4b0cf49 ("[media] cx23885: drop videobuf abuse in cx23885-alsa")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cx25821: Add missing unmap in snd_cx25821_hw_params() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Wed Dec 10 16:52:30 2025 +0800

    media: cx25821: Add missing unmap in snd_cx25821_hw_params()
    
    [ Upstream commit 863f50d583445c3c8b28a0fc4bb9c18fd9656f41 ]
    
    In error path, add cx25821_alsa_dma_unmap() to release the
    resource acquired by cx25821_alsa_dma_map()
    
    Fixes: 8d8e6d6005de ("[media] cx28521: drop videobuf abuse in cx25821-alsa")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cx25821: Fix a resource leak in cx25821_dev_setup() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Sat Jan 3 15:46:47 2026 +0800

    media: cx25821: Fix a resource leak in cx25821_dev_setup()
    
    [ Upstream commit 68cd8ac994cac38a305200f638b30e13c690753b ]
    
    Add release_mem_region() if ioremap() fails to release the memory
    region obtained by cx25821_get_resources().
    
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cx88: Add missing unmap in snd_cx88_hw_params() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Wed Dec 10 10:53:48 2025 +0800

    media: cx88: Add missing unmap in snd_cx88_hw_params()
    
    [ Upstream commit dbc527d980f7ba8559de38f8c1e4158c71a78915 ]
    
    In error path, add cx88_alsa_dma_unmap() to release
    resource acquired by cx88_alsa_dma_map().
    
    Fixes: b2c75abde0de ("[media] cx88: drop videobuf abuse in cx88-alsa")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: dvb-core: dmxdevfilter must always flush bufs [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Thu Jun 5 08:57:35 2025 +0200

    media: dvb-core: dmxdevfilter must always flush bufs
    
    [ Upstream commit c4e620eccbef76aa5564ebb295e23d6540e27215 ]
    
    Currently the buffers are being filled until full, which works fine
    for the transport stream, but not when reading sections, those have
    to be returned to userspace immediately, otherwise dvbv5-scan will
    just wait forever.
    
    Add a 'flush' argument to dvb_vb2_fill_buffer to indicate whether
    the buffer must be flushed or wait until it is full.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c/tw9903: Fix potential memory leak in tw9903_probe() [+ + +]
Author: Abdun Nihaal <[email protected]>
Date:   Tue Dec 23 11:18:13 2025 +0530

    media: i2c/tw9903: Fix potential memory leak in tw9903_probe()
    
    [ Upstream commit 9cea16fea47e5553f51d10957677ff735b1eff03 ]
    
    In one of the error paths in tw9903_probe(), the memory allocated in
    v4l2_ctrl_handler_init() and v4l2_ctrl_new_std() is not freed. Fix that
    by calling v4l2_ctrl_handler_free() on the handler in that error path.
    
    Cc: [email protected]
    Fixes: 0890ec19c65d ("[media] tw9903: add new tw9903 video decoder")
    Signed-off-by: Abdun Nihaal <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c/tw9906: Fix potential memory leak in tw9906_probe() [+ + +]
Author: Abdun Nihaal <[email protected]>
Date:   Tue Dec 23 11:19:01 2025 +0530

    media: i2c/tw9906: Fix potential memory leak in tw9906_probe()
    
    [ Upstream commit cad237b6c875fbee5d353a2b289e98d240d17ec8 ]
    
    In one of the error paths in tw9906_probe(), the memory allocated in
    v4l2_ctrl_handler_init() and v4l2_ctrl_new_std() is not freed. Fix that
    by calling v4l2_ctrl_handler_free() on the handler in that error path.
    
    Cc: [email protected]
    Fixes: a000e9a02b58 ("[media] tw9906: add Techwell tw9906 video decoder")
    Signed-off-by: Abdun Nihaal <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov5647: Correct minimum VBLANK value [+ + +]
Author: David Plowman <[email protected]>
Date:   Mon Dec 22 13:45:27 2025 +0530

    media: i2c: ov5647: Correct minimum VBLANK value
    
    [ Upstream commit 1438248c5a82c86b4e1f0311c3bb827af747a8cf ]
    
    Trial and error reveals that the minimum vblank value appears to be 24
    (the OV5647 data sheet does not give any clues). This fixes streaming
    lock-ups in full resolution mode.
    
    Fixes: 2512c06441e3 ("media: ov5647: Support V4L2_CID_VBLANK control")
    Cc: [email protected]
    Signed-off-by: David Plowman <[email protected]>
    Reviewed-by: Jacopo Mondi <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov5647: Correct pixel array offset [+ + +]
Author: David Plowman <[email protected]>
Date:   Mon Dec 22 13:45:26 2025 +0530

    media: i2c: ov5647: Correct pixel array offset
    
    [ Upstream commit a4e62e597f21bb37db0ad13aca486094e9188167 ]
    
    The top offset in the pixel array is actually 6 (see page 3-1 of the
    OV5647 data sheet).
    
    Fixes: 14f70a3232aa ("media: ov5647: Add support for get_selection()")
    Cc: [email protected]
    Signed-off-by: David Plowman <[email protected]>
    Reviewed-by: Jacopo Mondi <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov5647: Fix PIXEL_RATE value for VGA mode [+ + +]
Author: Jai Luthra <[email protected]>
Date:   Mon Dec 22 13:45:29 2025 +0530

    media: i2c: ov5647: Fix PIXEL_RATE value for VGA mode
    
    [ Upstream commit c063632b494b02e891442d10f17e37b7fcfab9b3 ]
    
    The pixel rate for VGA (640x480) mode is configured in the mode's table
    to be 58.333 MPix/s instead of 55 MPix/s, so fix it.
    
    Fixes: 911f4516ee2b ("media: ov5647: Support V4L2_CID_PIXEL_RATE")
    Cc: [email protected]
    Link: https://lore.kernel.org/all/CAPY8ntA2TCf9FuB6Nk%2BOn%[email protected]/
    Suggested-by: Dave Stevenson <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov5647: Initialize subdev before controls [+ + +]
Author: Jai Luthra <[email protected]>
Date:   Mon Dec 22 13:45:25 2025 +0530

    media: i2c: ov5647: Initialize subdev before controls
    
    [ Upstream commit eee13cbccacb6d0a3120c126b8544030905b069d ]
    
    In ov5647_init_controls() we call v4l2_get_subdevdata, but it is
    initialized by v4l2_i2c_subdev_init() in the probe, which currently
    happens after init_controls(). This can result in a segfault if the
    error condition is hit, and we try to access i2c_client, so fix the
    order.
    
    Fixes: 4974c2f19fd8 ("media: ov5647: Support gain, exposure and AWB controls")
    Cc: [email protected]
    Suggested-by: Jacopo Mondi <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov5647: Sensor should report RAW color space [+ + +]
Author: David Plowman <[email protected]>
Date:   Mon Dec 22 13:45:28 2025 +0530

    media: i2c: ov5647: Sensor should report RAW color space
    
    [ Upstream commit f007586b1e89dcea40168415d0422cb7a0fc31b1 ]
    
    As this sensor captures RAW bayer frames, the colorspace should be
    V4L2_COLORSPACE_RAW instead of SRGB.
    
    Fixes: a8df5af695a1 ("media: ov5647: Add SGGBR10_1X10 modes")
    Cc: [email protected]
    Signed-off-by: David Plowman <[email protected]>
    Reviewed-by: Jacopo Mondi <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov5647: use our own mutex for the ctrl lock [+ + +]
Author: Xiaolei Wang <[email protected]>
Date:   Fri Dec 5 15:19:18 2025 +0800

    media: i2c: ov5647: use our own mutex for the ctrl lock
    
    [ Upstream commit 973e42fd5d2b397bff34f0c249014902dbf65912 ]
    
    __v4l2_ctrl_handler_setup() and __v4l2_ctrl_modify_range() contains an
    assertion to verify that the v4l2_ctrl_handler::lock is held, as it should
    only be called when the lock has already been acquired. Therefore use our
    own mutex for the ctrl lock, otherwise a warning will be reported.
    
    Fixes: 4974c2f19fd8 ("media: ov5647: Support gain, exposure and AWB controls")
    Cc: [email protected]
    Signed-off-by: Xiaolei Wang <[email protected]>
    [Sakari Ailus: Fix a minor conflict.]
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: mtk-mdp: Fix a reference leak bug in mtk_mdp_remove() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Wed Oct 8 17:01:56 2025 +0800

    media: mtk-mdp: Fix a reference leak bug in mtk_mdp_remove()
    
    [ Upstream commit f128bab57b8018e526b7eda854ca20069863af47 ]
    
    In mtk_mdp_probe(), vpu_get_plat_device() increases the reference
    count of the returned platform device. Add platform_device_put()
    to prevent reference leak.
    
    Fixes: c8eb2d7e8202 ("[media] media: Add Mediatek MDP Driver")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Nicolas Dufresne <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: mtk-mdp: Fix error handling in probe function [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Wed Oct 8 16:55:03 2025 +0800

    media: mtk-mdp: Fix error handling in probe function
    
    [ Upstream commit 8a8a3232abac5b972058a5f2cb3e33199d2a8648 ]
    
    Add mtk_mdp_unregister_m2m_device() on the error handling path to prevent
    resource leak.
    
    Add check for the return value of vpu_get_plat_device() to prevent null
    pointer dereference. And vpu_get_plat_device() increases the reference
    count of the returned platform device. Add platform_device_put() to
    prevent reference leak.
    
    Fixes: c8eb2d7e8202 ("[media] media: Add Mediatek MDP Driver")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Nicolas Dufresne <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Fri Oct 17 15:26:40 2025 +0200

    media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes
    
    [ Upstream commit 44c03802a5191626996ee9db4bac090b164ca340 ]
    
    The isp_video_mbus_to_pix/pix_to_mbus functions did not take
    the last empty entry { 0, } of the formats array into account.
    
    As a result, isp_video_mbus_to_pix would accept code 0 and
    isp_video_pix_to_mbus would select code 0 if no match was found.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Acked-by: Sakari Ailus <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: omap3isp: isppreview: always clamp in preview_try_format() [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Tue Oct 7 17:09:18 2025 +0200

    media: omap3isp: isppreview: always clamp in preview_try_format()
    
    [ Upstream commit 17e1e1641f74a89824d4de3aa38c78daa5686cc1 ]
    
    If prev->input != PREVIEW_INPUT_MEMORY the width and height weren't
    clamped. Just always clamp.
    
    This fixes a v4l2-compliance error:
    
            fail: v4l2-test-subdevs.cpp(171): fse.max_width == ~0U || fse.max_height == ~0U
            fail: v4l2-test-subdevs.cpp(270): ret && ret != ENOTTY
    test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: FAIL
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Acked-by: Sakari Ailus <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: omap3isp: set initial format [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Wed Apr 30 09:21:53 2025 +0200

    media: omap3isp: set initial format
    
    [ Upstream commit 7575b8dfa91f82fcb34ffd5568ff415ac4685794 ]
    
    Initialize the v4l2_format to a default. Empty formats are
    not allowed in V4L2, so this fixes v4l2-compliance issues:
    
            fail: v4l2-test-formats.cpp(514): !pix.width || !pix.height
    test VIDIOC_G_FMT: FAIL
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Acked-by: Sakari Ailus <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: pvrusb2: fix URB leak in pvr2_send_request_ex [+ + +]
Author: Szymon Wilczek <[email protected]>
Date:   Sat Dec 20 19:24:19 2025 +0100

    media: pvrusb2: fix URB leak in pvr2_send_request_ex
    
    [ Upstream commit a8333c8262aed2aedf608c18edd39cf5342680a7 ]
    
    When pvr2_send_request_ex() submits a write URB successfully but fails to
    submit the read URB (e.g. returns -ENOMEM), it returns immediately without
    waiting for the write URB to complete. Since the driver reuses the same
    URB structure, a subsequent call to pvr2_send_request_ex() attempts to
    submit the still-active write URB, triggering a 'URB submitted while
    active' warning in usb_submit_urb().
    
    Fix this by ensuring the write URB is unlinked and waited upon if the read
    URB submission fails.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=405dcd13121ff75a9e16
    Signed-off-by: Szymon Wilczek <[email protected]>
    Acked-by: Mike Isely <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: radio-keene: fix memory leak in error path [+ + +]
Author: Shaurya Rane <[email protected]>
Date:   Thu Nov 27 00:34:10 2025 +0530

    media: radio-keene: fix memory leak in error path
    
    [ Upstream commit b8bf939d77c0cd01118e953bbf554e0fa15e9006 ]
    
    Fix a memory leak in usb_keene_probe(). The v4l2 control handler is
    initialized and controls are added, but if v4l2_device_register() or
    video_register_device() fails afterward, the handler was never freed,
    leaking memory.
    
    Add v4l2_ctrl_handler_free() call in the err_v4l2 error path to ensure
    the control handler is properly freed for all error paths after it is
    initialized.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=a41b73dce23962a74c72
    Fixes: 1bf20c3a0c61 ("[media] radio-keene: add a driver for the Keene FM Transmitter")
    Cc: [email protected]
    Signed-off-by: Shaurya Rane <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: solo6x10: Check for out of bounds chip_id [+ + +]
Author: Kees Cook <[email protected]>
Date:   Thu Dec 11 19:00:35 2025 -0800

    media: solo6x10: Check for out of bounds chip_id
    
    [ Upstream commit 0fdf6323c35a134f206dcad5babb4ff488552076 ]
    
    Clang with CONFIG_UBSAN_SHIFT=y noticed a condition where a signed type
    (literal "1" is an "int") could end up being shifted beyond 32 bits,
    so instrumentation was added (and due to the double is_tw286x() call
    seen via inlining), Clang decides the second one must now be undefined
    behavior and elides the rest of the function[1]. This is a known problem
    with Clang (that is still being worked on), but we can avoid the entire
    problem by actually checking the existing max chip ID, and now there is
    no runtime instrumentation added at all since everything is known to be
    within bounds.
    
    Additionally use an unsigned value for the shift to remove the
    instrumentation even without the explicit bounds checking.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/2144 [1]
    Suggested-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [hverkuil: fix checkpatch warning for is_tw286x]
    Signed-off-by: Sasha Levin <[email protected]>

media: uvcvideo: Fix allocation for small frame sizes [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Wed Jan 14 10:32:13 2026 +0000

    media: uvcvideo: Fix allocation for small frame sizes
    
    [ Upstream commit 40d3ac25c11310bfaa50ed7614846ef75cb69a1e ]
    
    If a frame has size of less or equal than one packet size
    uvc_alloc_urb_buffers() is unable to allocate memory for it due to a
    off-by-one error.
    
    Fix the off-by-one-error and now that we are at it, make sure that
    stream->urb_size has always a valid value when we return from the
    function, even when an error happens.
    
    Fixes: efdc8a9585ce ("V4L/DVB (10295): uvcvideo: Retry URB buffers allocation when the system is low on memory.")
    Reported-by: Itay Chamiel <[email protected]>
    Closes: https://lore.kernel.org/linux-media/CANiDSCsSoZf2LsCCoWAUbCg6tJT-ypXR1B85aa6rAdMVYr2iBQ@mail.gmail.com/T/#t
    Co-developed-by: Itay Chamiel <[email protected]>
    Signed-off-by: Itay Chamiel <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Tested-by: Itay Chamiel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: venus: vdec: fix error state assignment for zero bytesused [+ + +]
Author: Renjiang Han <[email protected]>
Date:   Thu Dec 11 15:20:39 2025 +0530

    media: venus: vdec: fix error state assignment for zero bytesused
    
    [ Upstream commit 93ecd6ee95c38cb533fa25f48d3c1c8cb69f410f ]
    
    When hfi_session_flush is issued, all queued buffers are returned to
    the V4L2 driver. Some of these buffers are not processed and have
    bytesused = 0. Currently, the driver marks such buffers as error even
    during drain operations, which can incorrectly flag EOS buffers.
    
    Only capture buffers with zero payload (and not EOS) should be marked
    with VB2_BUF_STATE_ERROR. The check is performed inside the non-EOS
    branch to ensure correct handling.
    
    Fixes: 51df3c81ba10b ("media: venus: vdec: Mark flushed buffers with error state")
    Signed-off-by: Renjiang Han <[email protected]>
    Reviewed-by: Vikash Garodia <[email protected]>
    Cc: [email protected]
    Signed-off-by: Bryan O'Donoghue <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mfd: arizona: Fix regulator resource leak on wm5102_clear_write_sequencer() failure [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Sun Dec 14 22:58:03 2025 +0800

    mfd: arizona: Fix regulator resource leak on wm5102_clear_write_sequencer() failure
    
    [ Upstream commit 4feb753ba6e5e5bbaba868b841a2db41c21e56fa ]
    
    The wm5102_clear_write_sequencer() helper may return an error
    and just return, bypassing the cleanup sequence and causing
    regulators to remain enabled, leading to a resource leak.
    
    Change the direct return to jump to the err_reset label to
    properly free the resources.
    
    Fixes: 1c1c6bba57f5 ("mfd: wm5102: Ensure we always boot the device fully")
    Signed-off-by: Haotian Zhang <[email protected]>
    Reviewed-by: Charles Keepax <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mfd: wm8350-core: Use IRQF_ONESHOT [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 28 10:55:35 2026 +0100

    mfd: wm8350-core: Use IRQF_ONESHOT
    
    [ Upstream commit 553b4999cbe231b5011cb8db05a3092dec168aca ]
    
    Using a threaded interrupt without a dedicated primary handler mandates
    the IRQF_ONESHOT flag to mask the interrupt source while the threaded
    handler is active. Otherwise the interrupt can fire again before the
    threaded handler had a chance to run.
    
    Mark explained that this should not happen with this hardware since it
    is a slow irqchip which is behind an I2C/ SPI bus but the IRQ-core will
    refuse to accept such a handler.
    
    Set IRQF_ONESHOT so the interrupt source is masked until the secondary
    handler is done.
    
    Fixes: 1c6c69525b40e ("genirq: Reject bogus threaded irq requests")
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Charles Keepax <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
minix: Add required sanity checking to minix_check_superblock() [+ + +]
Author: Jori Koolstra <[email protected]>
Date:   Mon Dec 8 16:39:47 2025 +0100

    minix: Add required sanity checking to minix_check_superblock()
    
    [ Upstream commit 8c97a6ddc95690a938ded44b4e3202f03f15078c ]
    
    The fs/minix implementation of the minix filesystem does not currently
    support any other value for s_log_zone_size than 0. This is also the
    only value supported in util-linux; see mkfs.minix.c line 511. In
    addition, this patch adds some sanity checking for the other minix
    superblock fields, and moves the minix_blocks_needed() checks for the
    zmap and imap also to minix_check_super_block().
    
    This also closes a related syzbot bug report.
    
    Signed-off-by: Jori Koolstra <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Jan Kara <[email protected]>
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=5ad0824204c7bf9b67f2
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
MIPS: Loongson: Make cpumask_of_node() robust against NUMA_NO_NODE [+ + +]
Author: John Garry <[email protected]>
Date:   Wed Jan 7 09:40:06 2026 +0000

    MIPS: Loongson: Make cpumask_of_node() robust against NUMA_NO_NODE
    
    [ Upstream commit d55d3fe2d1470ac5b6e93efe7998b728013c9fc8 ]
    
    The arch definition of cpumask_of_node() cannot handle NUMA_NO_NODE - which
    is a valid index - so add a check for this.
    
    Signed-off-by: John Garry <[email protected]>
    Reviewed-by: Huacai Chen <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

MIPS: rb532: Fix MMIO UART resource registration [+ + +]
Author: Jiaxun Yang <[email protected]>
Date:   Thu Feb 5 10:08:42 2026 +0000

    MIPS: rb532: Fix MMIO UART resource registration
    
    [ Upstream commit e93bb4b76cfefb302534246e892c7667491cb8cc ]
    
    Since commit 6e690d54cfa8 ("serial: 8250: fix return error code in
    serial8250_request_std_resource()"), registering an 8250 MMIO port
    without mapbase no longer works, as the resource range is derived from
    mapbase/mapsize.
    
    Populate mapbase and mapsize accordingly. Also drop ugly membase KSEG1
    pointer and set UPF_IOREMAP instead, letting the 8250 core perform the
    ioremap.
    
    Fixes: 6e690d54cfa8 ("serial: 8250: fix return error code in serial8250_request_std_resource()")
    Cc: [email protected]
    Reported-by: Waldemar Brodkorb <[email protected]>
    Link: https://lore.kernel.org/linux-mips/[email protected]/
    Signed-off-by: Jiaxun Yang <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

MIPS: Work around LLVM bug when gp is used as global register variable [+ + +]
Author: Yao Zi <[email protected]>
Date:   Thu Feb 5 15:56:44 2026 +0000

    MIPS: Work around LLVM bug when gp is used as global register variable
    
    commit 30bfc2d6a1132a89a5f1c3b96c59cf3e4d076ea3 upstream.
    
    On MIPS, __current_thread_info is defined as global register variable
    locating in $gp, and is simply assigned with new address during kernel
    relocation.
    
    This however is broken with LLVM, which always restores $gp if it finds
    $gp is clobbered in any form, including when intentionally through a
    global register variable. This is against GCC's documentation[1], which
    requires a callee-saved register used as global register variable not to
    be restored if it's clobbered.
    
    As a result, $gp will continue to point to the unrelocated kernel after
    the epilog of relocate_kernel(), leading to an early crash in init_idle,
    
    [    0.000000] CPU 0 Unable to handle kernel paging request at virtual address 0000000000000000, epc == ffffffff81afada8, ra == ffffffff81afad90
    [    0.000000] Oops[#1]:
    [    0.000000] CPU: 0 UID: 0 PID: 0 Comm: swapper Tainted: G        W           6.19.0-rc5-00262-gd3eeb99bbc99-dirty #188 VOLUNTARY
    [    0.000000] Tainted: [W]=WARN
    [    0.000000] Hardware name: loongson,loongson64v-4core-virtio
    [    0.000000] $ 0   : 0000000000000000 0000000000000000 0000000000000001 0000000000000000
    [    0.000000] $ 4   : ffffffff80b80ec0 ffffffff80b53d48 0000000000000000 00000000000f4240
    [    0.000000] $ 8   : 0000000000000100 ffffffff81d82f80 ffffffff81d82f80 0000000000000001
    [    0.000000] $12   : 0000000000000000 ffffffff81776f58 00000000000005da 0000000000000002
    [    0.000000] $16   : ffffffff80b80e40 0000000000000000 ffffffff80b81614 9800000005dfbe80
    [    0.000000] $20   : 00000000540000e0 ffffffff81980000 0000000000000000 ffffffff80f81c80
    [    0.000000] $24   : 0000000000000a26 ffffffff8114fb90
    [    0.000000] $28   : ffffffff80b50000 ffffffff80b53d40 0000000000000000 ffffffff81afad90
    [    0.000000] Hi    : 0000000000000000
    [    0.000000] Lo    : 0000000000000000
    [    0.000000] epc   : ffffffff81afada8 init_idle+0x130/0x270
    [    0.000000] ra    : ffffffff81afad90 init_idle+0x118/0x270
    [    0.000000] Status: 540000e2 KX SX UX KERNEL EXL
    [    0.000000] Cause : 00000008 (ExcCode 02)
    [    0.000000] BadVA : 0000000000000000
    [    0.000000] PrId  : 00006305 (ICT Loongson-3)
    [    0.000000] Process swapper (pid: 0, threadinfo=(____ptrval____), task=(____ptrval____), tls=0000000000000000)
    [    0.000000] Stack : 9800000005dfbf00 ffffffff8178e950 0000000000000000 0000000000000000
    [    0.000000]         0000000000000000 ffffffff81970000 000000000000003f ffffffff810a6528
    [    0.000000]         0000000000000001 9800000005dfbe80 9800000005dfbf00 ffffffff81980000
    [    0.000000]         ffffffff810a6450 ffffffff81afb6c0 0000000000000000 ffffffff810a2258
    [    0.000000]         ffffffff81d82ec8 ffffffff8198d010 ffffffff81b67e80 ffffffff8197dd98
    [    0.000000]         ffffffff81d81c80 ffffffff81930000 0000000000000040 0000000000000000
    [    0.000000]         0000000000000000 0000000000000000 0000000000000000 0000000000000000
    [    0.000000]         0000000000000000 000000000000009e ffffffff9fc01000 0000000000000000
    [    0.000000]         0000000000000000 0000000000000000 0000000000000000 0000000000000000
    [    0.000000]         0000000000000000 ffffffff81ae86dc ffffffff81b3c741 0000000000000002
    [    0.000000]         ...
    [    0.000000] Call Trace:
    [    0.000000] [<ffffffff81afada8>] init_idle+0x130/0x270
    [    0.000000] [<ffffffff81afb6c0>] sched_init+0x5c8/0x6c0
    [    0.000000] [<ffffffff81ae86dc>] start_kernel+0x27c/0x7a8
    
    This bug has been reported to LLVM[2] and affects version from (at
    least) 18 to 21. Let's work around this by using inline assembly to
    assign $gp before a fix is widely available.
    
    Cc: [email protected]
    Link: https://gcc.gnu.org/onlinedocs/gcc-15.2.0/gcc/Global-Register-Variables.html # [1]
    Link: https://github.com/llvm/llvm-project/issues/176546 # [2]
    Signed-off-by: Yao Zi <[email protected]>
    Acked-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
misc: eeprom: Fix EWEN/EWDS/ERAL commands for 93xx56 and 93xx66 [+ + +]
Author: Markus Perkins <[email protected]>
Date:   Tue Dec 2 11:48:24 2025 +0100

    misc: eeprom: Fix EWEN/EWDS/ERAL commands for 93xx56 and 93xx66
    
    [ Upstream commit b54c82d6cbfc76647ba558e8e3647eb2b0ba0e2b ]
    
    commit 14374fbb3f06 ("misc: eeprom_93xx46: Add new 93c56 and 93c66
    compatible strings") added support for 93xx56 and 93xx66 eeproms, but
    didn't take into account that the write enable/disable + erase all
    commands are hardcoded for the 6-bit address of the 93xx46.
    
    This commit fixes the command word generation by increasing the number
    of shifts as the address field grows, keeping the command intact.
    
    Also, the check for 8-bit or 16-bit mode is no longer required as this
    is already taken into account in the edev->addrlen field.
    
    Signed-off-by: Markus Perkins <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm, page_alloc, thp: prevent reclaim for __GFP_THISNODE THP allocations [+ + +]
Author: Vlastimil Babka <[email protected]>
Date:   Fri Dec 19 17:31:57 2025 +0100

    mm, page_alloc, thp: prevent reclaim for __GFP_THISNODE THP allocations
    
    [ Upstream commit 9c9828d3ead69416d731b1238802af31760c823e ]
    
    Since commit cc638f329ef6 ("mm, thp: tweak reclaim/compaction effort of
    local-only and all-node allocations"), THP page fault allocations have
    settled on the following scheme (from the commit log):
    
    1. local node only THP allocation with no reclaim, just compaction.
    2. for madvised VMA's or when synchronous compaction is enabled always - THP
       allocation from any node with effort determined by global defrag setting
       and VMA madvise
    3. fallback to base pages on any node
    
    Recent customer reports however revealed we have a gap in step 1 above.
    What we have seen is excessive reclaim due to THP page faults on a NUMA
    node that's close to its high watermark, while other nodes have plenty of
    free memory.
    
    The problem with step 1 is that it promises no reclaim after the
    compaction attempt, however reclaim is only avoided for certain compaction
    outcomes (deferred, or skipped due to insufficient free base pages), and
    not e.g.  when compaction is actually performed but fails (we did see
    compact_fail vmstat counter increasing).
    
    THP page faults can therefore exhibit a zone_reclaim_mode-like behavior,
    which is not the intention.
    
    Thus add a check for __GFP_THISNODE that corresponds to this exact
    situation and prevents continuing with reclaim/compaction once the initial
    compaction attempt isn't successful in allocating the page.
    
    Note that commit cc638f329ef6 has not introduced this over-reclaim
    possibility; it appears to exist in some form since commit 2f0799a0ffc0
    ("mm, thp: restore node-local hugepage allocations").  Followup commits
    b39d0ee2632d ("mm, page_alloc: avoid expensive reclaim when compaction may
    not succeed") and cc638f329ef6 have moved in the right direction, but left
    the abovementioned gap.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2f0799a0ffc0 ("mm, thp: restore node-local hugepage allocations")
    Signed-off-by: Vlastimil Babka <[email protected]>
    Acked-by: Michal Hocko <[email protected]>
    Acked-by: Johannes Weiner <[email protected]>
    Acked-by: Pedro Falcato <[email protected]>
    Acked-by: Zi Yan <[email protected]>
    Cc: Brendan Jackman <[email protected]>
    Cc: "David Hildenbrand (Red Hat)" <[email protected]>
    Cc: David Rientjes <[email protected]>
    Cc: Joshua Hahn <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mike Rapoport <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms [+ + +]
Author: Matthew Schwartz <[email protected]>
Date:   Sun Jan 4 22:02:36 2026 -0800

    mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms
    
    [ Upstream commit aced969e9bf3701dc75cfca57c78c031b7875b9d ]
    
    The existing 1ms delay in sd_power_on is insufficient and causes resume
    errors around 4% of the time.
    
    Increasing the delay to 5ms resolves this issue after testing 300
    s2idle cycles.
    
    Fixes: 1f311c94aabd ("mmc: rtsx: add 74 Clocks in power on flow")
    Signed-off-by: Matthew Schwartz <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
modpost: Amend ppc64 save/restfpr symnames for -Os build [+ + +]
Author: René Rebe <[email protected]>
Date:   Sun Nov 23 13:13:30 2025 +0100

    modpost: Amend ppc64 save/restfpr symnames for -Os build
    
    [ Upstream commit 3cd9763ce4ad999d015cf0734e6b968cead95077 ]
    
    Building a size optimized ppc64 kernel (-Os), gcc emits more FP
    save/restore symbols, that the linker generates on demand into the
    .sfpr section. Explicitly allow-list those in scripts/mod/modpost.c,
    too. They are needed for the amdgpu in-kernel floating point support.
    
    MODPOST Module.symvers
    ERROR: modpost: "_restfpr_20" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_restfpr_26" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_restfpr_22" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_savegpr1_27" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_savegpr1_25" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_restfpr_28" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_savegpr1_29" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_savefpr_20" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_savefpr_22" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    ERROR: modpost: "_restfpr_15" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
    WARNING: modpost: suppressed 56 unresolved symbol warnings because there were too many)
    
    Signed-off-by: René Rebe <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mtd: parsers: ofpart: fix OF node refcount leak in parse_fixed_partitions() [+ + +]
Author: Weigang He <[email protected]>
Date:   Fri Jan 23 05:26:08 2026 +0000

    mtd: parsers: ofpart: fix OF node refcount leak in parse_fixed_partitions()
    
    [ Upstream commit 7cce81df7d26d44123bd7620715c8349d96793d7 ]
    
    of_get_child_by_name() returns a node pointer with refcount incremented,
    which must be released with of_node_put() when done. However, in
    parse_fixed_partitions(), when dedicated is true (i.e., a "partitions"
    subnode was found), the ofpart_node obtained from of_get_child_by_name()
    is never released on any code path.
    
    Add of_node_put(ofpart_node) calls on all exit paths when dedicated is
    true to fix the reference count leak.
    
    This bug was detected by our static analysis tool.
    
    Fixes: 562b4e91d3b2 ("mtd: parsers: ofpart: fix parsing subpartitions")
    Signed-off-by: Weigang He <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mtd: rawnand: cadence: Fix return type of CDMA send-and-wait helper [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Fri Dec 19 03:09:30 2025 -0800

    mtd: rawnand: cadence: Fix return type of CDMA send-and-wait helper
    
    [ Upstream commit 6d8226cbbf124bb5613b532216b74c886a4361b7 ]
    
    cadence_nand_cdma_send_and_wait() propagates negative errno values
    from cadence_nand_cdma_send(), returns -ETIMEDOUT on failure and -EIO
    when the CDMA engine reports a command failure.
    
    However, it is declared as u32, causing error codes to wrap.
    Change the return type to int to correctly propagate errors.
    
    Fixes: ec4ba01e894d ("mtd: rawnand: Add new Cadence NAND driver to MTD subsystem")
    Signed-off-by: Alok Tiwari <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mtd: rawnand: pl353: Fix software ECC support [+ + +]
Author: Andrea Scian <[email protected]>
Date:   Wed Feb 4 18:41:44 2026 +0100

    mtd: rawnand: pl353: Fix software ECC support
    
    [ Upstream commit 89b831ebdaca0df4ca3b226f7e7a1d1db1629060 ]
    
    We need to set also write_page_raw in ecc structure to allow
    choosing SW ECC instead of HW one, otherwise write operation fail.
    
    Fixes: 08d8c62164a322 ("mtd: rawnand: pl353: Add support for the ARM PL353 SMC NAND controller")
    Signed-off-by: Andrea Scian <[email protected]>
    Cc: [email protected]
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
myri10ge: avoid uninitialized variable use [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Thu Feb 5 17:28:09 2026 +0100

    myri10ge: avoid uninitialized variable use
    
    [ Upstream commit fd24173439c033ffb3c2a2628fcbc9cb65e62bdb ]
    
    While compile testing on less common architectures, I noticed that gcc-10 on
    s390 finds a bug that all other configurations seem to miss:
    
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c: In function 'myri10ge_set_multicast_list':
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c:391:25: error: 'cmd.data0' is used uninitialized in this function [-Werror=uninitialized]
      391 |  buf->data0 = htonl(data->data0);
          |                         ^~
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c:392:25: error: '*((void *)&cmd+4)' is used uninitialized in this function [-Werror=uninitialized]
      392 |  buf->data1 = htonl(data->data1);
          |                         ^~
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c: In function 'myri10ge_allocate_rings':
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c:392:13: error: 'cmd.data1' is used uninitialized in this function [-Werror=uninitialized]
      392 |  buf->data1 = htonl(data->data1);
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c:1939:22: note: 'cmd.data1' was declared here
     1939 |  struct myri10ge_cmd cmd;
          |                      ^~~
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c:393:13: error: 'cmd.data2' is used uninitialized in this function [-Werror=uninitialized]
      393 |  buf->data2 = htonl(data->data2);
    drivers/net/ethernet/myricom/myri10ge/myri10ge.c:1939:22: note: 'cmd.data2' was declared here
     1939 |  struct myri10ge_cmd cmd;
    
    It would be nice to understand how to make other compilers catch this as
    well, but for the moment I'll just shut up the warning by fixing the
    undefined behavior in this driver.
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/rds: Clear reconnect pending bit [+ + +]
Author: Håkon Bugge <[email protected]>
Date:   Mon Feb 2 22:57:20 2026 -0700

    net/rds: Clear reconnect pending bit
    
    [ Upstream commit b89fc7c2523b2b0750d91840f4e52521270d70ed ]
    
    When canceling the reconnect worker, care must be taken to reset the
    reconnect-pending bit. If the reconnect worker has not yet been
    scheduled before it is canceled, the reconnect-pending bit will stay
    on forever.
    
    Signed-off-by: Håkon Bugge <[email protected]>
    Signed-off-by: Allison Henderson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/rds: No shortcut out of RDS_CONN_ERROR [+ + +]
Author: Gerd Rausch <[email protected]>
Date:   Wed Jan 21 22:52:12 2026 -0700

    net/rds: No shortcut out of RDS_CONN_ERROR
    
    [ Upstream commit ad22d24be635c6beab6a1fdd3f8b1f3c478d15da ]
    
    RDS connections carry a state "rds_conn_path::cp_state"
    and transitions from one state to another and are conditional
    upon an expected state: "rds_conn_path_transition."
    
    There is one exception to this conditionality, which is
    "RDS_CONN_ERROR" that can be enforced by "rds_conn_path_drop"
    regardless of what state the condition is currently in.
    
    But as soon as a connection enters state "RDS_CONN_ERROR",
    the connection handling code expects it to go through the
    shutdown-path.
    
    The RDS/TCP multipath changes added a shortcut out of
    "RDS_CONN_ERROR" straight back to "RDS_CONN_CONNECTING"
    via "rds_tcp_accept_one_path" (e.g. after "rds_tcp_state_change").
    
    A subsequent "rds_tcp_reset_callbacks" can then transition
    the state to "RDS_CONN_RESETTING" with a shutdown-worker queued.
    
    That'll trip up "rds_conn_init_shutdown", which was
    never adjusted to handle "RDS_CONN_RESETTING" and subsequently
    drops the connection with the dreaded "DR_INV_CONN_STATE",
    which leaves "RDS_SHUTDOWN_WORK_QUEUED" on forever.
    
    So we do two things here:
    
    a) Don't shortcut "RDS_CONN_ERROR", but take the longer
       path through the shutdown code.
    
    b) Add "RDS_CONN_RESETTING" to the expected states in
      "rds_conn_init_shutdown" so that we won't error out
      and get stuck, if we ever hit weird state transitions
      like this again."
    
    Signed-off-by: Gerd Rausch <[email protected]>
    Signed-off-by: Allison Henderson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/rds: rds_sendmsg should not discard payload_len [+ + +]
Author: Allison Henderson <[email protected]>
Date:   Thu Feb 12 20:54:09 2026 -0700

    net/rds: rds_sendmsg should not discard payload_len
    
    [ Upstream commit da29e453dcb3aa7cabead7915f5f945d0add3a52 ]
    
    Commit 3db6e0d172c9 ("rds: use RCU to synchronize work-enqueue with
    connection teardown") modifies rds_sendmsg to avoid enqueueing work
    while a tear down is in progress. However, it also changed the return
    value of rds_sendmsg to that of rds_send_xmit instead of the
    payload_len. This means the user may incorrectly receive errno values
    when it should have simply received a payload of 0 while the peer
    attempts a reconnections.  So this patch corrects the teardown handling
    code to only use the out error path in that case, thus restoring the
    original payload_len return value.
    
    Fixes: 3db6e0d172c9 ("rds: use RCU to synchronize work-enqueue with connection teardown")
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Allison Henderson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: atm: fix crash due to unvalidated vcc pointer in sigd_send() [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Thu Feb 5 17:54:51 2026 +0800

    net: atm: fix crash due to unvalidated vcc pointer in sigd_send()
    
    [ Upstream commit ae88a5d2f29b69819dc7b04086734439d074a643 ]
    
    Reproducer available at [1].
    
    The ATM send path (sendmsg -> vcc_sendmsg -> sigd_send) reads the vcc
    pointer from msg->vcc and uses it directly without any validation. This
    pointer comes from userspace via sendmsg() and can be arbitrarily forged:
    
        int fd = socket(AF_ATMSVC, SOCK_DGRAM, 0);
        ioctl(fd, ATMSIGD_CTRL);  // become ATM signaling daemon
        struct msghdr msg = { .msg_iov = &iov, ... };
        *(unsigned long *)(buf + 4) = 0xdeadbeef;  // fake vcc pointer
        sendmsg(fd, &msg, 0);  // kernel dereferences 0xdeadbeef
    
    In normal operation, the kernel sends the vcc pointer to the signaling
    daemon via sigd_enq() when processing operations like connect(), bind(),
    or listen(). The daemon is expected to return the same pointer when
    responding. However, a malicious daemon can send arbitrary pointer values.
    
    Fix this by introducing find_get_vcc() which validates the pointer by
    searching through vcc_hash (similar to how sigd_close() iterates over
    all VCCs), and acquires a reference via sock_hold() if found.
    
    Since struct atm_vcc embeds struct sock as its first member, they share
    the same lifetime. Therefore using sock_hold/sock_put is sufficient to
    keep the vcc alive while it is being used.
    
    Note that there may be a race with sigd_close() which could mark the vcc
    with various flags (e.g., ATM_VF_RELEASED) after find_get_vcc() returns.
    However, sock_hold() guarantees the memory remains valid, so this race
    only affects the logical state, not memory safety.
    
    [1]: https://gist.github.com/mrpre/1ba5949c45529c511152e2f4c755b0f3
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Signed-off-by: Jiayuan Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: consume xmit errors of GSO frames [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Mon Feb 23 15:51:00 2026 -0800

    net: consume xmit errors of GSO frames
    
    [ Upstream commit 7aa767d0d3d04e50ae94e770db7db8197f666970 ]
    
    udpgro_frglist.sh and udpgro_bench.sh are the flakiest tests
    currently in NIPA. They fail in the same exact way, TCP GRO
    test stalls occasionally and the test gets killed after 10min.
    
    These tests use veth to simulate GRO. They attach a trivial
    ("return XDP_PASS;") XDP program to the veth to force TSO off
    and NAPI on.
    
    Digging into the failure mode we can see that the connection
    is completely stuck after a burst of drops. The sender's snd_nxt
    is at sequence number N [1], but the receiver claims to have
    received (rcv_nxt) up to N + 3 * MSS [2]. Last piece of the puzzle
    is that senders rtx queue is not empty (let's say the block in
    the rtx queue is at sequence number N - 4 * MSS [3]).
    
    In this state, sender sends a retransmission from the rtx queue
    with a single segment, and sequence numbers N-4*MSS:N-3*MSS [3].
    Receiver sees it and responds with an ACK all the way up to
    N + 3 * MSS [2]. But sender will reject this ack as TCP_ACK_UNSENT_DATA
    because it has no recollection of ever sending data that far out [1].
    And we are stuck.
    
    The root cause is the mess of the xmit return codes. veth returns
    an error when it can't xmit a frame. We end up with a loss event
    like this:
    
      -------------------------------------------------
      |   GSO super frame 1   |   GSO super frame 2   |
      |-----------------------------------------------|
      | seg | seg | seg | seg | seg | seg | seg | seg |
      |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |
      -------------------------------------------------
         x    ok    ok    <ok>|  ok    ok    ok   <x>
                              \\
                               snd_nxt
    
    "x" means packet lost by veth, and "ok" means it went thru.
    Since veth has TSO disabled in this test it sees individual segments.
    Segment 1 is on the retransmit queue and will be resent.
    
    So why did the sender not advance snd_nxt even tho it clearly did
    send up to seg 8? tcp_write_xmit() interprets the return code
    from the core to mean that data has not been sent at all. Since
    TCP deals with GSO super frames, not individual segment the crux
    of the problem is that loss of a single segment can be interpreted
    as loss of all. TCP only sees the last return code for the last
    segment of the GSO frame (in <> brackets in the diagram above).
    
    Of course for the problem to occur we need a setup or a device
    without a Qdisc. Otherwise Qdisc layer disconnects the protocol
    layer from the device errors completely.
    
    We have multiple ways to fix this.
    
     1) make veth not return an error when it lost a packet.
        While this is what I think we did in the past, the issue keeps
        reappearing and it's annoying to debug. The game of whack
        a mole is not great.
    
     2) fix the damn return codes
        We only talk about NETDEV_TX_OK and NETDEV_TX_BUSY in the
        documentation, so maybe we should make the return code from
        ndo_start_xmit() a boolean. I like that the most, but perhaps
        some ancient, not-really-networking protocol would suffer.
    
     3) make TCP ignore the errors
        It is not entirely clear to me what benefit TCP gets from
        interpreting the result of ip_queue_xmit()? Specifically once
        the connection is established and we're pushing data - packet
        loss is just packet loss?
    
     4) this fix
        Ignore the rc in the Qdisc-less+GSO case, since it's unreliable.
        We already always return OK in the TCQ_F_CAN_BYPASS case.
        In the Qdisc-less case let's be a bit more conservative and only
        mask the GSO errors. This path is taken by non-IP-"networks"
        like CAN, MCTP etc, so we could regress some ancient thing.
        This is the simplest, but also maybe the hackiest fix?
    
    Similar fix has been proposed by Eric in the past but never committed
    because original reporter was working with an OOT driver and wasn't
    providing feedback (see Link).
    
    Link: https://lore.kernel.org/CANn89iJcLepEin7EtBETrZ36bjoD9LrR=k4cfwWh046GB+4f9A@mail.gmail.com
    Fixes: 1f59533f9ca5 ("qdisc: validate frames going through the direct_xmit path")
    Signed-off-by: Jakub Kicinski <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: cpsw_new: Fix unnecessary netdev unregistration in cpsw_probe() error path [+ + +]
Author: Kevin Hao <[email protected]>
Date:   Thu Feb 5 10:47:02 2026 +0800

    net: cpsw_new: Fix unnecessary netdev unregistration in cpsw_probe() error path
    
    [ Upstream commit 62db84b7efa63b78aed9fdbdae90f198771be94c ]
    
    The current error handling in cpsw_probe() has two issues:
    - cpsw_unregister_ports() may be called before cpsw_register_ports() has
      been executed.
    
    - cpsw_unregister_ports() is already invoked within cpsw_register_ports()
      in case of a register_netdev() failure, but the error path would call
      it again.
    
    Fixes: ed3525eda4c4 ("net: ethernet: ti: introduce cpsw switchdev based driver part 1 - dual-emac")
    Signed-off-by: Kevin Hao <[email protected]>
    Cc: [email protected]
    Reviewed-by: Alexander Sverdlin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: ec_bhf: Fix dma_free_coherent() dma handle [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Fri Feb 13 17:43:39 2026 +0100

    net: ethernet: ec_bhf: Fix dma_free_coherent() dma handle
    
    [ Upstream commit ffe68c3766997d82e9ccaf1cdbd47eba269c4aa2 ]
    
    dma_free_coherent() in error path takes priv->rx_buf.alloc_len as
    the dma handle. This would lead to improper unmapping of the buffer.
    
    Change the dma handle to priv->rx_buf.alloc_phys.
    
    Fixes: 6af55ff52b02 ("Driver for Beckhoff CX5020 EtherCAT master module.")
    Cc: <[email protected]>
    Signed-off-by: Thomas Fourier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: marvell: skge: remove incorrect conflicting PCI ID [+ + +]
Author: Ethan Nelson-Moore <[email protected]>
Date:   Thu Feb 5 23:17:14 2026 -0800

    net: ethernet: marvell: skge: remove incorrect conflicting PCI ID
    
    [ Upstream commit d01103fdcb871fd83fd06ef5803d576507c6a801 ]
    
    The ID 1186:4302 is matched by both r8169 and skge. The same device ID
    should not be in more than one driver, because in that case, which
    driver is used is unpredictable. I downloaded the latest drivers for
    all hardware revisions of the D-Link DGE-530T from D-Link's website,
    and the only drivers which contain this ID are Realtek drivers.
    Therefore, remove this device ID from skge.
    
    In the kernel bug report which requested addition of this device ID,
    someone created a patch to add the ID to skge. Then, it was pointed
    out that this device is an "r8169 in disguise", and a patch was created
    to add it to r8169. Somehow, both of these patches got merged. See the
    link below.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=38862
    Fixes: c074304c2bcf ("add pci-id for DGE-530T")
    Cc: [email protected]
    Signed-off-by: Ethan Nelson-Moore <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: xscale: Check for PTP support properly [+ + +]
Author: Linus Walleij <[email protected]>
Date:   Thu Feb 19 12:38:50 2026 +0100

    net: ethernet: xscale: Check for PTP support properly
    
    [ Upstream commit 594163ea88a03bdb412063af50fc7177ef3cbeae ]
    
    In ixp4xx_get_ts_info() ixp46x_ptp_find() is called
    unconditionally despite this feature only existing on
    ixp46x, leading to the following splat from tcpdump:
    
    root@OpenWrt:~# tcpdump -vv -X -i eth0
    (...)
    Unable to handle kernel NULL pointer dereference at virtual address
      00000238 when read
    (...)
    Call trace:
     ptp_clock_index from ixp46x_ptp_find+0x1c/0x38
     ixp46x_ptp_find from ixp4xx_get_ts_info+0x4c/0x64
     ixp4xx_get_ts_info from __ethtool_get_ts_info+0x90/0x108
     __ethtool_get_ts_info from __dev_ethtool+0xa00/0x2648
     __dev_ethtool from dev_ethtool+0x160/0x234
     dev_ethtool from dev_ioctl+0x2cc/0x460
     dev_ioctl from sock_ioctl+0x1ec/0x524
     sock_ioctl from sys_ioctl+0x51c/0xa94
     sys_ioctl from ret_fast_syscall+0x0/0x44
     (...)
    Segmentation fault
    
    Check for ixp46x in ixp46x_ptp_find() before trying to set up
    PTP to avoid this.
    
    To avoid altering the returned error code from ixp4xx_hwtstamp_set()
    which before this patch was -EOPNOTSUPP, we return -EOPNOTSUPP
    from ixp4xx_hwtstamp_set() if ixp46x_ptp_find() fails no matter
    the error code. The helper function ixp46x_ptp_find() helper
    returns -ENODEV.
    
    Fixes: 9055a2f59162 ("ixp4xx_eth: make ptp support a platform driver")
    Signed-off-by: Linus Walleij <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: add max order judgement for tx spare buffer [+ + +]
Author: Hao Chen <[email protected]>
Date:   Sat Mar 26 17:51:01 2022 +0800

    net: hns3: add max order judgement for tx spare buffer
    
    [ Upstream commit a89cbb16995bf15582e0d1bdb922ad1a54a2fa8c ]
    
    Add max order judgement for tx spare buffer to avoid triggering
    call trace, print related fail information instead, when user
    set tx spare buf size to a large value which causes order
    exceeding 10.
    
    Fixes: e445f08af2b1 ("net: hns3: add support to set/get tx copybreak buf size via ethtool for hns3 driver")
    Signed-off-by: Hao Chen <[email protected]>
    Signed-off-by: Guangbin Huang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 6d2f142b1e4b ("net: hns3: fix double free issue for tx spare buffer")
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: add support to set/get tx copybreak buf size via ethtool for hns3 driver [+ + +]
Author: Hao Chen <[email protected]>
Date:   Thu Nov 18 20:12:41 2021 +0800

    net: hns3: add support to set/get tx copybreak buf size via ethtool for hns3 driver
    
    [ Upstream commit e445f08af2b15035474439fbbb8649f466ad2501 ]
    
    Tx copybreak buf size is used for tx copybreak feature, the feature is
    used for small size packet or frag. It adds a queue based tx shared
    bounce buffer to memcpy the small packet when the len of xmitted skb is
    below tx_copybreak(value to distinguish small size and normal size),
    and reduce the overhead of dma map and unmap when IOMMU is on.
    
    Support setting it via ethtool --set-tunable parameter and getting
    it via ethtool --get-tunable parameter.
    
    Signed-off-by: Hao Chen <[email protected]>
    Signed-off-by: Guangbin Huang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 6d2f142b1e4b ("net: hns3: fix double free issue for tx spare buffer")
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: extend HCLGE_FD_AD_QID to 11 bits [+ + +]
Author: Jijie Shao <[email protected]>
Date:   Fri Jan 23 17:47:55 2026 +0800

    net: hns3: extend HCLGE_FD_AD_QID to 11 bits
    
    [ Upstream commit 878406d4d6ef85c37fab52074771cc916e532c16 ]
    
    Currently, HCLGE_FD_AD_QID has only 10 bits and supports a
    maximum of 1023 queues. However, there are actually scenarios
    where the queue_id exceeds 1023.
    
    This patch adds an additional bit to HCLGE_FD_AD_QID to ensure
    that queue_id greater than 1023 are supported.
    
    Signed-off-by: Jijie Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: fix double free issue for tx spare buffer [+ + +]
Author: Jian Shen <[email protected]>
Date:   Thu Feb 5 20:17:19 2026 +0800

    net: hns3: fix double free issue for tx spare buffer
    
    [ Upstream commit 6d2f142b1e4b203387a92519d9d2e34752a79dbb ]
    
    In hns3_set_ringparam(), a temporary copy (tmp_rings) of the ring structure
    is created for rollback. However, the tx_spare pointer in the original
    ring handle is incorrectly left pointing to the old backup memory.
    
    Later, if memory allocation fails in hns3_init_all_ring() during the setup,
    the error path attempts to free all newly allocated rings. Since tx_spare
    contains a stale (non-NULL) pointer from the backup, it is mistaken for
    a newly allocated buffer and is erroneously freed, leading to a double-free
    of the backup memory.
    
    The root cause is that the tx_spare field was not cleared after its value
    was saved in tmp_rings, leaving a dangling pointer.
    
    Fix this by setting tx_spare to NULL in the original ring structure
    when the creation of the new `tx_spare` fails. This ensures the
    error cleanup path only frees genuinely newly allocated buffers.
    
    Fixes: 907676b130711 ("net: hns3: use tx bounce buffer for small packets")
    Signed-off-by: Jian Shen <[email protected]>
    Signed-off-by: Jijie Shao <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: fix ethtool tx copybreak buf size indicating not aligned issue [+ + +]
Author: Hao Chen <[email protected]>
Date:   Sat Mar 26 17:51:00 2022 +0800

    net: hns3: fix ethtool tx copybreak buf size indicating not aligned issue
    
    [ Upstream commit 8778372118023e2258612c03573c47efef41d755 ]
    
    When use ethtoool set tx copybreak buf size to a large value
    which causes order exceeding 10 or memory is not enough,
    it causes allocating tx copybreak buffer failed and print
    "the active tx spare buf is 0, not enabled tx spare buffer",
    however, use --get-tunable parameter query tx copybreak buf
    size and it indicates setting value not 0.
    
    So, it's necessary to change the print value from setting
    value to 0.
    
    Set kinfo.tx_spare_buf_size to 0 when set tx copybreak buf size failed.
    
    Fixes: e445f08af2b1 ("net: hns3: add support to set/get tx copybreak buf size via ethtool for hns3 driver")
    Signed-off-by: Hao Chen <[email protected]>
    Signed-off-by: Guangbin Huang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 6d2f142b1e4b ("net: hns3: fix double free issue for tx spare buffer")
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: remove the way to set tx spare buf via module parameter [+ + +]
Author: Hao Chen <[email protected]>
Date:   Thu Nov 18 20:12:45 2021 +0800

    net: hns3: remove the way to set tx spare buf via module parameter
    
    [ Upstream commit e175eb5fb05462398452e31df5019d780badf45d ]
    
    The way to set tx spare buf via module parameter is not such
    convenient as the way to set it via ethtool.
    
    So,remove the way to set tx spare buf via module parameter.
    
    Signed-off-by: Hao Chen <[email protected]>
    Signed-off-by: Guangbin Huang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 6d2f142b1e4b ("net: hns3: fix double free issue for tx spare buffer")
    Signed-off-by: Sasha Levin <[email protected]>

net: intel: fix PCI device ID conflict between i40e and ipw2200 [+ + +]
Author: Ethan Nelson-Moore <[email protected]>
Date:   Mon Feb 9 18:12:34 2026 -0800

    net: intel: fix PCI device ID conflict between i40e and ipw2200
    
    [ Upstream commit d03e094473ecdeb68d853752ba467abe13e1de44 ]
    
    The ID 8086:104f is matched by both i40e and ipw2200. The same device
    ID should not be in more than one driver, because in that case, which
    driver is used is unpredictable. Fix this by taking advantage of the
    fact that i40e devices use PCI_CLASS_NETWORK_ETHERNET and ipw2200
    devices use PCI_CLASS_NETWORK_OTHER to differentiate the devices.
    
    Fixes: 2e45d3f4677a ("i40e: Add support for X710 B/P & SFP+ cards")
    Cc: [email protected]
    Acked-by: Johannes Berg <[email protected]>
    Signed-off-by: Ethan Nelson-Moore <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ixp4xx_eth: convert to ndo_hwtstamp_get() and ndo_hwtstamp_set() [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Fri May 9 00:10:42 2025 +0300

    net: ixp4xx_eth: convert to ndo_hwtstamp_get() and ndo_hwtstamp_set()
    
    [ Upstream commit c14e1ecefd9e706262ac713fd27530e3344ef85c ]
    
    New timestamping API was introduced in commit 66f7223039c0 ("net: add
    NDOs for configuring hardware timestamping") from kernel v6.6. It is
    time to convert the intel ixp4xx ethernet driver to the new API, so that
    the ndo_eth_ioctl() path can be removed completely.
    
    hwtstamp_get() and hwtstamp_set() are only called if netif_running()
    when the code path is engaged through the legacy ioctl. As I don't
    want to make an unnecessary functional change which I can't test,
    preserve that restriction when going through the new operations.
    
    When cpu_is_ixp46x() is false, the execution of SIOCGHWTSTAMP and
    SIOCSHWTSTAMP falls through to phy_mii_ioctl(), which may process it in
    case of a timestamping PHY, or may return -EOPNOTSUPP. In the new API,
    the core handles timestamping PHYs directly and does not call the netdev
    driver, so just return -EOPNOTSUPP directly for equivalent logic.
    
    A gratuitous change I chose to do anyway is prefixing hwtstamp_get() and
    hwtstamp_set() with the driver name, ipx4xx. This reflects modern coding
    sensibilities, and we are touching the involved lines anyway.
    
    The remainder of eth_ioctl() is exactly equivalent to
    phy_do_ioctl_running(), so use that.
    
    Signed-off-by: Vladimir Oltean <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 594163ea88a0 ("net: ethernet: xscale: Check for PTP support properly")
    Signed-off-by: Sasha Levin <[email protected]>

net: nfc: nci: Fix parameter validation for packet data [+ + +]
Author: Michael Thalmeier <[email protected]>
Date:   Wed Feb 18 09:30:00 2026 +0100

    net: nfc: nci: Fix parameter validation for packet data
    
    [ Upstream commit 571dcbeb8e635182bb825ae758399831805693c2 ]
    
    Since commit 9c328f54741b ("net: nfc: nci: Add parameter validation for
    packet data") communication with nci nfc chips is not working any more.
    
    The mentioned commit tries to fix access of uninitialized data, but
    failed to understand that in some cases the data packet is of variable
    length and can therefore not be compared to the maximum packet length
    given by the sizeof(struct).
    
    Fixes: 9c328f54741b ("net: nfc: nci: Add parameter validation for packet data")
    Cc: [email protected]
    Signed-off-by: Michael Thalmeier <[email protected]>
    Reported-by: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: remove WARN_ON_ONCE when accessing forward path array [+ + +]
Author: Pablo Neira Ayuso <[email protected]>
Date:   Tue Feb 17 12:56:39 2026 +0100

    net: remove WARN_ON_ONCE when accessing forward path array
    
    [ Upstream commit 008e7a7c293b30bc43e4368dac6ea3808b75a572 ]
    
    Although unlikely, recent support for IPIP tunnels increases chances of
    reaching this WARN_ON_ONCE if userspace manages to build a sufficiently
    long forward path.
    
    Remove it.
    
    Fixes: ddb94eafab8b ("net: resolve forwarding path from virtual netdevice and HW destination address")
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: kaweth: remove TX queue manipulation in kaweth_set_rx_mode [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Tue Feb 17 17:50:12 2026 +0000

    net: usb: kaweth: remove TX queue manipulation in kaweth_set_rx_mode
    
    [ Upstream commit 64868f5ecadeb359a49bc4485bfa7c497047f13a ]
    
    kaweth_set_rx_mode(), the ndo_set_rx_mode callback, calls
    netif_stop_queue() and netif_wake_queue(). These are TX queue flow
    control functions unrelated to RX multicast configuration.
    
    The premature netif_wake_queue() can re-enable TX while tx_urb is still
    in-flight, leading to a double usb_submit_urb() on the same URB:
    
    kaweth_start_xmit() {
        netif_stop_queue();
        usb_submit_urb(kaweth->tx_urb);
    }
    
    kaweth_set_rx_mode() {
        netif_stop_queue();
        netif_wake_queue();             // wakes TX queue before URB is done
    }
    
    kaweth_start_xmit() {
        netif_stop_queue();
        usb_submit_urb(kaweth->tx_urb); // URB submitted while active
    }
    
    This triggers the WARN in usb_submit_urb():
    
      "URB submitted while active"
    
    This is a similar class of bug fixed in rtl8150 by
    
    - commit 958baf5eaee3 ("net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast").
    
    Also kaweth_set_rx_mode() is already functionally broken, the
    real set_rx_mode action is performed by kaweth_async_set_rx_mode(),
    which in turn is not a no-op only at ndo_open() time.
    
    Suggested-by: Paolo Abeni <[email protected]>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ziyi Guo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: lan78xx: scan all MDIO addresses on LAN7801 [+ + +]
Author: Martin Pålsson <[email protected]>
Date:   Wed Feb 18 05:28:22 2026 +0000

    net: usb: lan78xx: scan all MDIO addresses on LAN7801
    
    [ Upstream commit f1e2f0ce704e4a14e3f367d3b97d3dd2d8e183b7 ]
    
    The LAN7801 is designed exclusively for external PHYs (unlike the
    LAN7800/LAN7850 which have internal PHYs), but lan78xx_mdio_init()
    restricts PHY scanning to MDIO addresses 0-7 by setting phy_mask to
    ~(0xFF). This prevents discovery of external PHYs wired to addresses
    outside that range.
    
    One such case is the DP83TC814 100BASE-T1 PHY, which is typically
    configured at MDIO address 10 via PHYAD bootstrap pins and goes
    undetected with the current mask.
    
    Remove the restrictive phy_mask assignment for the LAN7801 so that the
    default mask of 0 applies, allowing all 32 MDIO addresses to be
    scanned during bus registration.
    
    Fixes: 02dc1f3d613d ("lan78xx: add LAN7801 MAC only support")
    Signed-off-by: Martin Pålsson <[email protected]>
    Link: https://patch.msgid.link/0110019c6f388aff-98d99cf0-4425-4fff-b16b-dea5ad8fafe0-000000@eu-north-1.amazonses.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: pegasus: enable basic endpoint checking [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Sun Feb 22 05:06:33 2026 +0000

    net: usb: pegasus: enable basic endpoint checking
    
    [ Upstream commit 3d7e6ce34f4fcc7083510c28b17a7c36462a25d4 ]
    
    pegasus_probe() fills URBs with hardcoded endpoint pipes without
    verifying the endpoint descriptors:
    
      - usb_rcvbulkpipe(dev, 1) for RX data
      - usb_sndbulkpipe(dev, 2) for TX data
      - usb_rcvintpipe(dev, 3)  for status interrupts
    
    A malformed USB device can present these endpoints with transfer types
    that differ from what the driver assumes.
    
    Add a pegasus_usb_ep enum for endpoint numbers, replacing magic
    constants throughout. Add usb_check_bulk_endpoints() and
    usb_check_int_endpoints() calls before any resource allocation to
    verify endpoint types before use, rejecting devices with mismatched
    descriptors at probe time, and avoid triggering assertion.
    
    Similar fix to
    - commit 90b7f2961798 ("net: usb: rtl8150: enable basic endpoint checking")
    - commit 9e7021d2aeae ("net: usb: catc: enable basic endpoint checking")
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ziyi Guo <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: r8152: fix transmit queue timeout [+ + +]
Author: Mingj Ye <[email protected]>
Date:   Tue Jan 20 09:59:49 2026 +0800

    net: usb: r8152: fix transmit queue timeout
    
    [ Upstream commit 833dcd75d54f0bf5aa0a0781ff57456b421fbb40 ]
    
    When the TX queue length reaches the threshold, the netdev watchdog
    immediately detects a TX queue timeout.
    
    This patch updates the trans_start timestamp of the transmit queue
    on every asynchronous USB URB submission along the transmit path,
    ensuring that the network watchdog accurately reflects ongoing
    transmission activity.
    
    Signed-off-by: Mingj Ye <[email protected]>
    Reviewed-by: Hayes Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: sr9700: remove code to drive nonexistent multicast filter [+ + +]
Author: Ethan Nelson-Moore <[email protected]>
Date:   Mon Feb 2 17:39:09 2026 -0800

    net: usb: sr9700: remove code to drive nonexistent multicast filter
    
    [ Upstream commit 9a9424c756feee9ee6e717405a9d6fa7bacdef08 ]
    
    Several registers referenced in this driver's source code do not
    actually exist (they are not writable and read as zero in my testing).
    They exist in this driver because it originated as a copy of the dm9601
    driver. Notably, these include the multicast filter registers - this
    causes the driver to not support multicast packets correctly. Remove
    the multicast filter code and register definitions. Instead, set the
    chip to receive all multicast filter packets when any multicast
    addresses are in the list.
    
    Reviewed-by: Simon Horman <[email protected]> (from v1)
    Signed-off-by: Ethan Nelson-Moore <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wan/fsl_ucc_hdlc: Fix dma_free_coherent() in uhdlc_memclean() [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Fri Feb 6 09:53:33 2026 +0100

    net: wan/fsl_ucc_hdlc: Fix dma_free_coherent() in uhdlc_memclean()
    
    [ Upstream commit 36bd7d5deef936c4e1e3cd341598140e5c14c1d3 ]
    
    The priv->rx_buffer and priv->tx_buffer are alloc'd together as
    contiguous buffers in uhdlc_init() but freed as two buffers in
    uhdlc_memclean().
    
    Change the cleanup to only call dma_free_coherent() once on the whole
    buffer.
    
    Reviewed-by: Christophe Leroy (CS GROUP) <[email protected]>
    Fixes: c19b6d246a35 ("drivers/net: support hdlc function for QE-UCC")
    Cc: <[email protected]>
    Signed-off-by: Thomas Fourier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wan: farsync: Fix use-after-free bugs caused by unfinished tasklets [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Thu Feb 19 20:46:37 2026 +0800

    net: wan: farsync: Fix use-after-free bugs caused by unfinished tasklets
    
    [ Upstream commit bae8a5d2e759da2e0cba33ab2080deee96a09373 ]
    
    When the FarSync T-series card is being detached, the fst_card_info is
    deallocated in fst_remove_one(). However, the fst_tx_task or fst_int_task
    may still be running or pending, leading to use-after-free bugs when the
    already freed fst_card_info is accessed in fst_process_tx_work_q() or
    fst_process_int_work_q().
    
    A typical race condition is depicted below:
    
    CPU 0 (cleanup)           | CPU 1 (tasklet)
                              | fst_start_xmit()
    fst_remove_one()          |   tasklet_schedule()
      unregister_hdlc_device()|
                              | fst_process_tx_work_q() //handler
      kfree(card) //free      |   do_bottom_half_tx()
                              |     card-> //use
    
    The following KASAN trace was captured:
    
    ==================================================================
     BUG: KASAN: slab-use-after-free in do_bottom_half_tx+0xb88/0xd00
     Read of size 4 at addr ffff88800aad101c by task ksoftirqd/3/32
     ...
     Call Trace:
      <IRQ>
      dump_stack_lvl+0x55/0x70
      print_report+0xcb/0x5d0
      ? do_bottom_half_tx+0xb88/0xd00
      kasan_report+0xb8/0xf0
      ? do_bottom_half_tx+0xb88/0xd00
      do_bottom_half_tx+0xb88/0xd00
      ? _raw_spin_lock_irqsave+0x85/0xe0
      ? __pfx__raw_spin_lock_irqsave+0x10/0x10
      ? __pfx___hrtimer_run_queues+0x10/0x10
      fst_process_tx_work_q+0x67/0x90
      tasklet_action_common+0x1fa/0x720
      ? hrtimer_interrupt+0x31f/0x780
      handle_softirqs+0x176/0x530
      __irq_exit_rcu+0xab/0xe0
      sysvec_apic_timer_interrupt+0x70/0x80
     ...
    
     Allocated by task 41 on cpu 3 at 72.330843s:
      kasan_save_stack+0x24/0x50
      kasan_save_track+0x17/0x60
      __kasan_kmalloc+0x7f/0x90
      fst_add_one+0x1a5/0x1cd0
      local_pci_probe+0xdd/0x190
      pci_device_probe+0x341/0x480
      really_probe+0x1c6/0x6a0
      __driver_probe_device+0x248/0x310
      driver_probe_device+0x48/0x210
      __device_attach_driver+0x160/0x320
      bus_for_each_drv+0x101/0x190
      __device_attach+0x198/0x3a0
      device_initial_probe+0x78/0xa0
      pci_bus_add_device+0x81/0xc0
      pci_bus_add_devices+0x7e/0x190
      enable_slot+0x9b9/0x1130
      acpiphp_check_bridge.part.0+0x2e1/0x460
      acpiphp_hotplug_notify+0x36c/0x3c0
      acpi_device_hotplug+0x203/0xb10
      acpi_hotplug_work_fn+0x59/0x80
     ...
    
     Freed by task 41 on cpu 1 at 75.138639s:
      kasan_save_stack+0x24/0x50
      kasan_save_track+0x17/0x60
      kasan_save_free_info+0x3b/0x60
      __kasan_slab_free+0x43/0x70
      kfree+0x135/0x410
      fst_remove_one+0x2ca/0x540
      pci_device_remove+0xa6/0x1d0
      device_release_driver_internal+0x364/0x530
      pci_stop_bus_device+0x105/0x150
      pci_stop_and_remove_bus_device+0xd/0x20
      disable_slot+0x116/0x260
      acpiphp_disable_and_eject_slot+0x4b/0x190
      acpiphp_hotplug_notify+0x230/0x3c0
      acpi_device_hotplug+0x203/0xb10
      acpi_hotplug_work_fn+0x59/0x80
     ...
    
     The buggy address belongs to the object at ffff88800aad1000
      which belongs to the cache kmalloc-1k of size 1024
     The buggy address is located 28 bytes inside of
      freed 1024-byte region
     The buggy address belongs to the physical page:
     page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0xaad0
     head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
     flags: 0x100000000000040(head|node=0|zone=1)
     page_type: f5(slab)
     raw: 0100000000000040 ffff888007042dc0 dead000000000122 0000000000000000
     raw: 0000000000000000 0000000080100010 00000000f5000000 0000000000000000
     head: 0100000000000040 ffff888007042dc0 dead000000000122 0000000000000000
     head: 0000000000000000 0000000080100010 00000000f5000000 0000000000000000
     head: 0100000000000003 ffffea00002ab401 00000000ffffffff 00000000ffffffff
     head: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
     page dumped because: kasan: bad access detected
    
     Memory state around the buggy address:
      ffff88800aad0f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      ffff88800aad0f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     >ffff88800aad1000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                 ^
      ffff88800aad1080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff88800aad1100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ==================================================================
    
    Fix this by ensuring that both fst_tx_task and fst_int_task are properly
    canceled before the fst_card_info is released. Add tasklet_kill() in
    fst_remove_one() to synchronize with any pending or running tasklets.
    Since unregister_hdlc_device() stops data transmission and reception,
    and fst_disable_intr() prevents further interrupts, it is appropriate
    to place tasklet_kill() after these calls.
    
    The bugs were identified through static analysis. To reproduce the issue
    and validate the fix, a FarSync T-series card was simulated in QEMU and
    delays(e.g., mdelay()) were introduced within the tasklet handler to
    increase the likelihood of triggering the race condition.
    
    Fixes: 2f623aaf9f31 ("net: farsync: Fix kmemleak when rmmods farsync")
    Signed-off-by: Duoming Zhou <[email protected]>
    Reviewed-by: Jijie Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: nf_conncount: fix tracking of connections from localhost [+ + +]
Author: Fernando Fernandez Mancera <[email protected]>
Date:   Mon Jan 19 21:35:46 2026 +0100

    netfilter: nf_conncount: fix tracking of connections from localhost
    
    [ Upstream commit de8a70cefcb26cdceaafdc5ac144712681419c29 ]
    
    Since commit be102eb6a0e7 ("netfilter: nf_conncount: rework API to use
    sk_buff directly"), we skip the adding and trigger a GC when the ct is
    confirmed. For connections originated from local to local it doesn't
    work because the connection is confirmed on POSTROUTING, therefore
    tracking on the INPUT hook is always skipped.
    
    In order to fix this, we check whether skb input ifindex is set to
    loopback ifindex. If it is then we fallback on a GC plus track operation
    skipping the optimization. This fallback is necessary to avoid
    duplicated tracking of a packet train e.g 10 UDP datagrams sent on a
    burst when initiating the connection.
    
    Tested with xt_connlimit/nft_connlimit and OVS limit and with a HTTP
    server and iperf3 on UDP mode.
    
    Fixes: be102eb6a0e7 ("netfilter: nf_conncount: rework API to use sk_buff directly")
    Reported-by: Michal Slabihoudek <[email protected]>
    Closes: https://lore.kernel.org/netfilter/[email protected]/
    Signed-off-by: Fernando Fernandez Mancera <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_conncount: increase the connection clean up limit to 64 [+ + +]
Author: Fernando Fernandez Mancera <[email protected]>
Date:   Wed Dec 17 15:46:41 2025 +0100

    netfilter: nf_conncount: increase the connection clean up limit to 64
    
    [ Upstream commit 21d033e472735ecec677f1ae46d6740b5e47a4f3 ]
    
    After the optimization to only perform one GC per jiffy, a new problem
    was introduced. If more than 8 new connections are tracked per jiffy the
    list won't be cleaned up fast enough possibly reaching the limit
    wrongly.
    
    In order to prevent this issue, only skip the GC if it was already
    triggered during the same jiffy and the increment is lower than the
    clean up limit. In addition, increase the clean up limit to 64
    connections to avoid triggering GC too often and do more effective GCs.
    
    This has been tested using a HTTP server and several
    performance tools while having nft_connlimit/xt_connlimit or OVS limit
    configured.
    
    Output of slowhttptest + OVS limit at 52000 connections:
    
     slow HTTP test status on 340th second:
     initializing:        0
     pending:             432
     connected:           51998
     error:               0
     closed:              0
     service available:   YES
    
    Fixes: d265929930e2 ("netfilter: nf_conncount: reduce unnecessary GC")
    Reported-by: Aleksandra Rukomoinikova <[email protected]>
    Closes: https://lore.kernel.org/netfilter/[email protected]/
    Signed-off-by: Fernando Fernandez Mancera <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_conncount: make nf_conncount_gc_list() to disable BH [+ + +]
Author: Fernando Fernandez Mancera <[email protected]>
Date:   Fri Nov 21 01:14:31 2025 +0100

    netfilter: nf_conncount: make nf_conncount_gc_list() to disable BH
    
    [ Upstream commit c0362b5748282e22fa1592a8d3474f726ad964c2 ]
    
    For convenience when performing GC over the connection list, make
    nf_conncount_gc_list() to disable BH. This unifies the behavior with
    nf_conncount_add() and nf_conncount_count().
    
    Signed-off-by: Fernando Fernandez Mancera <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Stable-dep-of: 21d033e47273 ("netfilter: nf_conncount: increase the connection clean up limit to 64")
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_conntrack: Add allow_clash to generic protocol handler [+ + +]
Author: Yuto Hamaguchi <[email protected]>
Date:   Fri Dec 19 20:53:51 2025 +0900

    netfilter: nf_conntrack: Add allow_clash to generic protocol handler
    
    [ Upstream commit 8a49fc8d8a3e83dc51ec05bcd4007bdea3c56eec ]
    
    The upstream commit, 71d8c47fc653711c41bc3282e5b0e605b3727956
     ("netfilter: conntrack: introduce clash resolution on insertion race"),
    sets allow_clash=true in the UDP/UDPLITE protocol handler
    but does not set it in the generic protocol handler.
    
    As a result, packets composed of connectionless protocols at each layer,
    such as UDP over IP-in-IP, still drop packets due to conflicts during conntrack insertion.
    
    To resolve this, this patch sets allow_clash in the nf_conntrack_l4proto_generic.
    
    Signed-off-by: Yuto Hamaguchi <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_conntrack_h323: don't pass uninitialised l3num value [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Wed Feb 11 12:53:09 2026 +0100

    netfilter: nf_conntrack_h323: don't pass uninitialised l3num value
    
    [ Upstream commit a6d28eb8efe96b3e35c92efdf1bfacb0cccf541f ]
    
    Mihail Milev reports: Error: UNINIT (CWE-457):
     net/netfilter/nf_conntrack_h323_main.c:1189:2: var_decl:
            Declaring variable "tuple" without initializer.
     net/netfilter/nf_conntrack_h323_main.c:1197:2:
            uninit_use_in_call: Using uninitialized value "tuple.src.l3num" when calling "__nf_ct_expect_find".
     net/netfilter/nf_conntrack_expect.c:142:2:
            read_value: Reading value "tuple->src.l3num" when calling "nf_ct_expect_dst_hash".
    
      1195|         tuple.dst.protonum = IPPROTO_TCP;
      1196|
      1197|->       exp = __nf_ct_expect_find(net, nf_ct_zone(ct), &tuple);
      1198|         if (exp && exp->master == ct)
      1199|                 return exp;
    
    Switch this to a C99 initialiser and set the l3num value.
    
    Fixes: f587de0e2feb ("[NETFILTER]: nf_conntrack/nf_nat: add H.323 helper port")
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_conntrack_h323: fix OOB read in decode_choice() [+ + +]
Author: Vahagn Vardanian <[email protected]>
Date:   Wed Feb 25 14:06:18 2026 +0100

    netfilter: nf_conntrack_h323: fix OOB read in decode_choice()
    
    [ Upstream commit baed0d9ba91d4f390da12d5039128ee897253d60 ]
    
    In decode_choice(), the boundary check before get_len() uses the
    variable `len`, which is still 0 from its initialization at the top of
    the function:
    
        unsigned int type, ext, len = 0;
        ...
        if (ext || (son->attr & OPEN)) {
            BYTE_ALIGN(bs);
            if (nf_h323_error_boundary(bs, len, 0))  /* len is 0 here */
                return H323_ERROR_BOUND;
            len = get_len(bs);                        /* OOB read */
    
    When the bitstream is exactly consumed (bs->cur == bs->end), the check
    nf_h323_error_boundary(bs, 0, 0) evaluates to (bs->cur + 0 > bs->end),
    which is false.  The subsequent get_len() call then dereferences
    *bs->cur++, reading 1 byte past the end of the buffer.  If that byte
    has bit 7 set, get_len() reads a second byte as well.
    
    This can be triggered remotely by sending a crafted Q.931 SETUP message
    with a User-User Information Element containing exactly 2 bytes of
    PER-encoded data ({0x08, 0x00}) to port 1720 through a firewall with
    the nf_conntrack_h323 helper active.  The decoder fully consumes the
    PER buffer before reaching this code path, resulting in a 1-2 byte
    heap-buffer-overflow read confirmed by AddressSanitizer.
    
    Fix this by checking for 2 bytes (the maximum that get_len() may read)
    instead of the uninitialized `len`.  This matches the pattern used at
    every other get_len() call site in the same file, where the caller
    checks for 2 bytes of available data before calling get_len().
    
    Fixes: ec8a8f3c31dd ("netfilter: nf_ct_h323: Extend nf_h323_error_boundary to work on bits as well")
    Signed-off-by: Vahagn Vardanian <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nft_set_hash: fix get operation on big endian [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Tue Jan 27 20:13:45 2026 +0100

    netfilter: nft_set_hash: fix get operation on big endian
    
    [ Upstream commit 2f635adbe2642d398a0be3ab245accd2987be0c3 ]
    
    tests/shell/testcases/packetpath/set_match_nomatch_hash_fast
    fails on big endian with:
    
    Error: Could not process rule: No such file or directory
    reset element ip test s { 244.147.90.126 }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    Fatal: Cannot fetch element "244.147.90.126"
    
    ... because the wrong bucket is searched, jhash() and jhash1_word are
    not interchangeable on big endian.
    
    Fixes: 3b02b0adc242 ("netfilter: nft_set_hash: fix lookups with fixed size hash on big endian")
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nft_set_rbtree: check for partial overlaps in anonymous sets [+ + +]
Author: Pablo Neira Ayuso <[email protected]>
Date:   Fri Feb 6 13:33:44 2026 +0100

    netfilter: nft_set_rbtree: check for partial overlaps in anonymous sets
    
    [ Upstream commit 4780ec142cbb24b794129d3080eee5cac2943ffc ]
    
    Userspace provides an optimized representation in case intervals are
    adjacent, where the end element is omitted.
    
    The existing partial overlap detection logic skips anonymous set checks
    on start elements for this reason.
    
    However, it is possible to add intervals that overlap to this anonymous
    where two start elements with the same, eg. A-B, A-C where C < B.
    
          start     end
            A        B
          start  end
            A     C
    
    Restore the check on overlapping start elements to report an overlap.
    
    Fixes: c9e6978e2725 ("netfilter: nft_set_rbtree: Switch to node list walk for overlap detection")
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: xt_tcpmss: check remaining length before reading optlen [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Mon Jan 19 12:30:42 2026 +0100

    netfilter: xt_tcpmss: check remaining length before reading optlen
    
    [ Upstream commit 735ee8582da3d239eb0c7a53adca61b79fb228b3 ]
    
    Quoting reporter:
      In net/netfilter/xt_tcpmss.c (lines 53-68), the TCP option parser reads
     op[i+1] directly without validating the remaining option length.
    
      If the last byte of the option field is not EOL/NOP (0/1), the code attempts
      to index op[i+1]. In the case where i + 1 == optlen, this causes an
      out-of-bounds read, accessing memory past the optlen boundary
      (either reading beyond the stack buffer _opt or the
      following payload).
    
    Reported-by: sungzii <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nfc: hci: shdlc: Stop timers and work before freeing context [+ + +]
Author: Votokina Victoria <[email protected]>
Date:   Tue Feb 3 14:31:57 2026 +0300

    nfc: hci: shdlc: Stop timers and work before freeing context
    
    [ Upstream commit c9efde1e537baed7648a94022b43836a348a074f ]
    
    llc_shdlc_deinit() purges SHDLC skb queues and frees the llc_shdlc
    structure while its timers and state machine work may still be active.
    
    Timer callbacks can schedule sm_work, and sm_work accesses SHDLC state
    and the skb queues. If teardown happens in parallel with a queued/running
    work item, it can lead to UAF and other shutdown races.
    
    Stop all SHDLC timers and cancel sm_work synchronously before purging the
    queues and freeing the context.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 4a61cd6687fc ("NFC: Add an shdlc llc module to llc core")
    Signed-off-by: Votokina Victoria <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nfc: nxp-nci: remove interrupt trigger type [+ + +]
Author: Carl Lee <[email protected]>
Date:   Thu Feb 5 19:11:39 2026 +0800

    nfc: nxp-nci: remove interrupt trigger type
    
    [ Upstream commit 57be33f85e369ce9f69f61eaa34734e0d3bd47a7 ]
    
    For NXP NCI devices (e.g. PN7150), the interrupt is level-triggered and
    active high, not edge-triggered.
    
    Using IRQF_TRIGGER_RISING in the driver can cause interrupts to fail
    to trigger correctly.
    
    Remove IRQF_TRIGGER_RISING and rely on the IRQ trigger type configured
    via Device Tree.
    
    Signed-off-by: Carl Lee <[email protected]>
    Link: https://patch.msgid.link/20260205-fc-nxp-nci-remove-interrupt-trigger-type-v2-1-79d2ed4a7e42@amd.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nfsd: fix return error code for nfsd_map_name_to_[ug]id [+ + +]
Author: Anthony Iliopoulos <[email protected]>
Date:   Mon Dec 22 14:30:05 2025 -0500

    nfsd: fix return error code for nfsd_map_name_to_[ug]id
    
    [ Upstream commit 404d779466646bf1461f2090ff137e99acaecf42 ]
    
    idmap lookups can time out while the cache is waiting for a userspace
    upcall reply. In that case cache_check() returns -ETIMEDOUT to callers.
    
    The nfsd_map_name_to_[ug]id functions currently proceed with attempting
    to map the id to a kuid despite a potentially temporary failure to
    perform the idmap lookup. This results in the code returning the error
    NFSERR_BADOWNER which can cause client operations to return to userspace
    with failure.
    
    Fix this by returning the failure status before attempting kuid mapping.
    
    This will return NFSERR_JUKEBOX on idmap lookup timeout so that clients
    can retry the operation instead of aborting it.
    
    Fixes: 65e10f6d0ab0 ("nfsd: Convert idmap to use kuids and kgids")
    Cc: [email protected]
    Signed-off-by: Anthony Iliopoulos <[email protected]>
    Reviewed-by: NeilBrown <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nfsd: never defer requests during idmap lookup [+ + +]
Author: Anthony Iliopoulos <[email protected]>
Date:   Mon Dec 22 14:30:04 2025 -0500

    nfsd: never defer requests during idmap lookup
    
    [ Upstream commit f9c206cdc4266caad6a9a7f46341420a10f03ccb ]
    
    During v4 request compound arg decoding, some ops (e.g. SETATTR)
    can trigger idmap lookup upcalls. When those upcall responses get
    delayed beyond the allowed time limit, cache_check() will mark the
    request for deferral and cause it to be dropped.
    
    This prevents nfs4svc_encode_compoundres from being executed, and
    thus the session slot flag NFSD4_SLOT_INUSE never gets cleared.
    Subsequent client requests will fail with NFSERR_JUKEBOX, given
    that the slot will be marked as in-use, making the SEQUENCE op
    fail.
    
    Fix this by making sure that the RQ_USEDEFERRAL flag is always
    clear during nfs4svc_decode_compoundargs(), since no v4 request
    should ever be deferred.
    
    Fixes: 2f425878b6a7 ("nfsd: don't use the deferral service, return NFS4ERR_DELAY")
    Signed-off-by: Anthony Iliopoulos <[email protected]>
    Reviewed-by: NeilBrown <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ntb: ntb_hw_switchtec: Fix array-index-out-of-bounds access [+ + +]
Author: Maciej Grochowski <[email protected]>
Date:   Thu Feb 13 14:53:18 2025 -0800

    ntb: ntb_hw_switchtec: Fix array-index-out-of-bounds access
    
    [ Upstream commit c8ba7ad2cc1c7b90570aa347b8ebbe279f1eface ]
    
    Number of MW LUTs depends on NTB configuration and can be set to MAX_MWS,
    This patch protects against invalid index out of bounds access to mw_sizes
    When invalid access print message to user that configuration is not valid.
    
    Signed-off-by: Maciej Grochowski <[email protected]>
    Signed-off-by: Jon Mason <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ntb: ntb_hw_switchtec: Fix shift-out-of-bounds for 0 mw lut [+ + +]
Author: Maciej Grochowski <[email protected]>
Date:   Thu Feb 13 14:53:17 2025 -0800

    ntb: ntb_hw_switchtec: Fix shift-out-of-bounds for 0 mw lut
    
    [ Upstream commit 186615f8855a0be4ee7d3fcd09a8ecc10e783b08 ]
    
    Number of MW LUTs depends on NTB configuration and can be set to zero,
    in such scenario rounddown_pow_of_two will cause undefined behaviour and
    should not be performed.
    This patch ensures that rounddown_pow_of_two is called on valid value.
    
    Signed-off-by: Maciej Grochowski <[email protected]>
    Signed-off-by: Jon Mason <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NTB: ntb_transport: Fix too small buffer for debugfs_name [+ + +]
Author: Koichiro Den <[email protected]>
Date:   Wed Jan 7 13:24:57 2026 +0900

    NTB: ntb_transport: Fix too small buffer for debugfs_name
    
    [ Upstream commit 6a4b50585d74fe45d3ade1e3e86ba8aae79761a5 ]
    
    The buffer used for "qp%d" was only 4 bytes, which truncates names like
    "qp10" to "qp1" and causes multiple queues to share the same directory.
    
    Enlarge the buffer and use sizeof() to avoid truncation.
    
    Fixes: fce8a7bb5b4b ("PCI-Express Non-Transparent Bridge Support")
    Cc: <[email protected]> # v3.9+
    Reviewed-by: Frank Li <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Signed-off-by: Koichiro Den <[email protected]>
    Signed-off-by: Jon Mason <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvdimm: virtio_pmem: serialize flush requests [+ + +]
Author: Li Chen <[email protected]>
Date:   Tue Feb 3 10:13:51 2026 +0800

    nvdimm: virtio_pmem: serialize flush requests
    
    [ Upstream commit a9ba6733c7f1096c4506bf4e34a546e07242df74 ]
    
    Under heavy concurrent flush traffic, virtio-pmem can overflow its request
    virtqueue (req_vq): virtqueue_add_sgs() starts returning -ENOSPC and the
    driver logs "no free slots in the virtqueue". Shortly after that the
    device enters VIRTIO_CONFIG_S_NEEDS_RESET and flush requests fail with
    "virtio pmem device needs a reset".
    
    Serialize virtio_pmem_flush() with a per-device mutex so only one flush
    request is in-flight at a time. This prevents req_vq descriptor overflow
    under high concurrency.
    
    Reproducer (guest with virtio-pmem):
      - mkfs.ext4 -F /dev/pmem0
      - mount -t ext4 -o dax,noatime /dev/pmem0 /mnt/bench
      - fio: ioengine=io_uring rw=randwrite bs=4k iodepth=64 numjobs=64
            direct=1 fsync=1 runtime=30s time_based=1
      - dmesg: "no free slots in the virtqueue"
               "virtio pmem device needs a reset"
    
    Fixes: 6e84200c0a29 ("virtio-pmem: Add virtio pmem driver")
    Signed-off-by: Li Chen <[email protected]>
    Acked-by: Pankaj Gupta <[email protected]>
    Acked-by: Michael S. Tsirkin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Ira Weiny <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ocfs2: fix reflink preserve cleanup issue [+ + +]
Author: Heming Zhao <[email protected]>
Date:   Wed Dec 10 09:57:24 2025 +0800

    ocfs2: fix reflink preserve cleanup issue
    
    [ Upstream commit 5138c936c2c82c9be8883921854bc6f7e1177d8c ]
    
    commit c06c303832ec ("ocfs2: fix xattr array entry __counted_by error")
    doesn't handle all cases and the cleanup job for preserved xattr entries
    still has bug:
    - the 'last' pointer should be shifted by one unit after cleanup
      an array entry.
    - current code logic doesn't cleanup the first entry when xh_count is 1.
    
    Note, commit c06c303832ec is also a bug fix for 0fe9b66c65f3.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 0fe9b66c65f3 ("ocfs2: Add preserve to reflink.")
    Signed-off-by: Heming Zhao <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Joseph Qi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-af: Fix default entries mcam entry action [+ + +]
Author: Hariprasad Kelam <[email protected]>
Date:   Mon Feb 16 14:33:38 2026 +0530

    octeontx2-af: Fix default entries mcam entry action
    
    [ Upstream commit 45be47bf5d7db0f762a93e9c0ede6cb3c91edf3b ]
    
    As per design, AF should update the default MCAM action only when
    mcam_index is -1. A bug in the previous patch caused default entries
    to be changed even when the request was not for them.
    
    Fixes: 570ba37898ec ("octeontx2-af: Update RSS algorithm index")
    Signed-off-by: Hariprasad Kelam <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

octeontx2-af: Fix PF driver crash with kexec kernel booting [+ + +]
Author: Anshumali Gaur <[email protected]>
Date:   Tue Feb 3 10:37:01 2026 +0530

    octeontx2-af: Fix PF driver crash with kexec kernel booting
    
    [ Upstream commit 2d2d574309e3ae84ee794869a5da8b4c38753a94 ]
    
    During a kexec reboot the hardware is not power-cycled, so AF state from
    the old kernel can persist into the new kernel. When AF and PF drivers
    are built as modules, the PF driver may probe before AF reinitializes
    the hardware.
    
    The PF driver treats the RVUM block revision as an indication that AF
    initialization is complete. If this value is left uncleared at shutdown,
    PF may incorrectly assume AF is ready and access stale hardware state,
    leading to a crash.
    
    Clear the RVUM block revision during AF shutdown to avoid PF
    mis-detecting AF readiness after kexec.
    
    Fixes: 54494aa5d1e6 ("octeontx2-af: Add Marvell OcteonTX2 RVU AF driver")
    Signed-off-by: Anshumali Gaur <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

octeontx2-af: Workaround SQM/PSE stalls by disabling sticky [+ + +]
Author: Geetha sowjanya <[email protected]>
Date:   Tue Jan 27 18:21:47 2026 +0530

    octeontx2-af: Workaround SQM/PSE stalls by disabling sticky
    
    [ Upstream commit 70e9a5760abfb6338d63994d4de6b0778ec795d6 ]
    
    NIX SQ manager sticky mode is known to cause stalls when multiple SQs
    share an SMQ and transmit concurrently. Additionally, PSE may deadlock
    on transitions between sticky and non-sticky transmissions. There is
    also a credit drop issue observed when certain condition clocks are
    gated.
    
    work around these hardware errata by:
    - Disabling SQM sticky operation:
      - Clear TM6 (bit 15)
      - Clear TM11 (bit 14)
    - Disabling sticky → non-sticky transition path that can deadlock PSE:
      - Clear TM5 (bit 23)
    - Preventing credit drops by keeping the control-flow clock enabled:
      - Set TM9 (bit 21)
    
    These changes are applied via NIX_AF_SQM_DBG_CTL_STATUS. With this
    configuration the SQM/PSE maintain forward progress under load without
    credit loss, at the cost of disabling sticky optimizations.
    
    Signed-off-by: Geetha sowjanya <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-pf: Unregister devlink on probe failure [+ + +]
Author: Hariprasad Kelam <[email protected]>
Date:   Fri Feb 6 23:56:45 2026 +0530

    octeontx2-pf: Unregister devlink on probe failure
    
    [ Upstream commit 943f3b8bfbf297cf74392b50a7108ce1fe4cbd8c ]
    
    When probe fails after devlink registration, the missing devlink unregister
    call causing a memory leak.
    
    Fixes: 2da489432747 ("octeontx2-pf: devlink params support to set mcam entry count")
    Signed-off-by: Hariprasad Kelam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
openrisc: define arch-specific version of nop() [+ + +]
Author: Brian Masney <[email protected]>
Date:   Tue Jan 20 12:07:23 2026 -0500

    openrisc: define arch-specific version of nop()
    
    [ Upstream commit 0dfffa5479d6260d04d021f69203b1926f73d889 ]
    
    When compiling a driver written for MIPS on OpenRISC that uses the nop()
    function, it fails due to the following error:
    
        drivers/watchdog/pic32-wdt.c: Assembler messages:
        drivers/watchdog/pic32-wdt.c:125: Error: unrecognized instruction `nop'
    
    The driver currently uses the generic version of nop() from
    include/asm-generic/barrier.h:
    
        #ifndef nop
        #define nop()   asm volatile ("nop")
        #endif
    
    Let's fix this on OpenRISC by defining an architecture-specific version
    of nop().
    
    This was tested by performing an allmodconfig openrisc cross compile on
    an aarch64 host.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Brian Masney <[email protected]>
    Signed-off-by: Stafford Horne <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ovl: Fix uninit-value in ovl_fill_real [+ + +]
Author: Qing Wang <[email protected]>
Date:   Wed Jan 28 14:24:04 2026 +0100

    ovl: Fix uninit-value in ovl_fill_real
    
    [ Upstream commit 1992330d90dd766fcf1730fd7bf2d6af65370ac4 ]
    
    Syzbot reported a KMSAN uninit-value issue in ovl_fill_real.
    
    This iusse's call chain is:
    __do_sys_getdents64()
        -> iterate_dir()
            ...
                -> ext4_readdir()
                    -> fscrypt_fname_alloc_buffer() // alloc
                    -> fscrypt_fname_disk_to_usr // write without tail '\0'
                    -> dir_emit()
                        -> ovl_fill_real() // read by strcmp()
    
    The string is used to store the decrypted directory entry name for an
    encrypted inode. As shown in the call chain, fscrypt_fname_disk_to_usr()
    write it without null-terminate. However, ovl_fill_real() uses strcmp() to
    compare the name against "..", which assumes a null-terminated string and
    may trigger a KMSAN uninit-value warning when the buffer tail contains
    uninit data.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=d130f98b2c265fae5297
    Fixes: 4edb83bb1041 ("ovl: constant d_ino for non-merge dirs")
    Signed-off-by: Qing Wang <[email protected]>
    Signed-off-by: Amir Goldstein <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Acked-by: Miklos Szeredi <[email protected]>
    Reviewed-by: Eric Biggers <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
parisc: kernel: replace kfree() with put_device() in create_tree_node() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Fri Dec 19 21:19:26 2025 +0800

    parisc: kernel: replace kfree() with put_device() in create_tree_node()
    
    [ Upstream commit dcf69599c47f29ce0a99117eb3f9ddcd2c4e78b6 ]
    
    If device_register() fails, put_device() is the correct way to
    drop the device reference.
    
    Found by code review.
    
    Fixes: 1070c9655b90 ("[PA-RISC] Fix must_check warnings in drivers.c")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

parisc: Prevent interrupts during reboot [+ + +]
Author: Helge Deller <[email protected]>
Date:   Tue Jan 27 17:58:55 2026 +0100

    parisc: Prevent interrupts during reboot
    
    [ Upstream commit 35ac5a728c878594f2ea6c43b57652a16be3c968 ]
    
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI/AER: Clear stale errors on reporting agents upon probe [+ + +]
Author: Lukas Wunner <[email protected]>
Date:   Sun Jan 25 10:25:51 2026 +0100

    PCI/AER: Clear stale errors on reporting agents upon probe
    
    [ Upstream commit e242d09b58e869f86071b7889acace4cff215935 ]
    
    Correctable and Uncorrectable Error Status Registers on reporting agents
    are cleared upon PCI device enumeration in pci_aer_init() to flush past
    events.  They're cleared again when an error is handled by the AER driver.
    
    If an agent reports a new error after pci_aer_init() and before the AER
    driver has probed on the corresponding Root Port or Root Complex Event
    Collector, that error is not handled by the AER driver:  It clears the
    Root Error Status Register on probe, but neglects to re-clear the
    Correctable and Uncorrectable Error Status Registers on reporting agents.
    
    The error will eventually be reported when another error occurs.  Which
    is irritating because to an end user it appears as if the earlier error
    has just happened.
    
    Amend the AER driver to clear stale errors on reporting agents upon probe.
    
    Skip reporting agents which have not invoked pci_aer_init() yet to avoid
    using an uninitialized pdev->aer_cap.  They're recognizable by the error
    bits in the Device Control register still being clear.
    
    Reporting agents may execute pci_aer_init() after the AER driver has
    probed, particularly when devices are hotplugged or removed/rescanned via
    sysfs.  For this reason, it continues to be necessary that pci_aer_init()
    clears Correctable and Uncorrectable Error Status Registers.
    
    Reported-by: Lucas Van <[email protected]> # off-list
    Signed-off-by: Lukas Wunner <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Lucas Van <[email protected]>
    Reviewed-by: Kuppuswamy Sathyanarayanan <[email protected]>
    Link: https://patch.msgid.link/3011c2ed30c11f858e35e29939add754adea7478.1769332702.git.lukas@wunner.de
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI/IOV: Fix race between SR-IOV enable/disable and hotplug [+ + +]
Author: Niklas Schnelle <[email protected]>
Date:   Tue Dec 16 23:14:03 2025 +0100

    PCI/IOV: Fix race between SR-IOV enable/disable and hotplug
    
    [ Upstream commit a5338e365c4559d7b4d7356116b0eb95b12e08d5 ]
    
    Commit 05703271c3cd ("PCI/IOV: Add PCI rescan-remove locking when
    enabling/disabling SR-IOV") tried to fix a race between the VF removal
    inside sriov_del_vfs() and concurrent hot unplug by taking the PCI
    rescan/remove lock in sriov_del_vfs(). Similarly the PCI rescan/remove lock
    was also taken in sriov_add_vfs() to protect addition of VFs.
    
    This approach however causes deadlock on trying to remove PFs with SR-IOV
    enabled because PFs disable SR-IOV during removal and this removal happens
    under the PCI rescan/remove lock. So the original fix had to be reverted.
    
    Instead of taking the PCI rescan/remove lock in sriov_add_vfs() and
    sriov_del_vfs(), fix the race that occurs with SR-IOV enable and disable vs
    hotplug higher up in the callchain by taking the lock in
    sriov_numvfs_store() before calling into the driver's sriov_configure()
    callback.
    
    Fixes: 05703271c3cd ("PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV")
    Reported-by: Benjamin Block <[email protected]>
    Signed-off-by: Niklas Schnelle <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Benjamin Block <[email protected]>
    Reviewed-by: Gerd Bayer <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI/portdrv: Fix potential resource leak [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Tue Dec 2 16:13:49 2025 +0100

    PCI/portdrv: Fix potential resource leak
    
    [ Upstream commit 01464a3fdf91c041a381d93a1b6fefbdb819a46f ]
    
    pcie_port_probe_service() unconditionally calls get_device() (unless it
    fails). So drop that reference also unconditionally as it's fine for a
    PCIe driver to not have a remove callback.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Link: https://patch.msgid.link/e1c68c3b3f1af8427e98ca5e2c79f8bf0ebe2ce4.1764688034.git.u.kleine-koenig@baylibre.com
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI: Add ACS quirk for Qualcomm Hamoa & Glymur [+ + +]
Author: Krishna Chaitanya Chundru <[email protected]>
Date:   Fri Jan 9 13:53:32 2026 +0530

    PCI: Add ACS quirk for Qualcomm Hamoa & Glymur
    
    [ Upstream commit 44d2f70b1fd72c339c72983fcffa181beae3e113 ]
    
    The Qualcomm Hamoa & Glymur Root Ports don't advertise an ACS capability,
    but they do provide ACS-like features to disable peer transactions and
    validate bus numbers in requests.
    
    Add an ACS quirk for Hamoa & Glymur.
    
    Signed-off-by: Krishna Chaitanya Chundru <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Do not attempt to set ExtTag for VFs [+ + +]
Author: Håkon Bugge <[email protected]>
Date:   Wed Nov 12 10:54:40 2025 +0100

    PCI: Do not attempt to set ExtTag for VFs
    
    [ Upstream commit 73711730a1128d91ebca1a6994ceeb18f36cb0cd ]
    
    The bit for enabling extended tags is Reserved and Preserved (RsvdP) for
    VFs, according to PCIe r7.0 section 7.5.3.4 table 7.21.  Hence, bail out
    early from pci_configure_extended_tags() if the device is a VF.
    
    Otherwise, we may see incorrect log messages such as:
    
      kernel: pci 0000:af:00.2: enabling Extended Tags
    
    (af:00.2 is a VF)
    
    Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
    Signed-off-by: Håkon Bugge <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Zhu Yanjun <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Enable ACS after configuring IOMMU for OF platforms [+ + +]
Author: Manivannan Sadhasivam <[email protected]>
Date:   Fri Jan 2 21:04:47 2026 +0530

    PCI: Enable ACS after configuring IOMMU for OF platforms
    
    [ Upstream commit c41e2fb67e26b04d919257875fa954aa5f6e392e ]
    
    Platform, ACPI, or IOMMU drivers call pci_request_acs(), which sets
    'pci_acs_enable' to request that ACS be enabled for any devices enumerated
    in the future.
    
    OF platforms called pci_enable_acs() for the first device before
    of_iommu_configure() called pci_request_acs(), so ACS was never enabled for
    that device (typically a Root Port).
    
    Call pci_enable_acs() later, from pci_dma_configure(), after
    of_dma_configure() has had a chance to call pci_request_acs().
    
    Here's the call path, showing the move of pci_enable_acs() from
    pci_acs_init() to pci_dma_configure(), where it always happens after
    pci_request_acs():
    
        pci_device_add
          pci_init_capabilities
            pci_acs_init
     -        pci_enable_acs
     -          if (pci_acs_enable)                <-- previous test
     -            ...
          device_add
            bus_notify(BUS_NOTIFY_ADD_DEVICE)
              iommu_bus_notifier
                iommu_probe_device
                  iommu_init_device
                    dev->bus->dma_configure
                      pci_dma_configure            # pci_bus_type.dma_configure
                        of_dma_configure
                          of_iommu_configure
                            pci_request_acs
                              pci_acs_enable = 1   <-- set
     +                  pci_enable_acs
     +                    if (pci_acs_enable)      <-- new test
     +                      ...
            bus_probe_device
              device_initial_probe
                ...
                  really_probe
                    dev->bus->dma_configure
                      pci_dma_configure            # pci_bus_type.dma_configure
                        ...
                          pci_enable_acs
    
    Note that we will now call pci_enable_acs() twice for every device, first
    from the iommu_probe_device() path and again from the really_probe() path.
    Presumably that's not an issue since we also call dev->bus->dma_configure()
    twice.
    
    For the ACPI platforms, pci_request_acs() is called during ACPI
    initialization time itself, independent of the IOMMU framework.
    
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    [bhelgaas: commit log]
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Marek Szyprowski <[email protected]>
    Tested-by: Naresh Kamboju <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: endpoint: Fix swapped parameters in pci_{primary/secondary}_epc_epf_unlink() functions [+ + +]
Author: Manikanta Maddireddy <[email protected]>
Date:   Thu Jan 8 11:57:47 2026 +0530

    PCI: endpoint: Fix swapped parameters in pci_{primary/secondary}_epc_epf_unlink() functions
    
    [ Upstream commit 8754dd7639ab0fd68c3ab9d91c7bdecc3e5740a8 ]
    
    struct configfs_item_operations callbacks are defined like the following:
    
      int (*allow_link)(struct config_item *src, struct config_item *target);
      void (*drop_link)(struct config_item *src, struct config_item *target);
    
    While pci_primary_epc_epf_link() and pci_secondary_epc_epf_link() specify
    the parameters in the correct order, pci_primary_epc_epf_unlink() and
    pci_secondary_epc_epf_unlink() specify the parameters in the wrong order,
    leading to the below kernel crash when using the unlink command in
    configfs:
    
      Unable to handle kernel paging request at virtual address 0000000300000857
      Mem abort info:
      ...
      pc : string+0x54/0x14c
      lr : vsnprintf+0x280/0x6e8
      ...
      string+0x54/0x14c
      vsnprintf+0x280/0x6e8
      vprintk_default+0x38/0x4c
      vprintk+0xc4/0xe0
      pci_epf_unbind+0xdc/0x108
      configfs_unlink+0xe0/0x208+0x44/0x74
      vfs_unlink+0x120/0x29c
      __arm64_sys_unlinkat+0x3c/0x90
      invoke_syscall+0x48/0x134
      do_el0_svc+0x1c/0x30prop.0+0xd0/0xf0
    
    Fixes: e85a2d783762 ("PCI: endpoint: Add support in configfs to associate two EPCs with EPF")
    Signed-off-by: Manikanta Maddireddy <[email protected]>
    [mani: cced stable, changed commit message as per https://lore.kernel.org/linux-pci/aV9joi3jF1R6ca02@ryzen]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Niklas Cassel <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Fix pci_slot_lock () device locking [+ + +]
Author: Keith Busch <[email protected]>
Date:   Fri Jan 30 08:59:51 2026 -0800

    PCI: Fix pci_slot_lock () device locking
    
    [ Upstream commit 1f5e57c622b4dc9b8e7d291d560138d92cfbe5bf ]
    
    Like pci_bus_lock(), pci_slot_lock() needs to lock the bridge device to
    prevent warnings like:
    
      pcieport 0000:e2:05.0: unlocked secondary bus reset via: pciehp_reset_slot+0x55/0xa0
    
    Take and release the lock for the bridge providing the slot for the
    lock/trylock and unlock routines.
    
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Dan Williams <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Fix pci_slot_trylock() error handling [+ + +]
Author: Jinhui Guo <[email protected]>
Date:   Fri Dec 12 22:55:28 2025 +0800

    PCI: Fix pci_slot_trylock() error handling
    
    [ Upstream commit 9368d1ee62829b08aa31836b3ca003803caf0b72 ]
    
    Commit a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
    delegates the bridge device's pci_dev_trylock() to pci_bus_trylock() in
    pci_slot_trylock(), but it forgets to remove the corresponding
    pci_dev_unlock() when pci_bus_trylock() fails.
    
    Before a4e772898f8b, the code did:
    
      if (!pci_dev_trylock(dev)) /* <- lock bridge device */
        goto unlock;
      if (dev->subordinate) {
        if (!pci_bus_trylock(dev->subordinate)) {
          pci_dev_unlock(dev);   /* <- unlock bridge device */
          goto unlock;
        }
      }
    
    After a4e772898f8b the bridge-device lock is no longer taken, but the
    pci_dev_unlock(dev) on the failure path was left in place, leading to the
    bug.
    
    This yields one of two errors:
    
      1. A warning that the lock is being unlocked when no one holds it.
      2. An incorrect unlock of a lock that belongs to another thread.
    
    Fix it by removing the now-redundant pci_dev_unlock(dev) on the failure
    path.
    
    [Same patch later posted by Keith at
    https://patch.msgid.link/[email protected]]
    
    Fixes: a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
    Signed-off-by: Jinhui Guo <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Dan Williams <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Initialize RCB from pci_configure_device() [+ + +]
Author: Håkon Bugge <[email protected]>
Date:   Thu Jan 29 18:52:32 2026 +0100

    PCI: Initialize RCB from pci_configure_device()
    
    [ Upstream commit 1a6845aaa6de81f95959b380b45de8f10d6a8502 ]
    
    Commit e42010d8207f ("PCI: Set Read Completion Boundary to 128 iff Root
    Port supports it (_HPX)") worked around a bogus _HPX type 2 record, which
    caused program_hpx_type2() to set the RCB in an endpoint even though the
    Root Port did not have the RCB bit set.
    
    e42010d8207f fixed that by setting the RCB in the endpoint only when it was
    set in the Root Port.
    
    In retrospect, program_hpx_type2() is intended for AER-related settings,
    and the RCB should be configured elsewhere so it doesn't depend on the
    presence or contents of an _HPX record.
    
    Explicitly program the RCB from pci_configure_device() so it matches the
    Root Port's RCB.  The Root Port may not be visible to virtualized guests;
    in that case, leave RCB alone.
    
    Fixes: e42010d8207f ("PCI: Set Read Completion Boundary to 128 iff Root Port supports it (_HPX)")
    Signed-off-by: Håkon Bugge <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Mark 3ware-9650SA Root Port Extended Tags as broken [+ + +]
Author: Jörg Wedekind <[email protected]>
Date:   Mon Jan 19 15:31:10 2026 +0100

    PCI: Mark 3ware-9650SA Root Port Extended Tags as broken
    
    [ Upstream commit 959ac08a2c2811305be8c2779779e8b0932e5a99 ]
    
    Per PCIe r7.0, sec 2.2.6.2.1 and 7.5.3.4, a Requester may not use 8-bit Tags
    unless its Extended Tag Field Enable is set, but all Receivers/Completers
    must handle 8-bit Tags correctly regardless of their Extended Tag Field
    Enable.
    
    Some devices do not handle 8-bit Tags as Completers, so add a quirk for
    them.  If we find such a device, we disable Extended Tags for the entire
    hierarchy to make peer-to-peer DMA possible.
    
    The 3ware 9650SA seems to have issues with handling 8-bit tags. Mark it as
    broken.
    
    This fixes PCI Parity Errors like :
    
      3w-9xxx: scsi0: ERROR: (0x06:0x000C): PCI Parity Error: clearing.
      3w-9xxx: scsi0: ERROR: (0x06:0x000D): PCI Abort: clearing.
      3w-9xxx: scsi0: ERROR: (0x06:0x000E): Controller Queue Error: clearing.
      3w-9xxx: scsi0: ERROR: (0x06:0x0010): Microcontroller Error: clearing.
    
    Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=202425
    Signed-off-by: Jörg Wedekind <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Mark ASM1164 SATA controller to avoid bus reset [+ + +]
Author: Alex Williamson <[email protected]>
Date:   Thu Jan 8 17:02:08 2026 -0700

    PCI: Mark ASM1164 SATA controller to avoid bus reset
    
    [ Upstream commit beb2f81792a8a619e5122b6b24a374861309c54b ]
    
    User forums report issues when assigning ASM1164 SATA controllers to VMs,
    especially in configurations with multiple controllers.  Logs show the
    device fails to retrain after bus reset.  Reports suggest this is an issue
    across multiple platforms.  The device indicates support for PM reset,
    therefore the device still has a viable function level reset mechanism.
    The reporting user confirms the device is well behaved in this use case
    with bus reset disabled.
    
    Reported-by: Patrick Bianchi <[email protected]>
    Link: https://forum.proxmox.com/threads/problems-with-pcie-passthrough-with-two-identical-devices.149003/
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Mark Nvidia GB10 to avoid bus reset [+ + +]
Author: Johnny-CC Chang <[email protected]>
Date:   Thu Nov 13 16:44:06 2025 +0800

    PCI: Mark Nvidia GB10 to avoid bus reset
    
    [ Upstream commit c81a2ce6b6a844d1a57d2a69833a9d0f00403f00 ]
    
    After asserting Secondary Bus Reset to downstream devices via a GB10 Root
    Port, the link may not retrain correctly, e.g., the link may retrain with a
    lower lane count or config accesses to downstream devices may fail.
    
    Prevent use of Secondary Bus Reset for devices below GB10.
    
    Signed-off-by: Johnny-CC Chang <[email protected]>
    [bhelgaas: drop pci_ids.h update (only used once), update commit log]
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: mediatek: Fix IRQ domain leak when MSI allocation fails [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Wed Nov 19 10:33:08 2025 +0800

    PCI: mediatek: Fix IRQ domain leak when MSI allocation fails
    
    [ Upstream commit 7f0cdcddf8bef1c8c18f9be6708073fd3790a20f ]
    
    In mtk_pcie_init_irq_domain(), if mtk_pcie_allocate_msi_domains()
    fails after port->irq_domain has been successfully created via
    irq_domain_create_linear(), the function returns directly without
    cleaning up the allocated IRQ domain, resulting in a resource leak.
    
    Add irq_domain_remove() call in the error path to properly release the
    INTx IRQ domain before returning the error.
    
    Fixes: 43e6409db64d ("PCI: mediatek: Add MSI support for MT2712 and MT7622")
    Signed-off-by: Haotian Zhang <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf callchain: Fix srcline printing with inlines [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Sat Jan 10 20:13:36 2026 -0800

    perf callchain: Fix srcline printing with inlines
    
    [ Upstream commit abec464767b5d26f0612250d511c18f420826ca1 ]
    
    sample__fprintf_callchain() was using map__fprintf_srcline() which won't
    report inline line numbers.
    
    Fix by using the srcline from the callchain and falling back to the map
    variant.
    
    Fixes: 25da4fab5f66e659 ("perf evsel: Move fprintf methods to separate source file")
    Reviewed-by: James Clark <[email protected]>
    Signed-off-by: Ian Rogers <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Howard Chu <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Stephen Brennan <[email protected]>
    Cc: Tony Jones <[email protected]>
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
phy: fsl-imx8mq-usb: disable bind/unbind platform driver feature [+ + +]
Author: Xu Yang <[email protected]>
Date:   Tue Jan 20 19:17:12 2026 +0800

    phy: fsl-imx8mq-usb: disable bind/unbind platform driver feature
    
    [ Upstream commit 27ee0869d77b2cb404770ac49bdceae3aedf658b ]
    
    Disabling PHYs in runtime usually causes the client with external abort
    exception or similar issue due to lack of API to notify clients about PHY
    removal. This patch removes the possibility to unbind i.MX PHY drivers in
    runtime.
    
    Signed-off-by: Xu Yang <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: mvebu-cp110-utmi: fix dr_mode property read from dts [+ + +]
Author: Aleksandar Gerasimovski <[email protected]>
Date:   Tue Jan 6 15:06:43 2026 +0000

    phy: mvebu-cp110-utmi: fix dr_mode property read from dts
    
    [ Upstream commit e2ce913452ab56b3330539cc443b97b7ea8c3a1a ]
    
    The problem with the current implementation is that it does not consider
    that the USB controller can have multiple PHY handles with different
    arguments count, as for example we have in our cn9131 based platform:
    "phys = <&cp0_comphy1 0>, <&cp0_utmi0>;".
    
    In such case calling "of_usb_get_dr_mode_by_phy" with -1 (no phy-cells)
    leads to not proper phy detection, taking the "marvell,cp110-utmi-phy"
    dts definition we can call the "of_usb_get_dr_mode_by_phy" with 0
    (#phy-cells = <0>) and safely look for that phy.
    
    Signed-off-by: Aleksandar Gerasimovski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: equilibrium: Fix device node reference leak in pinbank_init() [+ + +]
Author: Felix Gu <[email protected]>
Date:   Tue Jan 27 01:30:07 2026 +0800

    pinctrl: equilibrium: Fix device node reference leak in pinbank_init()
    
    [ Upstream commit c0b4a4feeb43305a754893d8d9c6b2b5a52d45ac ]
    
    When calling of_parse_phandle_with_fixed_args(), the caller is
    responsible to call of_node_put() to release the reference of device
    node.
    
    In pinbank_init(), the reference of the node obtained from the
    "gpio-ranges" property is never released, resulting in a reference
    count leak.
    
    Add the missing of_node_put() call to fix the leak.
    
    Fixes: 1948d5c51dba ("pinctrl: Add pinmux & GPIO controller driver for a new SoC")
    Signed-off-by: Felix Gu <[email protected]>
    Acked-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: qcom: Extract chip specific LPASS LPI code [+ + +]
Author: Srinivasa Rao Mandadapu <[email protected]>
Date:   Mon Apr 18 18:07:05 2022 +0530

    pinctrl: qcom: Extract chip specific LPASS LPI code
    
    [ Upstream commit 9ce49018c6928263d41b783c9e4928c6af05db43 ]
    
    Extract the chip specific SM8250 data from the LPASS LPI pinctrl driver
    to allow reusing the common code in the addition of subsequent
    platforms.
    
    Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
    Co-developed-by: Venkata Prasad Potturu <[email protected]>
    Signed-off-by: Venkata Prasad Potturu <[email protected]>
    Reviewed-by: Matthias Kaehlcke <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Stable-dep-of: eabf273c8466 ("pinctrl: qcom: sm8250-lpass-lpi: Fix i2s2_data_groups definition")
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: qcom: sm8250-lpass-lpi: Fix i2s2_data_groups definition [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Wed Jan 28 12:22:28 2026 +0100

    pinctrl: qcom: sm8250-lpass-lpi: Fix i2s2_data_groups definition
    
    [ Upstream commit eabf273c8466af3f033473c2d2267a6ea7946d57 ]
    
    The i2s2_data function is available on both gpio12 and gpio13. Fix the
    groups definition.
    
    Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver")
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: qcom: Update lpi pin group custiom functions with framework generic functions [+ + +]
Author: Srinivasa Rao Mandadapu <[email protected]>
Date:   Mon Apr 18 18:07:04 2022 +0530

    pinctrl: qcom: Update lpi pin group custiom functions with framework generic functions
    
    [ Upstream commit be73368d535614b351c13a10680b4cdd06db2417 ]
    
    Update custom pin group structure members with framework generic
    group_desc structure and replace the driver's custom pinctrl_ops
    with framework provided generic pin control group functions to avoid
    redundant code written in lpass lpi driver.
    
    Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
    Co-developed-by: Venkata Prasad Potturu <[email protected]>
    Signed-off-by: Venkata Prasad Potturu <[email protected]>
    Reviewed-by: Matthias Kaehlcke <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Stable-dep-of: eabf273c8466 ("pinctrl: qcom: sm8250-lpass-lpi: Fix i2s2_data_groups definition")
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: qcom: Update macro name to LPI specific [+ + +]
Author: Srinivasa Rao Mandadapu <[email protected]>
Date:   Mon Apr 18 18:07:03 2022 +0530

    pinctrl: qcom: Update macro name to LPI specific
    
    [ Upstream commit 6454711015267fe38b6f05aba232e01be2cb9693 ]
    
    Update NO_SLEW macro to LPI_NO_SLEW macro as this driver lpi specific.
    
    Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
    Co-developed-by: Venkata Prasad Potturu <[email protected]>
    Signed-off-by: Venkata Prasad Potturu <[email protected]>
    Reviewed-by: Stephen Boyd <[email protected]>
    Reviewed-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Stable-dep-of: eabf273c8466 ("pinctrl: qcom: sm8250-lpass-lpi: Fix i2s2_data_groups definition")
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: single: fix refcount leak in pcs_add_gpio_func() [+ + +]
Author: Wei Li <[email protected]>
Date:   Tue Jan 20 08:07:35 2026 +0000

    pinctrl: single: fix refcount leak in pcs_add_gpio_func()
    
    [ Upstream commit 353353309b0f7afa407df29e455f9d15b5acc296 ]
    
    of_parse_phandle_with_args() returns a device_node pointer with refcount
    incremented in gpiospec.np. The loop iterates through all phandles but
    never releases the reference, causing a refcount leak on each iteration.
    
    Add of_node_put() calls to release the reference after extracting the
    needed arguments and on the error path when devm_kzalloc() fails.
    
    This bug was detected by our static analysis tool and verified by my
    code review.
    
    Fixes: a1a277eb76b3 ("pinctrl: single: create new gpio function range")
    Signed-off-by: Wei Li <[email protected]>
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/chrome: cros_ec_lightbar: Fix response size initialization [+ + +]
Author: Tzung-Bi Shih <[email protected]>
Date:   Fri Jan 30 04:03:35 2026 +0000

    platform/chrome: cros_ec_lightbar: Fix response size initialization
    
    [ Upstream commit ec0dd36dbf8b0b209e63d0cd795451fa2203c736 ]
    
    Commit 1e7913ff5f9f ("platform/chrome: cros_ec_lightbar: Reduce
    ligthbar get version command") meant to set smaller values for both
    request and response sizes.
    
    However, it incorrectly assigned the response size to the `result` field
    instead of `insize`.  Fix it.
    
    Reported-by: Gwendal Grignou <[email protected]>
    Closes: https://lore.kernel.org/chrome-platform/CAMHSBOVrrYaB=1nEqZk09VkczCrj=6B-P8Fe29TpPdSDgT2CCQ@mail.gmail.com
    Fixes: 1e7913ff5f9f ("platform/chrome: cros_ec_lightbar: Reduce ligthbar get version command")
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Gwendal Grignou <[email protected]>
    Signed-off-by: Tzung-Bi Shih <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PM: sleep: wakeirq: harden dev_pm_clear_wake_irq() against races [+ + +]
Author: Gui-Dong Han <[email protected]>
Date:   Tue Feb 3 11:19:43 2026 +0800

    PM: sleep: wakeirq: harden dev_pm_clear_wake_irq() against races
    
    [ Upstream commit 5c9ecd8e6437cd55a38ea4f1e1d19cee8e226cb8 ]
    
    dev_pm_clear_wake_irq() currently uses a dangerous pattern where
    dev->power.wakeirq is read and checked for NULL outside the lock.
    If two callers invoke this function concurrently, both might see
    a valid pointer and proceed. This could result in a double-free
    when the second caller acquires the lock and tries to release the
    same object.
    
    Address this by removing the lockless check of dev->power.wakeirq.
    Instead, acquire dev->power.lock immediately to ensure the check and
    the subsequent operations are atomic. If dev->power.wakeirq is NULL
    under the lock, simply unlock and return. This guarantees that
    concurrent calls cannot race to free the same object.
    
    Based on a quick scan of current users, I did not find an actual bug as
    drivers seem to rely on their own synchronization. However, since
    asynchronous usage patterns exist (e.g., in
    drivers/net/wireless/ti/wlcore), I believe a race is theoretically
    possible if the API is used less carefully in the future. This change
    hardens the API to be robust against such cases.
    
    Fixes: 4990d4fe327b ("PM / Wakeirq: Add automated device wake IRQ handling")
    Signed-off-by: Gui-Dong Han <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PM: wakeup: Handle empty list in wakeup_sources_walk_start() [+ + +]
Author: Samuel Wu <[email protected]>
Date:   Fri Jan 23 17:21:29 2026 -0800

    PM: wakeup: Handle empty list in wakeup_sources_walk_start()
    
    [ Upstream commit 75ce02f4bc9a8b8350b6b1b01872467b0cc960cc ]
    
    In the case of an empty wakeup_sources list, wakeup_sources_walk_start()
    will return an invalid but non-NULL address. This also affects wrappers
    of the aforementioned function, like for_each_wakeup_source().
    
    Update wakeup_sources_walk_start() to return NULL in case of an empty
    list.
    
    Fixes: b4941adb24c0 ("PM: wakeup: Add routine to help fetch wakeup source object.")
    Signed-off-by: Samuel Wu <[email protected]>
    [ rjw: Subject and changelog edits ]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pNFS: fix a missing wake up while waiting on NFS_LAYOUT_DRAIN [+ + +]
Author: Olga Kornievskaia <[email protected]>
Date:   Mon Jan 26 14:15:39 2026 -0500

    pNFS: fix a missing wake up while waiting on NFS_LAYOUT_DRAIN
    
    [ Upstream commit 5248d8474e594d156bee1ed10339cc16e207a28b ]
    
    It is possible to have a task get stuck on waiting on the
    NFS_LAYOUT_DRAIN in the following scenario
    
    1. cpu a: waiter test NFS_LAYOUT_DRAIN (1) and plh_outstanding (1)
    2. cpu b: atomic_dec_and_test() -> clear bit -> wake up
    3. cpu c: sets NFS_LAYOUT_DRAIN again
    4. cpu a: calls wait_on_bit() sleeps forever.
    
    To expand on this we have say 2 outstanding pnfs write IO that get
    ESTALE which causes both to call pnfs_destroy_layout() and set the
    NFS_LAYOUT_DRAIN bit but the 1st one doesn't call the
    pnfs_put_layout_hdr() yet (as that would prevent the 2nd ESTALE write
    from trying to call pnfs_destroy_layout()). If the 1st ESTALE write
    is the one that initially sets the NFS_LAYOUT_DRAIN so that new IO
    on this file initiates new LAYOUTGET. Another new write would find
    NFS_LAYOUT_DRAIN set and phl_outstanding>0 (step 1) and would
    wait_on_bit(). LAYOUTGET completes doing step 2. Now, the 2nd of
    ESTALE writes is calling pnfs_destory_layout() and set the
    NFS_LAYOUT_DRAIN bit (step 3). Finally, the waiting write wakes up
    to check the bit and goes back to sleep.
    
    The problem revolves around the fact that if NFS_LAYOUT_INVALID_STID
    was already set, it should not do the work of
    pnfs_mark_layout_stateid_invalid(), thus NFS_LAYOUT_DRAIN will not
    be set more than once for an invalid layout.
    
    Suggested-by: Trond Myklebust <[email protected]>
    Fixes: 880265c77ac4 ("pNFS: Avoid a live lock condition in pnfs_update_layout()")
    Signed-off-by: Olga Kornievskaia <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
power: reset: nvmem-reboot-mode: respect cell size for nvmem_cell_write [+ + +]
Author: Alexander Koskovich <[email protected]>
Date:   Sun Dec 14 19:16:18 2025 +0000

    power: reset: nvmem-reboot-mode: respect cell size for nvmem_cell_write
    
    [ Upstream commit 36b05629226413836cfbb3fbe6689cd188bca156 ]
    
    Some platforms expose reboot mode cells that are smaller than an
    unsigned int, in which cases lead to write failures. Read the cell
    first to determine actual size and only write the number of bytes the
    cell can hold.
    
    Fixes: 7a78a7f7695b ("power: reset: nvmem-reboot-mode: use NVMEM as reboot mode write interface")
    Signed-off-by: Alexander Koskovich <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: ab8500: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:35:58 2025 +0100

    power: supply: ab8500: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit c4af8a98bb52825a5331ae1d0604c0ea6956ba4b ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Commit 1c1f13a006ed ("power: supply: ab8500: Move to componentized
    binding") introduced this issue during a refactorization. Fix this racy
    use-after-free by making sure the IRQ is requested _after_ the
    registration of the `power_supply` handle.
    
    Fixes: 1c1f13a006ed ("power: supply: ab8500: Move to componentized binding")
    Signed-off-by: Waqar Hameed <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://patch.msgid.link/ccf83a09942cb8dda3dff70b2682f2c2e9cb97f2.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: ab8500: Use core battery parser [+ + +]
Author: Linus Walleij <[email protected]>
Date:   Sat Nov 20 16:53:11 2021 +0100

    power: supply: ab8500: Use core battery parser
    
    [ Upstream commit 59f1b854706d4d6830a3ed0f6b535a2ba5d425a6 ]
    
    This deploys the core battery DT parser to read the basic properties
    of the battery. We only use very little of it as we start out, but
    we will improve as we go along.
    
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sebastian Reichel <[email protected]>
    Stable-dep-of: c4af8a98bb52 ("power: supply: ab8500: Fix use-after-free in power_supply_changed()")
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: ab8500_bmdata: Use standard phandle [+ + +]
Author: Linus Walleij <[email protected]>
Date:   Thu Oct 7 00:40:07 2021 +0200

    power: supply: ab8500_bmdata: Use standard phandle
    
    [ Upstream commit 1a6784359540dcfbf4fa73c07868b80c8405cc14 ]
    
    Look up the battery using the "monitored-battery" phandle
    as is nowadays a standard DT binding. The actual bindings
    for these charger elements are not upstream so let's sort
    out this mess by conforming to the standard.
    
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sebastian Reichel <[email protected]>
    Stable-dep-of: c4af8a98bb52 ("power: supply: ab8500: Fix use-after-free in power_supply_changed()")
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: act8945a: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:35:59 2025 +0100

    power: supply: act8945a: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit 3291c51d4684d048dd2eb91b5b65fcfdaf72141f ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Fix this racy use-after-free by making sure the IRQ is requested _after_
    the registration of the `power_supply` handle.
    
    Fixes: a09209acd6a8 ("power: supply: act8945a_charger: Add status change update support")
    Signed-off-by: Waqar Hameed <[email protected]>
    Link: https://patch.msgid.link/bcf3a23b5187df0bba54a8c8fe09f8b8a0031dee.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: bq256xx: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:35:59 2025 +0100

    power: supply: bq256xx: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit 8005843369723d9c8975b7c4202d1b85d6125302 ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Fix this racy use-after-free by making sure the IRQ is requested _after_
    the registration of the `power_supply` handle.
    
    Fixes: 32e4978bb920 ("power: supply: bq256xx: Introduce the BQ256XX charger driver")
    Signed-off-by: Waqar Hameed <[email protected]>
    Link: https://patch.msgid.link/39da6da8cc060fa0382ca859f65071e791cb6119.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: bq25980: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:35:59 2025 +0100

    power: supply: bq25980: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit 5f0b1cb41906e86b64bf69f5ededb83b0d757c27 ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Fix this racy use-after-free by making sure the IRQ is requested _after_
    the registration of the `power_supply` handle.
    
    Fixes: 5069185fc18e ("power: supply: bq25980: Add support for the BQ259xx family")
    Signed-off-by: Waqar Hameed <[email protected]>
    Link: https://patch.msgid.link/8763035cadb959e14787b3837f2d3db61f6e1c34.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: bq27xxx: fix wrong errno when bus ops are unsupported [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Thu Dec 4 16:34:36 2025 +0800

    power: supply: bq27xxx: fix wrong errno when bus ops are unsupported
    
    [ Upstream commit 688364a11647dc09ba1e4429313e0008066ec790 ]
    
    bq27xxx_write(), bq27xxx_read_block(), and bq27xxx_write_block()
    return -EPERM when the bus callback pointer is NULL. A NULL callback
    indicates the operation is not supported by the bus/driver,
    not that permission is denied.
    
    Return -EOPNOTSUPP instead of -EPERM when di->bus.write/
    read_bulk/write_bulk is NULL.
    
    Fixes: 14073f6614f6 ("power: supply: bq27xxx: Add bulk transfer bus methods")
    Signed-off-by: Haotian Zhang <[email protected]>
    Reviewed-by: Matt Ranostay <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: cpcap-battery: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:36:00 2025 +0100

    power: supply: cpcap-battery: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit 642f33e34b969eedec334738fd5df95d2dc42742 ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Fix this racy use-after-free by making sure the IRQ is requested _after_
    the registration of the `power_supply` handle.
    
    Fixes: 874b2adbed12 ("power: supply: cpcap-battery: Add a battery driver")
    Signed-off-by: Waqar Hameed <[email protected]>
    Link: https://patch.msgid.link/81db58d610c9a51a68184f856cd431a934cccee2.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: goldfish: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:36:00 2025 +0100

    power: supply: goldfish: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit b2ce982e2e0c888dc55c888ad0e20ea04daf2e6b ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Fix this racy use-after-free by making sure the IRQ is requested _after_
    the registration of the `power_supply` handle.
    
    Fixes: 84d7b7687489 ("power: Add battery driver for goldfish emulator")
    Signed-off-by: Waqar Hameed <[email protected]>
    Link: https://patch.msgid.link/500a606bb6fb6f2bb8d797e19a00cea9dd7b03c1.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: rt9455: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:36:02 2025 +0100

    power: supply: rt9455: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit e2febe375e5ea5afed92f4cd9711bde8f24ee6d2 ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Fix this racy use-after-free by making sure the IRQ is requested _after_
    the registration of the `power_supply` handle.
    
    Fixes: e86d69dd786e ("power_supply: Add support for Richtek RT9455 battery charger")
    Signed-off-by: Waqar Hameed <[email protected]>
    Link: https://patch.msgid.link/1567d831e04c3e2fcb9e18dd36b7bcba4634581a.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: sbs-battery: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:36:02 2025 +0100

    power: supply: sbs-battery: Fix use-after-free in power_supply_changed()
    
    [ Upstream commit 8d59cf3887fbabacef53bfba473e33e8a8d9d07b ]
    
    Using the `devm_` variant for requesting IRQ _before_ the `devm_`
    variant for allocating/registering the `power_supply` handle, means that
    the `power_supply` handle will be deallocated/unregistered _before_ the
    interrupt handler (since `devm_` naturally deallocates in reverse
    allocation order). This means that during removal, there is a race
    condition where an interrupt can fire just _after_ the `power_supply`
    handle has been freed, *but* just _before_ the corresponding
    unregistration of the IRQ handler has run.
    
    This will lead to the IRQ handler calling `power_supply_changed()` with
    a freed `power_supply` handle. Which usually crashes the system or
    otherwise silently corrupts the memory...
    
    Note that there is a similar situation which can also happen during
    `probe()`; the possibility of an interrupt firing _before_ registering
    the `power_supply` handle. This would then lead to the nasty situation
    of using the `power_supply` handle *uninitialized* in
    `power_supply_changed()`.
    
    Fix this racy use-after-free by making sure the IRQ is requested _after_
    the registration of the `power_supply` handle. Keep the old behavior of
    just printing a warning in case of any failures during the IRQ request
    and finishing the probe successfully.
    
    Fixes: d2cec82c2880 ("power: sbs-battery: Request threaded irq and fix dev callback cookie")
    Signed-off-by: Waqar Hameed <[email protected]>
    Reviewed-by: Phil Reid <[email protected]>
    Link: https://patch.msgid.link/0ef896e002495e615157b482d18a437af19ddcd0.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed() [+ + +]
Author: Waqar Hameed <[email protected]>
Date:   Sat Dec 20 23:46:24 2025 +0100

    power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed()
    
    [ Upstream commit 39fe0eac6d755ef215026518985fcf8de9360e9e ]
    
    In `probe()`, `request_irq()` is called before allocating/registering a
    `power_supply` handle. If an interrupt is fired between the call to
    `request_irq()` and `power_supply_register()`, the `power_supply` handle
    will be used uninitialized in `power_supply_changed()` in
    `wm97xx_bat_update()` (triggered from the interrupt handler). This will
    lead to a `NULL` pointer dereference since
    
    Fix this racy `NULL` pointer dereference by making sure the IRQ is
    requested _after_ the registration of the `power_supply` handle. Since
    the IRQ is the last thing requests in the `probe()` now, remove the
    error path for freeing it. Instead add one for unregistering the
    `power_supply` handle when IRQ request fails.
    
    Fixes: 7c87942aef52 ("wm97xx_battery: Use irq to detect charger state")
    Signed-off-by: Waqar Hameed <[email protected]>
    Link: https://patch.msgid.link/97b55f0479a932eea7213844bf66f28a974e27a2.1766270196.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/eeh: fix recursive pci_lock_rescan_remove locking in EEH event handling [+ + +]
Author: Narayana Murty N <[email protected]>
Date:   Wed Dec 10 08:25:59 2025 -0600

    powerpc/eeh: fix recursive pci_lock_rescan_remove locking in EEH event handling
    
    [ Upstream commit 815a8d2feb5615ae7f0b5befd206af0b0160614c ]
    
    The recent commit 1010b4c012b0 ("powerpc/eeh: Make EEH driver device
    hotplug safe") restructured the EEH driver to improve synchronization
    with the PCI hotplug layer.
    
    However, it inadvertently moved pci_lock_rescan_remove() outside its
    intended scope in eeh_handle_normal_event(), leading to broken PCI
    error reporting and improper EEH event triggering. Specifically,
    eeh_handle_normal_event() acquired pci_lock_rescan_remove() before
    calling eeh_pe_bus_get(), but eeh_pe_bus_get() itself attempts to
    acquire the same lock internally, causing nested locking and disrupting
    normal EEH event handling paths.
    
    This patch adds a boolean parameter do_lock to _eeh_pe_bus_get(),
    with two public wrappers:
        eeh_pe_bus_get() with locking enabled.
        eeh_pe_bus_get_nolock() that skips locking.
    
    Callers that already hold pci_lock_rescan_remove() now use
    eeh_pe_bus_get_nolock() to avoid recursive lock acquisition.
    
    Additionally, pci_lock_rescan_remove() calls are restored to the correct
    position—after eeh_pe_bus_get() and immediately before iterating affected
    PEs and devices. This ensures EEH-triggered PCI removes occur under proper
    bus rescan locking without recursive lock contention.
    
    The eeh_pe_loc_get() function has been split into two functions:
        eeh_pe_loc_get(struct eeh_pe *pe) which retrieves the loc for given PE.
        eeh_pe_loc_get_bus(struct pci_bus *bus) which retrieves the location
        code for given bus.
    
    This resolves lockdep warnings such as:
    <snip>
    [   84.964298] [    T928] ============================================
    [   84.964304] [    T928] WARNING: possible recursive locking detected
    [   84.964311] [    T928] 6.18.0-rc3 #51 Not tainted
    [   84.964315] [    T928] --------------------------------------------
    [   84.964320] [    T928] eehd/928 is trying to acquire lock:
    [   84.964324] [    T928] c000000003b29d58 (pci_rescan_remove_lock){+.+.}-{3:3}, at: pci_lock_rescan_remove+0x28/0x40
    [   84.964342] [    T928]
                           but task is already holding lock:
    [   84.964347] [    T928] c000000003b29d58 (pci_rescan_remove_lock){+.+.}-{3:3}, at: pci_lock_rescan_remove+0x28/0x40
    [   84.964357] [    T928]
                           other info that might help us debug this:
    [   84.964363] [    T928]  Possible unsafe locking scenario:
    
    [   84.964367] [    T928]        CPU0
    [   84.964370] [    T928]        ----
    [   84.964373] [    T928]   lock(pci_rescan_remove_lock);
    [   84.964378] [    T928]   lock(pci_rescan_remove_lock);
    [   84.964383] [    T928]
                           *** DEADLOCK ***
    
    [   84.964388] [    T928]  May be due to missing lock nesting notation
    
    [   84.964393] [    T928] 1 lock held by eehd/928:
    [   84.964397] [    T928]  #0: c000000003b29d58 (pci_rescan_remove_lock){+.+.}-{3:3}, at: pci_lock_rescan_remove+0x28/0x40
    [   84.964408] [    T928]
                           stack backtrace:
    [   84.964414] [    T928] CPU: 2 UID: 0 PID: 928 Comm: eehd Not tainted 6.18.0-rc3 #51 VOLUNTARY
    [   84.964417] [    T928] Hardware name: IBM,9080-HEX POWER10 (architected) 0x800200 0xf000006 of:IBM,FW1060.00 (NH1060_022) hv:phyp pSeries
    [   84.964419] [    T928] Call Trace:
    [   84.964420] [    T928] [c0000011a7157990] [c000000001705de4] dump_stack_lvl+0xc8/0x130 (unreliable)
    [   84.964424] [    T928] [c0000011a71579d0] [c0000000002f66e0] print_deadlock_bug+0x430/0x440
    [   84.964428] [    T928] [c0000011a7157a70] [c0000000002fd0c0] __lock_acquire+0x1530/0x2d80
    [   84.964431] [    T928] [c0000011a7157ba0] [c0000000002fea54] lock_acquire+0x144/0x410
    [   84.964433] [    T928] [c0000011a7157cb0] [c0000011a7157cb0] __mutex_lock+0xf4/0x1050
    [   84.964436] [    T928] [c0000011a7157e00] [c000000000de21d8] pci_lock_rescan_remove+0x28/0x40
    [   84.964439] [    T928] [c0000011a7157e20] [c00000000004ed98] eeh_pe_bus_get+0x48/0xc0
    [   84.964442] [    T928] [c0000011a7157e50] [c000000000050434] eeh_handle_normal_event+0x64/0xa60
    [   84.964446] [    T928] [c0000011a7157f30] [c000000000051de8] eeh_event_handler+0xf8/0x190
    [   84.964450] [    T928] [c0000011a7157f90] [c0000000002747ac] kthread+0x16c/0x180
    [   84.964453] [    T928] [c0000011a7157fe0] [c00000000000ded8] start_kernel_thread+0x14/0x18
    </snip>
    
    Fixes: 1010b4c012b0 ("powerpc/eeh: Make EEH driver device hotplug safe")
    Signed-off-by: Narayana Murty N <[email protected]>
    Reviewed-by: Sourabh Jain <[email protected]>
    Reviewed-by: Mahesh Salgaonkar <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/smp: Add check for kcalloc() failure in parse_thread_groups() [+ + +]
Author: Guangshuo Li <[email protected]>
Date:   Tue Sep 23 21:32:35 2025 +0800

    powerpc/smp: Add check for kcalloc() failure in parse_thread_groups()
    
    [ Upstream commit 33c1c6d8a28a2761ac74b0380b2563cf546c2a3a ]
    
    As kcalloc() may fail, check its return value to avoid a NULL pointer
    dereference when passing it to of_property_read_u32_array().
    
    Fixes: 790a1662d3a26 ("powerpc/smp: Parse ibm,thread-groups with multiple properties")
    Cc: [email protected]
    Reviewed-by: Christophe Leroy <[email protected]>
    Signed-off-by: Guangshuo Li <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/uaccess: Move barrier_nospec() out of allow_read_{from/write}_user() [+ + +]
Author: Christophe Leroy <[email protected]>
Date:   Wed Dec 24 12:20:49 2025 +0100

    powerpc/uaccess: Move barrier_nospec() out of allow_read_{from/write}_user()
    
    [ Upstream commit 5fbc09eb0b4f4b1a4b33abebacbeee0d29f195e9 ]
    
    Commit 74e19ef0ff80 ("uaccess: Add speculation barrier to
    copy_from_user()") added a redundant barrier_nospec() in
    copy_from_user(), because powerpc is already calling
    barrier_nospec() in allow_read_from_user() and
    allow_read_write_user(). But on other architectures that
    call to barrier_nospec() was missing. So change powerpc
    instead of reverting the above commit and having to fix
    other architectures one by one. This is now possible
    because barrier_nospec() has also been added in
    copy_from_user_iter().
    
    Move barrier_nospec() out of allow_read_from_user() and
    allow_read_write_user(). This will also allow reuse of those
    functions when implementing masked user access which doesn't
    require barrier_nospec().
    
    Don't add it back in raw_copy_from_user() as it is already called
    by copy_from_user() and copy_from_user_iter().
    
    Fixes: 74e19ef0ff80 ("uaccess: Add speculation barrier to copy_from_user()")
    Signed-off-by: Christophe Leroy <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/f29612105c5fcbc8ceb7303808ddc1a781f0f6b5.1766574657.git.chleroy@kernel.org
    Signed-off-by: Sasha Levin <[email protected]>

 
procfs: fix missing RCU protection when reading real_parent in do_task_stat() [+ + +]
Author: Jinliang Zheng <[email protected]>
Date:   Wed Jan 28 16:30:07 2026 +0800

    procfs: fix missing RCU protection when reading real_parent in do_task_stat()
    
    [ Upstream commit 76149d53502cf17ef3ae454ff384551236fba867 ]
    
    When reading /proc/[pid]/stat, do_task_stat() accesses task->real_parent
    without proper RCU protection, which leads to:
    
      cpu 0                               cpu 1
      -----                               -----
      do_task_stat
        var = task->real_parent
                                          release_task
                                            call_rcu(delayed_put_task_struct)
        task_tgid_nr_ns(var)
          rcu_read_lock   <--- Too late to protect task->real_parent!
          task_pid_ptr    <--- UAF!
          rcu_read_unlock
    
    This patch uses task_ppid_nr_ns() instead of task_tgid_nr_ns() to add
    proper RCU protection for accessing task->real_parent.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 06fffb1267c9 ("do_task_stat: don't take rcu_read_lock()")
    Signed-off-by: Jinliang Zheng <[email protected]>
    Acked-by: Oleg Nesterov <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: ruippan <[email protected]>
    Cc: Usama Arif <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pstore/ram: fix buffer overflow in persistent_ram_save_old() [+ + +]
Author: Sai Ritvik Tanksalkar <[email protected]>
Date:   Sun Feb 1 13:22:40 2026 +0000

    pstore/ram: fix buffer overflow in persistent_ram_save_old()
    
    [ Upstream commit 5669645c052f235726a85f443769b6fc02f66762 ]
    
    persistent_ram_save_old() can be called multiple times for the same
    persistent_ram_zone (e.g., via ramoops_pstore_read -> ramoops_get_next_prz
    for PSTORE_TYPE_DMESG records).
    
    Currently, the function only allocates prz->old_log when it is NULL,
    but it unconditionally updates prz->old_log_size to the current buffer
    size and then performs memcpy_fromio() using this new size. If the
    buffer size has grown since the first allocation (which can happen
    across different kernel boot cycles), this leads to:
    
    1. A heap buffer overflow (OOB write) in the memcpy_fromio() calls
    2. A subsequent OOB read when ramoops_pstore_read() accesses the buffer
       using the incorrect (larger) old_log_size
    
    The KASAN splat would look similar to:
      BUG: KASAN: slab-out-of-bounds in ramoops_pstore_read+0x...
      Read of size N at addr ... by task ...
    
    The conditions are likely extremely hard to hit:
    
      0. Crash with a ramoops write of less-than-record-max-size bytes.
      1. Reboot: ramoops registers, pstore_get_records(0) reads old crash,
         allocates old_log with size X
      2. Crash handler registered, timer started (if pstore_update_ms >= 0)
      3. Oops happens (non-fatal, system continues)
      4. pstore_dump() writes oops via ramoops_pstore_write() size Y (>X)
      5. pstore_new_entry = 1, pstore_timer_kick() called
      6. System continues running (not a panic oops)
      7. Timer fires after pstore_update_ms milliseconds
      8. pstore_timefunc() → schedule_work() → pstore_dowork() → pstore_get_records(1)
      9. ramoops_get_next_prz() → persistent_ram_save_old()
     10. buffer_size() returns Y, but old_log is X bytes
     11. Y > X: memcpy_fromio() overflows heap
    
      Requirements:
      - a prior crash record exists that did not fill the record size
        (almost impossible since the crash handler writes as much as it
        can possibly fit into the record, capped by max record size and
        the kmsg buffer almost always exceeds the max record size)
      - pstore_update_ms >= 0 (disabled by default)
      - Non-fatal oops (system survives)
    
    Free and reallocate the buffer when the new size differs from the
    previously allocated size. This ensures old_log always has sufficient
    space for the data being copied.
    
    Fixes: 201e4aca5aa1 ("pstore/ram: Should update old dmesg buffer before reading")
    Signed-off-by: Sai Ritvik Tanksalkar <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pstore: ram_core: fix incorrect success return when vmap() fails [+ + +]
Author: Ruipeng Qi <[email protected]>
Date:   Tue Feb 3 10:03:58 2026 +0800

    pstore: ram_core: fix incorrect success return when vmap() fails
    
    [ Upstream commit 05363abc7625cf18c96e67f50673cd07f11da5e9 ]
    
    In persistent_ram_vmap(), vmap() may return NULL on failure.
    
    If offset is non-zero, adding offset_in_page(start) causes the function
    to return a non-NULL pointer even though the mapping failed.
    persistent_ram_buffer_map() therefore incorrectly returns success.
    
    Subsequent access to prz->buffer may dereference an invalid address
    and cause crashes.
    
    Add proper NULL checking for vmap() failures.
    
    Signed-off-by: Ruipeng Qi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rapidio: replace rio_free_net() with kfree() in rio_scan_alloc_net() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Wed Jan 21 09:35:08 2026 +0800

    rapidio: replace rio_free_net() with kfree() in rio_scan_alloc_net()
    
    [ Upstream commit 666183dcdd9ad3b8156a1df7f204f728f720380f ]
    
    When idtab allocation fails, net is not registered with rio_add_net() yet,
    so kfree(net) is sufficient to release the memory.  Set mport->net to NULL
    to avoid dangling pointer.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: e6b585ca6e81 ("rapidio: move net allocation into core code")
    Signed-off-by: Haoxiang Li <[email protected]>
    Reviewed-by: Andrew Morton <[email protected]>
    Cc: Alexandre Bounine <[email protected]>
    Cc: Matt Porter <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/core: add rdma_rw_max_sge() helper for SQ sizing [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Tue Jan 27 19:53:59 2026 -0500

    RDMA/core: add rdma_rw_max_sge() helper for SQ sizing
    
    [ Upstream commit afcae7d7b8a278a6c29e064f99e5bafd4ac1fb37 ]
    
    svc_rdma_accept() computes sc_sq_depth as the sum of rq_depth and the
    number of rdma_rw contexts (ctxts). This value is used to allocate the
    Send CQ and to initialize the sc_sq_avail credit pool.
    
    However, when the device uses memory registration for RDMA operations,
    rdma_rw_init_qp() inflates the QP's max_send_wr by a factor of three
    per context to account for REG and INV work requests. The Send CQ and
    credit pool remain sized for only one work request per context,
    causing Send Queue exhaustion under heavy NFS WRITE workloads.
    
    Introduce rdma_rw_max_sge() to compute the actual number of Send Queue
    entries required for a given number of rdma_rw contexts. Upper layer
    protocols call this helper before creating a Queue Pair so that their
    Send CQs and credit accounting match the QP's true capacity.
    
    Update svc_rdma_accept() to use rdma_rw_max_sge() when computing
    sc_sq_depth, ensuring the credit pool reflects the work requests
    that rdma_rw_init_qp() will reserve.
    
    Reviewed-by: Christoph Hellwig <[email protected]>
    Fixes: 00bd1439f464 ("RDMA/rw: Support threshold for registration vs scattering to local pages")
    Signed-off-by: Chuck Lever <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/core: Fix a couple of obvious typos in comments [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Wed Oct 4 11:29:41 2023 -0400

    RDMA/core: Fix a couple of obvious typos in comments
    
    [ Upstream commit 0aa44595d61ca9e61239f321fec799518884feb3 ]
    
    Fix typos.
    
    Signed-off-by: Chuck Lever <[email protected]>
    Link: https://lore.kernel.org/r/169643338101.8035.6826446669479247727.stgit@manet.1015granger.net
    Signed-off-by: Leon Romanovsky <[email protected]>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/core: Fix stale RoCE GIDs during netdev events at registration [+ + +]
Author: Jiri Pirko <[email protected]>
Date:   Tue Jan 27 10:38:39 2026 +0100

    RDMA/core: Fix stale RoCE GIDs during netdev events at registration
    
    [ Upstream commit 9af0feae8016ba58ad7ff784a903404986b395b1 ]
    
    RoCE GID entries become stale when netdev properties change during the
    IB device registration window. This is reproducible with a udev rule
    that sets a MAC address when a VF netdev appears:
    
      ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth4", \
        RUN+="/sbin/ip link set eth4 address 88:22:33:44:55:66"
    
    After VF creation, show_gids displays GIDs derived from the original
    random MAC rather than the configured one.
    
    The root cause is a race between netdev event processing and device
    registration:
    
      CPU 0 (driver)                    CPU 1 (udev/workqueue)
      ──────────────                    ──────────────────────
      ib_register_device()
        ib_cache_setup_one()
          gid_table_setup_one()
            _gid_table_setup_one()
              ← GID table allocated
            rdma_roce_rescan_device()
              ← GIDs populated with
                OLD MAC
                                        ip link set eth4 addr NEW_MAC
                                        NETDEV_CHANGEADDR queued
                                        netdevice_event_work_handler()
                                          ib_enum_all_roce_netdevs()
                                            ← Iterates DEVICE_REGISTERED
                                            ← Device NOT marked yet, SKIP!
        enable_device_and_get()
          xa_set_mark(DEVICE_REGISTERED)
              ← Too late, event was lost
    
    The netdev event handler uses ib_enum_all_roce_netdevs() which only
    iterates devices marked DEVICE_REGISTERED. However, this mark is set
    late in the registration process, after the GID cache is already
    populated. Events arriving in this window are silently dropped.
    
    Fix this by introducing a new xarray mark DEVICE_GID_UPDATES that is
    set immediately after the GID table is allocated and initialized. Use
    the new mark in ib_enum_all_roce_netdevs() function to iterate devices
    instead of DEVICE_REGISTERED.
    
    This is safe because:
    - After _gid_table_setup_one(), all required structures exist (port_data,
      immutable, cache.gid)
    - The GID table mutex serializes concurrent access between the initial
      rescan and event handlers
    - Event handlers correctly update stale GIDs even when racing with rescan
    - The mark is cleared in ib_cache_cleanup_one() before teardown
    
    This also fixes similar races for IP address events (inetaddr_event,
    inet6addr_event) which use the same enumeration path.
    
    Fixes: 0df91bb67334 ("RDMA/devices: Use xarray to store the client_data")
    Signed-off-by: Jiri Pirko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=881d65229ca4f9ae8c84
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/efa: Fix typo in efa_alloc_mr() [+ + +]
Author: Jason Gunthorpe <[email protected]>
Date:   Mon Feb 16 11:02:47 2026 -0400

    RDMA/efa: Fix typo in efa_alloc_mr()
    
    [ Upstream commit f22c77ce49db0589103d96487dca56f5b2136362 ]
    
    The pattern is to check the entire driver request space, not just
    sizeof something unrelated.
    
    Fixes: 40909f664d27 ("RDMA/efa: Add EFA verbs implementation")
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Acked-by: Michael Margolin <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/hns: Notify ULP of remaining soft-WCs during reset [+ + +]
Author: Chengchang Tang <[email protected]>
Date:   Sun Jan 4 14:40:57 2026 +0800

    RDMA/hns: Notify ULP of remaining soft-WCs during reset
    
    [ Upstream commit 0789f929900d85b80b343c5f04f8b9444e991384 ]
    
    During a reset, software-generated WCs cannot be reported via
    interrupts. This may cause the ULP to miss some WCs.
    
    To avoid this, add check in the CQ arm process: if a hardware reset
    has occurred and there are still unreported soft-WCs, notify the ULP
    to handle the remaining WCs, thereby preventing any loss of completions.
    
    Fixes: 626903e9355b ("RDMA/hns: Add support for reporting wc as software mode")
    Signed-off-by: Chengchang Tang <[email protected]>
    Signed-off-by: Junxian Huang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/rtrs-clt: For conn rejection use actual err number [+ + +]
Author: Md Haris Iqbal <[email protected]>
Date:   Wed Jan 7 17:15:16 2026 +0100

    RDMA/rtrs-clt: For conn rejection use actual err number
    
    [ Upstream commit fc290630702b530c2969061e7ef0d869a5b6dc4f ]
    
    When the connection establishment request is rejected from the server
    side, then the actual error number sent back should be used.
    
    Signed-off-by: Md Haris Iqbal <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Grzegorz Prajsner <[email protected]>
    Reviewed-by: Jack Wang <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/rtrs-srv: Correct the checking of ib_map_mr_sg [+ + +]
Author: Guoqing Jiang <[email protected]>
Date:   Thu Nov 17 18:19:40 2022 +0800

    RDMA/rtrs-srv: Correct the checking of ib_map_mr_sg
    
    [ Upstream commit 102d2f70ec0999a5cde181f1ccbe8a81cba45b10 ]
    
    We should check with nr_sgt, also the only successful case is that
    all sg elements are mapped, so make it explicitly.
    
    Acked-by: Jack Wang <[email protected]>
    Signed-off-by: Guoqing Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Stable-dep-of: 83835f7c07b5 ("RDMA/rtrs-srv: fix SG mapping")
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/rtrs-srv: fix SG mapping [+ + +]
Author: Roman Penyaev <[email protected]>
Date:   Wed Jan 7 17:15:08 2026 +0100

    RDMA/rtrs-srv: fix SG mapping
    
    [ Upstream commit 83835f7c07b523c7ca2a5ad0a511670b5810539e ]
    
    This fixes the following error on the server side:
    
       RTRS server session allocation failed: -EINVAL
    
    caused by the caller of the `ib_dma_map_sg()`, which does not expect
    less mapped entries, than requested, which is in the order of things
    and can be easily reproduced on the machine with enabled IOMMU.
    
    The fix is to treat any positive number of mapped sg entries as a
    successful mapping and cache DMA addresses by traversing modified
    SG table.
    
    Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
    Signed-off-by: Roman Penyaev <[email protected]>
    Signed-off-by: Jack Wang <[email protected]>
    Signed-off-by: Grzegorz Prajsner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/rtrs-srv: Refactor the handling of failure case in map_cont_bufs [+ + +]
Author: Guoqing Jiang <[email protected]>
Date:   Thu Nov 17 18:19:39 2022 +0800

    RDMA/rtrs-srv: Refactor the handling of failure case in map_cont_bufs
    
    [ Upstream commit 0f597ac618d04beb9de997fda59a29c9d3818fb2 ]
    
    Let's call unmap_cont_bufs when failure happens, and also only update
    mrs_num after everything is settled which means we can remove 'mri'.
    
    Acked-by: Md Haris Iqbal <[email protected]>
    Signed-off-by: Guoqing Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Stable-dep-of: 83835f7c07b5 ("RDMA/rtrs-srv: fix SG mapping")
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/rtrs: server: remove dead code [+ + +]
Author: Honggang LI <[email protected]>
Date:   Wed Dec 24 10:38:19 2025 +0800

    RDMA/rtrs: server: remove dead code
    
    [ Upstream commit a3572bdc3a028ca47f77d7166ac95b719cf77d50 ]
    
    As rkey had been initialized to zero, the WARN_ON_ONCE should never been
    triggered. Remove it.
    
    Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
    Signed-off-by: Honggang LI <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/rxe: Fix double free in rxe_srq_from_init [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Mon Jan 12 01:54:12 2026 +0000

    RDMA/rxe: Fix double free in rxe_srq_from_init
    
    [ Upstream commit 0beefd0e15d962f497aad750b2d5e9c3570b66d1 ]
    
    In rxe_srq_from_init(), the queue pointer 'q' is assigned to
    'srq->rq.queue' before copying the SRQ number to user space.
    If copy_to_user() fails, the function calls rxe_queue_cleanup()
    to free the queue, but leaves the now-invalid pointer in
    'srq->rq.queue'.
    
    The caller of rxe_srq_from_init() (rxe_create_srq) eventually
    calls rxe_srq_cleanup() upon receiving the error, which triggers
    a second rxe_queue_cleanup() on the same memory, leading to a
    double free.
    
    The call trace looks like this:
       kmem_cache_free+0x.../0x...
       rxe_queue_cleanup+0x1a/0x30 [rdma_rxe]
       rxe_srq_cleanup+0x42/0x60 [rdma_rxe]
       rxe_elem_release+0x31/0x70 [rdma_rxe]
       rxe_create_srq+0x12b/0x1a0 [rdma_rxe]
       ib_create_srq_user+0x9a/0x150 [ib_core]
    
    Fix this by moving 'srq->rq.queue = q' after copy_to_user.
    
    Fixes: aae0484e15f0 ("IB/rxe: avoid srq memory leak")
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Zhu Yanjun <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/siw: Fix potential NULL pointer dereference in header processing [+ + +]
Author: YunJe Shin <[email protected]>
Date:   Wed Feb 4 18:24:57 2026 +0900

    RDMA/siw: Fix potential NULL pointer dereference in header processing
    
    commit 14ab3da122bd18920ad57428f6cf4fade8385142 upstream.
    
    If siw_get_hdr() returns -EINVAL before set_rx_fpdu_context(),
    qp->rx_fpdu can be NULL. The error path in siw_tcp_rx_data()
    dereferences qp->rx_fpdu->more_ddp_segs without checking, which
    may lead to a NULL pointer deref. Only check more_ddp_segs when
    rx_fpdu is present.
    
    KASAN splat:
    [  101.384271] KASAN: null-ptr-deref in range [0x00000000000000c0-0x00000000000000c7]
    [  101.385869] RIP: 0010:siw_tcp_rx_data+0x13ad/0x1e50
    
    Fixes: 8b6a361b8c48 ("rdma/siw: receive path")
    Signed-off-by: YunJe Shin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Acked-by: Bernard Metzler <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
RDMA/umad: Reject negative data_len in ib_umad_write [+ + +]
Author: YunJe Shin <[email protected]>
Date:   Tue Feb 3 19:06:21 2026 +0900

    RDMA/umad: Reject negative data_len in ib_umad_write
    
    commit 5551b02fdbfd85a325bb857f3a8f9c9f33397ed2 upstream.
    
    ib_umad_write computes data_len from user-controlled count and the
    MAD header sizes. With a mismatched user MAD header size and RMPP
    header length, data_len can become negative and reach ib_create_send_mad().
    This can make the padding calculation exceed the segment size and trigger
    an out-of-bounds memset in alloc_send_rmpp_list().
    
    Add an explicit check to reject negative data_len before creating the
    send buffer.
    
    KASAN splat:
    [  211.363464] BUG: KASAN: slab-out-of-bounds in ib_create_send_mad+0xa01/0x11b0
    [  211.364077] Write of size 220 at addr ffff88800c3fa1f8 by task spray_thread/102
    [  211.365867] ib_create_send_mad+0xa01/0x11b0
    [  211.365887] ib_umad_write+0x853/0x1c80
    
    Fixes: 2be8e3ee8efd ("IB/umad: Add P_Key index support")
    Signed-off-by: YunJe Shin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
RDMA/uverbs: Add __GFP_NOWARN to ib_uverbs_unmarshall_recv() kmalloc [+ + +]
Author: Yi Liu <[email protected]>
Date:   Thu Jan 29 17:49:00 2026 +0800

    RDMA/uverbs: Add __GFP_NOWARN to ib_uverbs_unmarshall_recv() kmalloc
    
    [ Upstream commit 58b604dfc7bb753f91bc0ccd3fa705e14e6edfb4 ]
    
    Since wqe_size in ib_uverbs_unmarshall_recv() is user-provided and already
    validated, but can still be large, add __GFP_NOWARN to suppress memory
    allocation warnings for large sizes, consistent with the similar fix in
    ib_uverbs_post_send().
    
    Fixes: 67cdb40ca444 ("[IB] uverbs: Implement more commands")
    Signed-off-by: Yi Liu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send [+ + +]
Author: Yi Liu <[email protected]>
Date:   Thu Jan 22 22:29:00 2026 +0800

    RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send
    
    [ Upstream commit 1956f0a74ccf5dc9c3ef717f2985c3ed3400aab0 ]
    
    ib_uverbs_post_send() uses cmd.wqe_size from userspace without any
    validation before passing it to kmalloc() and using the allocated
    buffer as struct ib_uverbs_send_wr.
    
    If a user provides a small wqe_size value (e.g., 1), kmalloc() will
    succeed, but subsequent accesses to user_wr->opcode, user_wr->num_sge,
    and other fields will read beyond the allocated buffer, resulting in
    an out-of-bounds read from kernel heap memory. This could potentially
    leak sensitive kernel information to userspace.
    
    Additionally, providing an excessively large wqe_size can trigger a
    WARNING in the memory allocation path, as reported by syzkaller.
    
    This is inconsistent with ib_uverbs_unmarshall_recv() which properly
    validates that wqe_size >= sizeof(struct ib_uverbs_recv_wr) before
    proceeding.
    
    Add the same validation for ib_uverbs_post_send() to ensure wqe_size
    is at least sizeof(struct ib_uverbs_send_wr).
    
    Fixes: c3bea3d2dc53 ("RDMA/uverbs: Use the iterator for ib_uverbs_unmarshall_recv()")
    Signed-off-by: Yi Liu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regulator: core: move supply check earlier in set_machine_constraints() [+ + +]
Author: André Draszik <[email protected]>
Date:   Fri Jan 9 08:38:39 2026 +0000

    regulator: core: move supply check earlier in set_machine_constraints()
    
    [ Upstream commit 86a8eeb0e913f4b6a55dabba5122098d4e805e55 ]
    
    Since commit 98e48cd9283d ("regulator: core: resolve supply for
    boot-on/always-on regulators"), set_machine_constraints() can return
    -EPROBE_DEFER very late, after it has done a lot of work and
    configuration of the regulator.
    
    This means that configuration will happen multiple times for no
    benefit in that case. Furthermore, this can lead to timing-dependent
    voltage glitches as mentioned e.g. in commit 8a866d527ac0 ("regulator:
    core: Resolve supply name earlier to prevent double-init").
    
    We can know that it's going to fail very early, in particular before
    going through the complete regulator configuration by moving some code
    around a little.
    
    Do so to avoid re-configuring the regulator multiple times, also
    avoiding the voltage glitches if we can.
    
    Fixes: 98e48cd9283d ("regulator: core: resolve supply for boot-on/always-on regulators")
    Signed-off-by: André Draszik <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
remoteproc: imx_rproc: Fix invalid loaded resource table detection [+ + +]
Author: Peng Fan <[email protected]>
Date:   Thu Jan 29 09:44:48 2026 +0800

    remoteproc: imx_rproc: Fix invalid loaded resource table detection
    
    [ Upstream commit 26aa5295010ffaebcf8f1991c53fa7cf2ee1b20d ]
    
    imx_rproc_elf_find_loaded_rsc_table() may incorrectly report a loaded
    resource table even when the current firmware does not provide one.
    
    When the device tree contains a "rsc-table" entry, priv->rsc_table is
    non-NULL and denotes where a resource table would be located if one is
    present in memory. However, when the current firmware has no resource
    table, rproc->table_ptr is NULL. The function still returns
    priv->rsc_table, and the remoteproc core interprets this as a valid loaded
    resource table.
    
    Fix this by returning NULL from imx_rproc_elf_find_loaded_rsc_table() when
    there is no resource table for the current firmware (i.e. when
    rproc->table_ptr is NULL). This aligns the function's semantics with the
    remoteproc core: a loaded resource table is only reported when a valid
    table_ptr exists.
    
    With this change, starting firmware without a resource table no longer
    triggers a crash.
    
    Fixes: e954a1bd1610 ("remoteproc: imx_rproc: Use imx specific hook for find_loaded_rsc_table")
    Cc: [email protected]
    Signed-off-by: Peng Fan <[email protected]>
    Acked-by: Daniel Baluta <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mathieu Poirier <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

remoteproc: mediatek: Break lock dependency to `prepare_lock` [+ + +]
Author: Tzung-Bi Shih <[email protected]>
Date:   Mon Jan 12 11:07:55 2026 +0000

    remoteproc: mediatek: Break lock dependency to `prepare_lock`
    
    [ Upstream commit d935187cfb27fc4168f78f3959aef4eafaae76bb ]
    
    A potential circular locking dependency (ABBA deadlock) exists between
    `ec_dev->lock` and the clock framework's `prepare_lock`.
    
    The first order (A -> B) occurs when scp_ipi_send() is called while
    `ec_dev->lock` is held (e.g., within cros_ec_cmd_xfer()):
    1. cros_ec_cmd_xfer() acquires `ec_dev->lock` and calls scp_ipi_send().
    2. scp_ipi_send() calls clk_prepare_enable(), which acquires
       `prepare_lock`.
    See #0 in the following example calling trace.
    (Lock Order: `ec_dev->lock` -> `prepare_lock`)
    
    The reverse order (B -> A) is more complex and has been observed
    (learned) by lockdep.  It involves the clock prepare operation
    triggering power domain changes, which then propagates through sysfs
    and power supply uevents, eventually calling back into the ChromeOS EC
    driver and attempting to acquire `ec_dev->lock`:
    1. Something calls clk_prepare(), which acquires `prepare_lock`.  It
       then triggers genpd operations like genpd_runtime_resume(), which
       takes `&genpd->mlock`.
    2. Power domain changes can trigger regulator changes; regulator
       changes can then trigger device link changes; device link changes
       can then trigger sysfs changes.  Eventually, power_supply_uevent()
       is called.
    3. This leads to calls like cros_usbpd_charger_get_prop(), which calls
       cros_ec_cmd_xfer_status(), which then attempts to acquire
       `ec_dev->lock`.
    See #1 ~ #6 in the following example calling trace.
    (Lock Order: `prepare_lock` -> `&genpd->mlock` -> ... -> `&ec_dev->lock`)
    
    Move the clk_prepare()/clk_unprepare() operations for `scp->clk` to the
    remoteproc prepare()/unprepare() callbacks.  This ensures `prepare_lock`
    is only acquired in prepare()/unprepare() callbacks.  Since
    `ec_dev->lock` is not involved in the callbacks, the dependency loop is
    broken.
    
    This means the clock is always "prepared" when the SCP is running.  The
    prolonged "prepared time" for the clock should be acceptable as SCP is
    designed to be a very power efficient processor.  The power consumption
    impact can be negligible.
    
    A simplified calling trace reported by lockdep:
    > -> #6 (&ec_dev->lock)
    >        cros_ec_cmd_xfer
    >        cros_ec_cmd_xfer_status
    >        cros_usbpd_charger_get_port_status
    >        cros_usbpd_charger_get_prop
    >        power_supply_get_property
    >        power_supply_show_property
    >        power_supply_uevent
    >        dev_uevent
    >        uevent_show
    >        dev_attr_show
    >        sysfs_kf_seq_show
    >        kernfs_seq_show
    > -> #5 (kn->active#2)
    >        kernfs_drain
    >        __kernfs_remove
    >        kernfs_remove_by_name_ns
    >        sysfs_remove_file_ns
    >        device_del
    >        __device_link_del
    >        device_links_driver_bound
    > -> #4 (device_links_lock)
    >        device_link_remove
    >        _regulator_put
    >        regulator_put
    > -> #3 (regulator_list_mutex)
    >        regulator_lock_dependent
    >        regulator_disable
    >        scpsys_power_off
    >        _genpd_power_off
    >        genpd_power_off
    > -> #2 (&genpd->mlock/1)
    >        genpd_add_subdomain
    >        pm_genpd_add_subdomain
    >        scpsys_add_subdomain
    >        scpsys_probe
    > -> #1 (&genpd->mlock)
    >        genpd_runtime_resume
    >        __rpm_callback
    >        rpm_callback
    >        rpm_resume
    >        __pm_runtime_resume
    >        clk_core_prepare
    >        clk_prepare
    > -> #0 (prepare_lock)
    >        clk_prepare
    >        scp_ipi_send
    >        scp_send_ipi
    >        mtk_rpmsg_send
    >        rpmsg_send
    >        cros_ec_pkt_xfer_rpmsg
    
    Signed-off-by: Tzung-Bi Shih <[email protected]>
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Tested-by: Chen-Yu Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mathieu Poirier <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "mfd: da9052-spi: Change read-mask to write-mask" [+ + +]
Author: Marcus Folkesson <[email protected]>
Date:   Mon Nov 24 17:16:51 2025 +0100

    Revert "mfd: da9052-spi: Change read-mask to write-mask"
    
    [ Upstream commit 12daa9c1954542bf98bb942fb2dadf19de79a44b ]
    
    This reverts commit 2e3378f6c79a1b3f7855ded1ef306ea4406352ed.
    
    Almost every register in this chip can be customized via OTP
    memory. Somehow the value for R19, which decide if the flag is set
    on read or write operation, seems to have been overwritten for the chip
    the original patch were written for.
    
    Revert the change to follow the default behavior.
    
    Signed-off-by: Marcus Folkesson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms" [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Jan 21 15:49:31 2026 +0100

    Revert "mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms"
    
    [ Upstream commit ff112f1ecd10b72004eac05bae395e1c65f0c63c ]
    
    This reverts commit aced969e9bf3701dc75cfca57c78c031b7875b9d.
    
    It was determined that this was not the correct "fix", so should be
    reverted.
    
    Fixes: aced969e9bf3 ("mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms")
    Cc: Matthew Schwartz <[email protected]>
    Cc: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV" [+ + +]
Author: Niklas Schnelle <[email protected]>
Date:   Tue Dec 16 23:14:02 2025 +0100

    Revert "PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV"
    
    [ Upstream commit 2fa119c0e5e528453ebae9e70740e8d2d8c0ed5a ]
    
    This reverts commit 05703271c3cd ("PCI/IOV: Add PCI rescan-remove locking
    when enabling/disabling SR-IOV"), which causes a deadlock by recursively
    taking pci_rescan_remove_lock when sriov_del_vfs() is called as part of
    pci_stop_and_remove_bus_device(). For example with the following sequence
    of commands:
    
      $ echo <NUM> > /sys/bus/pci/devices/<pf>/sriov_numvfs
      $ echo 1 > /sys/bus/pci/devices/<pf>/remove
    
    A trimmed trace of the deadlock on a mlx5 device is as below:
    
      zsh/5715 is trying to acquire lock:
      000002597926ef50 (pci_rescan_remove_lock){+.+.}-{3:3}, at: sriov_disable+0x34/0x140
    
      but task is already holding lock:
      000002597926ef50 (pci_rescan_remove_lock){+.+.}-{3:3}, at: pci_stop_and_remove_bus_device_locked+0x24/0x80
      ...
      Call Trace:
       [<00000259778c4f90>] dump_stack_lvl+0xc0/0x110
       [<00000259779c844e>] print_deadlock_bug+0x31e/0x330
       [<00000259779c1908>] __lock_acquire+0x16c8/0x32f0
       [<00000259779bffac>] lock_acquire+0x14c/0x350
       [<00000259789643a6>] __mutex_lock_common+0xe6/0x1520
       [<000002597896413c>] mutex_lock_nested+0x3c/0x50
       [<00000259784a07e4>] sriov_disable+0x34/0x140
       [<00000258f7d6dd80>] mlx5_sriov_disable+0x50/0x80 [mlx5_core]
       [<00000258f7d5745e>] remove_one+0x5e/0xf0 [mlx5_core]
       [<00000259784857fc>] pci_device_remove+0x3c/0xa0
       [<000002597851012e>] device_release_driver_internal+0x18e/0x280
       [<000002597847ae22>] pci_stop_bus_device+0x82/0xa0
       [<000002597847afce>] pci_stop_and_remove_bus_device_locked+0x5e/0x80
       [<00000259784972c2>] remove_store+0x72/0x90
       [<0000025977e6661a>] kernfs_fop_write_iter+0x15a/0x200
       [<0000025977d7241c>] vfs_write+0x24c/0x300
       [<0000025977d72696>] ksys_write+0x86/0x110
       [<000002597895b61c>] __do_syscall+0x14c/0x400
       [<000002597896e0ee>] system_call+0x6e/0x90
    
    This alone is not a complete fix as it restores the issue the cited commit
    tried to solve. A new fix will be provided as a follow on.
    
    Fixes: 05703271c3cd ("PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV")
    Reported-by: Benjamin Block <[email protected]>
    Signed-off-by: Niklas Schnelle <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Benjamin Block <[email protected]>
    Acked-by: Gerd Bayer <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
rnbd-srv: Zero the rsp buffer before using it [+ + +]
Author: Md Haris Iqbal <[email protected]>
Date:   Fri Dec 5 13:47:33 2025 +0100

    rnbd-srv: Zero the rsp buffer before using it
    
    [ Upstream commit 69d26698e4fd44935510553809007151b2fe4db5 ]
    
    Before using the data buffer to send back the response message, zero it
    completely. This prevents any stray bytes to be picked up by the client
    side when there the message is exchanged between different protocol
    versions.
    
    Signed-off-by: Md Haris Iqbal <[email protected]>
    Signed-off-by: Jack Wang <[email protected]>
    Signed-off-by: Grzegorz Prajsner <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rpmsg: core: fix race in driver_override_show() and use core helper [+ + +]
Author: Gui-Dong Han <[email protected]>
Date:   Wed Dec 3 01:49:48 2025 +0800

    rpmsg: core: fix race in driver_override_show() and use core helper
    
    [ Upstream commit 42023d4b6d2661a40ee2dcf7e1a3528a35c638ca ]
    
    The driver_override_show function reads the driver_override string
    without holding the device_lock. However, the store function modifies
    and frees the string while holding the device_lock. This creates a race
    condition where the string can be freed by the store function while
    being read by the show function, leading to a use-after-free.
    
    To fix this, replace the rpmsg_string_attr macro with explicit show and
    store functions. The new driver_override_store uses the standard
    driver_set_override helper. Since the introduction of
    driver_set_override, the comments in include/linux/rpmsg.h have stated
    that this helper must be used to set or clear driver_override, but the
    implementation was not updated until now.
    
    Because driver_set_override modifies and frees the string while holding
    the device_lock, the new driver_override_show now correctly holds the
    device_lock during the read operation to prevent the race.
    
    Additionally, since rpmsg_string_attr has only ever been used for
    driver_override, removing the macro simplifies the code.
    
    Fixes: 39e47767ec9b ("rpmsg: Add driver_override device attribute for rpmsg_device")
    Cc: [email protected]
    Signed-off-by: Gui-Dong Han <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mathieu Poirier <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rtc: interface: Alarm race handling should not discard preceding error [+ + +]
Author: Anthony Pighin (Nokia) <[email protected]>
Date:   Tue Nov 25 17:35:19 2025 +0000

    rtc: interface: Alarm race handling should not discard preceding error
    
    [ Upstream commit 81be22cd4ace020045cc6d31255c6f7c071eb7c0 ]
    
    Commit 795cda8338ea ("rtc: interface: Fix long-standing race when setting
    alarm") should not discard any errors from the preceding validations.
    
    Prior to that commit, if the alarm feature was disabled, or the
    set_alarm failed, a meaningful error code would be returned to the
    caller for further action.
    
    After, more often than not, the __rtc_read_time will cause a success
    return code instead, misleading the caller.
    
    An example of this is when timer_enqueue is called for a rtc-abx080x
    device. Since that driver does not clear the alarm feature bit, but
    instead relies on the set_alarm operation to return invalid, the discard
    of the return code causes very different behaviour; i.e.
        hwclock: select() to /dev/rtc0 to wait for clock tick timed out
    
    Fixes: 795cda8338ea ("rtc: interface: Fix long-standing race when setting alarm")
    Signed-off-by: Anthony Pighin (Nokia) <[email protected]>
    Reviewed-by: Esben Haabendal <[email protected]>
    Tested-by: Nick Bowler <[email protected]>
    Link: https://patch.msgid.link/BN0PR08MB6951415A751F236375A2945683D1A@BN0PR08MB6951.namprd08.prod.outlook.com
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/cio: Fix device lifecycle handling in css_alloc_subchannel() [+ + +]
Author: Salah Triki <[email protected]>
Date:   Fri Jan 30 21:47:59 2026 +0100

    s390/cio: Fix device lifecycle handling in css_alloc_subchannel()
    
    [ Upstream commit f65c75b0b9b5a390bc3beadcde0a6fbc3ad118f7 ]
    
    `css_alloc_subchannel()` calls `device_initialize()` before setting up
    the DMA masks. If `dma_set_coherent_mask()` or `dma_set_mask()` fails,
    the error path frees the subchannel structure directly, bypassing
    the device model reference counting.
    
    Once `device_initialize()` has been called, the embedded struct device
    must be released via `put_device()`, allowing the release callback to
    free the container structure.
    
    Fix the error path by dropping the initial device reference with
    `put_device()` instead of calling `kfree()` directly.
    
    This ensures correct device lifetime handling and avoids potential
    use-after-free or double-free issues.
    
    Fixes: e5dcf0025d7af ("s390/css: move subchannel lock allocation")
    Signed-off-by: Salah Triki <[email protected]>
    Reviewed-by: Vineeth Vijayan <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/pci: Handle futile config accesses of disabled devices directly [+ + +]
Author: Niklas Schnelle <[email protected]>
Date:   Thu Jan 8 16:45:53 2026 +0100

    s390/pci: Handle futile config accesses of disabled devices directly
    
    [ Upstream commit 84d875e69818bed600edccb09be4a64b84a34a54 ]
    
    On s390 PCI busses and slots with multiple functions may have holes
    because PCI functions are passed-through by the hypervisor on a per
    function basis and some functions may be in standby or reserved. This
    fact is indicated by returning true from the
    hypervisor_isolated_pci_functions() helper and triggers common code to
    scan all possible devfn values. Via pci_scan_single_device() this in
    turn causes config reads for the device and vendor IDs, even for PCI
    functions which are in standby and thereofore disabled.
    
    So far these futile config reads, as well as potentially writes, which
    can never succeed were handled by the PCI load/store instructions
    themselves. This works as the platform just returns an error for
    a disabled and thus not usable function handle. It does cause spamming
    of error logs and additional overhead though.
    
    Instead check if the used function handle is enabled in zpci_cfg_load()
    and zpci_cfg_write() and if not enable directly return -ENODEV. Also
    refactor zpci_cfg_load() and zpci_cfg_store() slightly to accommodate
    the new logic while meeting modern kernel style guidelines.
    
    Cc: [email protected]
    Fixes: a50297cf8235 ("s390/pci: separate zbus creation from scanning")
    Signed-off-by: Niklas Schnelle <[email protected]>
    Reviewed-by: Benjamin Block <[email protected]>
    Reviewed-by: Farhan Ali <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/perf: Disable register readout on sampling events [+ + +]
Author: Thomas Richter <[email protected]>
Date:   Fri Jan 23 10:14:12 2026 +0100

    s390/perf: Disable register readout on sampling events
    
    [ Upstream commit b2c04fc1239062b39ddfdd8731ee1a10810dfb74 ]
    
    Running commands
     # ./perf record  -IR0,R1 -a sleep 1
    extracts and displays register value of general purpose register r1 and r0.
    However the value displayed of any register is random and does not
    reflect the register value recorded at the time of the sample interrupt.
    
    The sampling device driver on s390 creates a very large buffer
    for the hardware to store the samples. Only when that large buffer
    gets full an interrupt is generated and many hundreds of sample
    entries are processed and copied to the kernel ring buffer and
    eventually get copied to the perf tool. It is during the copy
    to the kernel ring buffer that each sample is processed (on s390)
    and at that time the register values are extracted.
    This is not the original goal, the register values should be read
    when the samples are created not when the samples are copied to the
    kernel ring buffer.
    
    Prevent this event from being installed in the first place and
    return -EOPNOTSUPP. This is already the case for PERF_SAMPLE_REGS_USER.
    
    Signed-off-by: Thomas Richter <[email protected]>
    Reviewed-by: Jan Polensky <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/purgatory: Add -Wno-default-const-init-unsafe to KBUILD_CFLAGS [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Fri Dec 12 16:47:07 2025 +0100

    s390/purgatory: Add -Wno-default-const-init-unsafe to KBUILD_CFLAGS
    
    [ Upstream commit b4780fe4ddf04b51127a33d705f4a2e224df00fa ]
    
    Add -Wno-default-const-init-unsafe to purgatory KBUILD_CFLAGS, similar
    to scripts/Makefile.extrawarn, since clang generates warnings for the
    dummy variable in typecheck():
    
        CC      arch/s390/purgatory/purgatory.o
          arch/s390/include/asm/ptrace.h:221:9: warning: default initialization of an object of type 'typeof (regs->psw)' (aka 'const psw_t') leaves the object uninitialized [-Wdefault-const-init-var-unsafe]
            221 |         return psw_bits(regs->psw).pstate;
                |                ^
          arch/s390/include/asm/ptrace.h:98:2: note: expanded from macro 'psw_bits'
             98 |         typecheck(psw_t, __psw);                \
                |         ^
          include/linux/typecheck.h:11:12: note: expanded from macro 'typecheck'
             11 |         typeof(x) __dummy2; \
                |                   ^
    
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sched/rt: Skip currently executing CPU in rto_next_cpu() [+ + +]
Author: Chen Jinghuang <[email protected]>
Date:   Thu Jan 22 01:25:33 2026 +0000

    sched/rt: Skip currently executing CPU in rto_next_cpu()
    
    [ Upstream commit 94894c9c477e53bcea052e075c53f89df3d2a33e ]
    
    CPU0 becomes overloaded when hosting a CPU-bound RT task, a non-CPU-bound
    RT task, and a CFS task stuck in kernel space. When other CPUs switch from
    RT to non-RT tasks, RT load balancing (LB) is triggered; with
    HAVE_RT_PUSH_IPI enabled, they send IPIs to CPU0 to drive the execution
    of rto_push_irq_work_func. During push_rt_task on CPU0,
    if next_task->prio < rq->donor->prio, resched_curr() sets NEED_RESCHED
    and after the push operation completes, CPU0 calls rto_next_cpu().
    Since only CPU0 is overloaded in this scenario, rto_next_cpu() should
    ideally return -1 (no further IPI needed).
    
    However, multiple CPUs invoking tell_cpu_to_push() during LB increments
    rd->rto_loop_next. Even when rd->rto_cpu is set to -1, the mismatch between
    rd->rto_loop and rd->rto_loop_next forces rto_next_cpu() to restart its
    search from -1. With CPU0 remaining overloaded (satisfying rt_nr_migratory
    && rt_nr_total > 1), it gets reselected, causing CPU0 to queue irq_work to
    itself and send self-IPIs repeatedly. As long as CPU0 stays overloaded and
    other CPUs run pull_rt_tasks(), it falls into an infinite self-IPI loop,
    which triggers a CPU hardlockup due to continuous self-interrupts.
    
    The trigging scenario is as follows:
    
             cpu0                      cpu1                    cpu2
                                    pull_rt_task
                                  tell_cpu_to_push
                     <------------irq_work_queue_on
    rto_push_irq_work_func
           push_rt_task
        resched_curr(rq)                                   pull_rt_task
        rto_next_cpu                                     tell_cpu_to_push
                          <-------------------------- atomic_inc(rto_loop_next)
    rd->rto_loop != next
         rto_next_cpu
       irq_work_queue_on
    rto_push_irq_work_func
    
    Fix redundant self-IPI by filtering the initiating CPU in rto_next_cpu().
    This solution has been verified to effectively eliminate spurious self-IPIs
    and prevent CPU hardlockup scenarios.
    
    Fixes: 4bdced5c9a29 ("sched/rt: Simplify the IPI based RT balancing logic")
    Suggested-by: Steven Rostedt (Google) <[email protected]>
    Suggested-by: K Prateek Nayak <[email protected]>
    Signed-off-by: Chen Jinghuang <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Steven Rostedt (Google) <[email protected]>
    Reviewed-by: Valentin Schneider <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: buslogic: Reduce stack usage [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Feb 3 17:33:15 2026 +0100

    scsi: buslogic: Reduce stack usage
    
    [ Upstream commit e17f0d4cc006265dd92129db4bf9da3a2e4a4f66 ]
    
    Some randconfig builds run into excessive stack usage with gcc-14 or
    higher, which use __attribute__((cold)) where earlier versions did not do
    that:
    
    drivers/scsi/BusLogic.c: In function 'blogic_init':
    drivers/scsi/BusLogic.c:2398:1: error: the frame size of 1680 bytes is larger than 1536 bytes [-Werror=frame-larger-than=]
    
    The problem is that a lot of code gets inlined into blogic_init() here. Two
    functions stick out, but they are a bit different:
    
     - blogic_init_probeinfo_list() actually uses a few hundred bytes of kernel
       stack, which is a problem in combination with other functions that also
       do. Marking this one as noinline means that the stack slots get get
       reused between function calls
    
     - blogic_reportconfig() has a few large variables, but whenever it is not
       inlined into its caller, the compiler is actually smart enough to reuse
       stack slots for these automatically, so marking it as noinline saves
       most of the stack space by itself.
    
    The combination of both of these should avoid the problem entirely.
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: csiostor: Fix dereference of null pointer rn [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Thu Jan 29 15:53:32 2026 +0000

    scsi: csiostor: Fix dereference of null pointer rn
    
    [ Upstream commit 1982257570b84dc33753d536dd969fd357a014e9 ]
    
    The error exit path when rn is NULL ends up deferencing the null pointer rn
    via the use of the macro CSIO_INC_STATS. Fix this by adding a new error
    return path label after the use of the macro to avoid the deference.
    
    Fixes: a3667aaed569 ("[SCSI] csiostor: Chelsio FCoE offload driver")
    Signed-off-by: Colin Ian King <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: efct: Use IRQF_ONESHOT and default primary handler [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Wed Jan 28 10:55:27 2026 +0100

    scsi: efct: Use IRQF_ONESHOT and default primary handler
    
    [ Upstream commit bd81f07e9a27c341cd7e72be95eb0b7cf3910926 ]
    
    There is no added value in efct_intr_msix() compared to
    irq_default_primary_handler().
    
    Using a threaded interrupt without a dedicated primary handler mandates
    the IRQF_ONESHOT flag to mask the interrupt source while the threaded
    handler is active. Otherwise the interrupt can fire again before the
    threaded handler had a chance to run.
    
    Use the default primary interrupt handler by specifying NULL and set
    IRQF_ONESHOT so the interrupt source is masked until the secondary
    handler is done.
    
    Fixes: 4df84e8466242 ("scsi: elx: efct: Driver initialization routines")
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

scsi: ufs: core: Flush exception handling work when RPM level is zero [+ + +]
Author: Thomas Yen <[email protected]>
Date:   Fri Jan 30 00:51:51 2026 +0800

    scsi: ufs: core: Flush exception handling work when RPM level is zero
    
    [ Upstream commit f8ef441811ec413717f188f63d99182f30f0f08e ]
    
    Ensure that the exception event handling work is explicitly flushed during
    suspend when the runtime power management level is set to UFS_PM_LVL_0.
    
    When the RPM level is zero, the device power mode and link state both
    remain active. Previously, the UFS core driver bypassed flushing exception
    event handling jobs in this configuration. This created a race condition
    where the driver could attempt to access the host controller to handle an
    exception after the system had already entered a deep power-down state,
    resulting in a system crash.
    
    Explicitly flush this work and disable auto BKOPs before the suspend
    callback proceeds. This guarantees that pending exception tasks complete
    and prevents illegal hardware access during the power-down sequence.
    
    Fixes: 57d104c153d3 ("ufs: add UFS power management support")
    Signed-off-by: Thomas Yen <[email protected]>
    Cc: Stable Tree <[email protected]>
    Reviewed-by: Peter Wang <[email protected]>
    Reviewed-by: Bart Van Assche <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/mm/charge_reserved_hugetlb: drop mount size for hugetlbfs [+ + +]
Author: Li Wang <[email protected]>
Date:   Sun Dec 21 20:26:38 2025 +0800

    selftests/mm/charge_reserved_hugetlb: drop mount size for hugetlbfs
    
    [ Upstream commit 1aa1dd9cc595917882fb6db67725442956f79607 ]
    
    charge_reserved_hugetlb.sh mounts a hugetlbfs instance at /mnt/huge with a
    fixed size of 256M.  On systems with large base hugepages (e.g.  512MB),
    this is smaller than a single hugepage, so the hugetlbfs mount ends up
    with zero capacity (often visible as size=0 in mount output).
    
    As a result, write_to_hugetlbfs fails with ENOMEM and the test can hang
    waiting for progress.
    
    === Error log ===
      # uname -r
      6.12.0-xxx.el10.aarch64+64k
    
      #./charge_reserved_hugetlb.sh -cgroup-v2
      # -----------------------------------------
      ...
      # nr hugepages = 10
      # writing cgroup limit: 5368709120
      # writing reseravation limit: 5368709120
      ...
      # write_to_hugetlbfs: Error mapping the file: Cannot allocate memory
      # Waiting for hugetlb memory reservation to reach size 2684354560.
      # 0
      # Waiting for hugetlb memory reservation to reach size 2684354560.
      # 0
      ...
    
      # mount |grep /mnt/huge
      none on /mnt/huge type hugetlbfs (rw,relatime,seclabel,pagesize=512M,size=0)
    
      # grep -i huge /proc/meminfo
      ...
      HugePages_Total:      10
      HugePages_Free:       10
      HugePages_Rsvd:        0
      HugePages_Surp:        0
      Hugepagesize:     524288 kB
      Hugetlb:         5242880 kB
    
    Drop the mount args with 'size=256M', so the filesystem capacity is sufficient
    regardless of HugeTLB page size.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 29750f71a9b4 ("hugetlb_cgroup: add hugetlb_cgroup reservation tests")
    Signed-off-by: Li Wang <[email protected]>
    Acked-by: David Hildenbrand (Red Hat) <[email protected]>
    Acked-by: Waiman Long <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Shuah Khan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: forwarding: vxlan_bridge_1d: fix test failure with br_netfilter enabled [+ + +]
Author: Aleksei Oladko <[email protected]>
Date:   Fri Feb 13 13:19:05 2026 +0000

    selftests: forwarding: vxlan_bridge_1d: fix test failure with br_netfilter enabled
    
    [ Upstream commit 02cb2e6bacbb08ebf6acb61be816efd11e1f4a21 ]
    
    The test generates VXLAN traffic using mausezahn, where the encapsulated
    inner IPv4 packet contains a zero IP header checksum. After VXLAN
    decapsulation, such packets do not pass sanity checks in br_netfilter
    and are dropped, which causes the test to fail.
    
    Fix this by calculating and setting a valid IPv4 header checksum for the
    encapsulated packet generated by mausezahn, so that the packet is accepted
    by br_netfilter. Fixed by using the payload_template_calc_checksum() /
    payload_template_expand_checksum() helpers that are only available
    in v6.3 and newer kernels.
    
    Fixes: a0b61f3d8ebf ("selftests: forwarding: vxlan_bridge_1d: Add an ECN decap test")
    Signed-off-by: Aleksei Oladko <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests: mlxsw: tc_restrictions: Fix test failure with new iproute2 [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Mon Feb 9 14:53:53 2026 +0100

    selftests: mlxsw: tc_restrictions: Fix test failure with new iproute2
    
    [ Upstream commit a2646773a005b59fd1dc7ff3ba15df84889ca5d2 ]
    
    As explained in [1], iproute2 started rejecting tc-police burst sizes
    that result in an overflow. This can happen when the burst size is high
    enough and the rate is low enough.
    
    A couple of test cases specify such configurations, resulting in
    iproute2 errors and test failure.
    
    Fix by reducing the burst size so that the test will pass with both new
    and old iproute2 versions.
    
    [1] https://lore.kernel.org/netdev/[email protected]/
    
    Fixes: cb12d1763267 ("selftests: mlxsw: tc_restrictions: Test tc-police restrictions")
    Signed-off-by: Ido Schimmel <[email protected]>
    Signed-off-by: Petr Machata <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/88b00c6e85188aa6a065dc240206119b328c46e1.1770643998.git.petrm@nvidia.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: 8250: 8250_omap.c: Clear DMA RX running status only after DMA termination is done [+ + +]
Author: Moteen Shah <[email protected]>
Date:   Mon Jan 12 13:48:29 2026 +0530

    serial: 8250: 8250_omap.c: Clear DMA RX running status only after DMA termination is done
    
    [ Upstream commit a5fd8945a478ff9be14812693891d7c9b4185a50 ]
    
    Clear rx_running flag only after DMA teardown polling completes. In the
    previous implementation the flag was being cleared while hardware teardown
    was still in progress, creating a mismatch between software state
    (flag = 0, "ready") and hardware state (still terminating).
    
    Signed-off-by: Moteen Shah <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: 8250_dw: handle clock enable errors in runtime_resume [+ + +]
Author: Artem Shimko <[email protected]>
Date:   Tue Nov 4 17:54:25 2025 +0300

    serial: 8250_dw: handle clock enable errors in runtime_resume
    
    [ Upstream commit d31228143a489ba6ba797896a07541ce06828c09 ]
    
    Add error checking for clk_prepare_enable() calls in
    dw8250_runtime_resume(). Currently if either clock fails to enable,
    the function returns success while leaving clocks in inconsistent state.
    
    This change implements comprehensive error handling by checking the return
    values of both clk_prepare_enable() calls. If the second clock enable
    operation fails after the first clock has already been successfully
    enabled, the code now properly cleans up by disabling and unpreparing
    the first clock before returning. The error code is then propagated to
    the caller, ensuring that clock enable failures are properly reported
    rather than being silently ignored.
    
    Signed-off-by: Artem Shimko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: caif: fix use-after-free in caif_serial ldisc_close() [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Fri Feb 6 15:44:44 2026 +0800

    serial: caif: fix use-after-free in caif_serial ldisc_close()
    
    [ Upstream commit 308e7e4d0a846359685f40aade023aee7b27284c ]
    
    There is a use-after-free bug in caif_serial where handle_tx() may
    access ser->tty after the tty has been freed.
    
    The race condition occurs between ldisc_close() and packet transmission:
    
        CPU 0 (close)                     CPU 1 (xmit)
        -------------                     ------------
        ldisc_close()
          tty_kref_put(ser->tty)
          [tty may be freed here]
                         <-- race window -->
                                          caif_xmit()
                                            handle_tx()
                                              tty = ser->tty  // dangling ptr
                                              tty->ops->write() // UAF!
          schedule_work()
            ser_release()
              unregister_netdevice()
    
    The root cause is that tty_kref_put() is called in ldisc_close() while
    the network device is still active and can receive packets.
    
    Since ser and tty have a 1:1 binding relationship with consistent
    lifecycles (ser is allocated in ldisc_open and freed in ser_release
    via unregister_netdevice, and each ser binds exactly one tty), we can
    safely defer the tty reference release to ser_release() where the
    network device is unregistered.
    
    Fix this by moving tty_kref_put() from ldisc_close() to ser_release(),
    after unregister_netdevice(). This ensures the tty reference is held
    as long as the network device exists, preventing the UAF.
    
    Note: We save ser->tty before unregister_netdevice() because ser is
    embedded in netdev's private data and will be freed along with netdev
    (needs_free_netdev = true).
    
    How to reproduce: Add mdelay(500) at the beginning of ldisc_close()
    to widen the race window, then run the reproducer program [1].
    
    Note: There is a separate deadloop issue in handle_tx() when using
    PORT_UNKNOWN serial ports (e.g., /dev/ttyS3 in QEMU without proper
    serial backend). This deadloop exists even without this patch,
    and is likely caused by inconsistency between uart_write_room() and
    uart_write() in serial core. It has been addressed in a separate
    patch [2].
    
    KASAN report:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in handle_tx+0x5d1/0x620
    Read of size 1 at addr ffff8881131e1490 by task caif_uaf_trigge/9929
    
    Call Trace:
     <TASK>
     dump_stack_lvl+0x10e/0x1f0
     print_report+0xd0/0x630
     kasan_report+0xe4/0x120
     handle_tx+0x5d1/0x620
     dev_hard_start_xmit+0x9d/0x6c0
     __dev_queue_xmit+0x6e2/0x4410
     packet_xmit+0x243/0x360
     packet_sendmsg+0x26cf/0x5500
     __sys_sendto+0x4a3/0x520
     __x64_sys_sendto+0xe0/0x1c0
     do_syscall_64+0xc9/0xf80
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f615df2c0d7
    
    Allocated by task 9930:
    
    Freed by task 64:
    
    Last potentially related work creation:
    
    The buggy address belongs to the object at ffff8881131e1000
     which belongs to the cache kmalloc-cg-2k of size 2048
    The buggy address is located 1168 bytes inside of
     freed 2048-byte region [ffff8881131e1000, ffff8881131e1800)
    
    The buggy address belongs to the physical page:
    page_owner tracks the page as allocated
    page last free pid 9778 tgid 9778 stack trace:
    
    Memory state around the buggy address:
     ffff8881131e1380: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8881131e1400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff8881131e1480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                             ^
     ffff8881131e1500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8881131e1580: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    [1]: https://gist.github.com/mrpre/f683f244544f7b11e7fa87df9e6c2eeb
    [2]: https://lore.kernel.org/linux-serial/[email protected]/T/#u
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Fixes: 56e0ef527b18 ("drivers/net: caif: fix wrong rtnl_is_locked() usage")
    Reviewed-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Jiayuan Chen <[email protected]>
    Reviewed-by: Jijie Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: imx: change SERIAL_IMX_CONSOLE to bool [+ + +]
Author: Randy Dunlap <[email protected]>
Date:   Sat Jan 10 15:26:40 2026 -0800

    serial: imx: change SERIAL_IMX_CONSOLE to bool
    
    [ Upstream commit 79527d86ba91c2d9354832d19fd12b3baa66bd10 ]
    
    SERIAL_IMX_CONSOLE is a build option for the imx driver (SERIAL_IMX).
    It does not build a separate console driver file, so it can't be built
    as a module since it isn't built at all.
    
    Change the Kconfig symbol from tristate to bool and update the help
    text accordingly.
    
    Fixes: 0db4f9b91c86 ("tty: serial: imx: enable imx serial console port as module")
    Signed-off-by: Randy Dunlap <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: SH_SCI: improve "DMA support" prompt [+ + +]
Author: Randy Dunlap <[email protected]>
Date:   Sat Jan 10 15:26:43 2026 -0800

    serial: SH_SCI: improve "DMA support" prompt
    
    [ Upstream commit 93bb95a11238d66a4c9aa6eabf9774b073a5895c ]
    
    Having a prompt of "DMA support" suddenly appear during a
    "make oldconfig" can be confusing. Add a little helpful text to
    the prompt message.
    
    Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.")
    Signed-off-by: Randy Dunlap <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smack: /smack/doi must be > 0 [+ + +]
Author: Konstantin Andreev <[email protected]>
Date:   Tue Sep 30 15:16:02 2025 +0300

    smack: /smack/doi must be > 0
    
    [ Upstream commit 19c013e1551bf51e1493da1270841d60e4fd3f15 ]
    
    /smack/doi allows writing and keeping negative doi values.
    Correct values are 0 < doi <= (max 32-bit positive integer)
    
    (2008-02-04, Casey Schaufler)
    Fixes: e114e473771c ("Smack: Simplified Mandatory Access Control Kernel")
    
    Signed-off-by: Konstantin Andreev <[email protected]>
    Signed-off-by: Casey Schaufler <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

smack: /smack/doi: accept previously used values [+ + +]
Author: Konstantin Andreev <[email protected]>
Date:   Tue Sep 30 15:31:53 2025 +0300

    smack: /smack/doi: accept previously used values
    
    [ Upstream commit 33d589ed60ae433b483761987b85e0d24e54584e ]
    
    Writing to /smack/doi a value that has ever been
    written there in the past disables networking for
    non-ambient labels.
    E.g.
    
        # cat /smack/doi
        3
        # netlabelctl -p cipso list
        Configured CIPSO mappings (1)
         DOI value : 3
           mapping type : PASS_THROUGH
        # netlabelctl -p map list
        Configured NetLabel domain mappings (3)
         domain: "_" (IPv4)
           protocol: UNLABELED
         domain: DEFAULT (IPv4)
           protocol: CIPSO, DOI = 3
         domain: DEFAULT (IPv6)
           protocol: UNLABELED
    
        # cat /smack/ambient
        _
        # cat /proc/$$/attr/smack/current
        _
        # ping -c1 10.1.95.12
        64 bytes from 10.1.95.12: icmp_seq=1 ttl=64 time=0.964 ms
        # echo foo >/proc/$$/attr/smack/current
        # ping -c1 10.1.95.12
        64 bytes from 10.1.95.12: icmp_seq=1 ttl=64 time=0.956 ms
        unknown option 86
    
        # echo 4 >/smack/doi
        # echo 3 >/smack/doi
    !>  [  214.050395] smk_cipso_doi:691 cipso add rc = -17
        # echo 3 >/smack/doi
    !>  [  249.402261] smk_cipso_doi:678 remove rc = -2
    !>  [  249.402261] smk_cipso_doi:691 cipso add rc = -17
    
        # ping -c1 10.1.95.12
    !!> ping: 10.1.95.12: Address family for hostname not supported
    
        # echo _ >/proc/$$/attr/smack/current
        # ping -c1 10.1.95.12
        64 bytes from 10.1.95.12: icmp_seq=1 ttl=64 time=0.617 ms
    
    This happens because Smack keeps decommissioned DOIs,
    fails to re-add them, and consequently refuses to add
    the “default” domain map:
    
        # netlabelctl -p cipso list
        Configured CIPSO mappings (2)
         DOI value : 3
           mapping type : PASS_THROUGH
         DOI value : 4
           mapping type : PASS_THROUGH
        # netlabelctl -p map list
        Configured NetLabel domain mappings (2)
         domain: "_" (IPv4)
           protocol: UNLABELED
    !>  (no ipv4 map for default domain here)
         domain: DEFAULT (IPv6)
           protocol: UNLABELED
    
    Fix by clearing decommissioned DOI definitions and
    serializing concurrent DOI updates with a new lock.
    
    Also:
    - allow /smack/doi to live unconfigured, since
      adding a map (netlbl_cfg_cipsov4_map_add) may fail.
      CIPSO_V4_DOI_UNKNOWN(0) indicates the unconfigured DOI
    - add new DOI before removing the old default map,
      so the old map remains if the add fails
    
    (2008-02-04, Casey Schaufler)
    Fixes: e114e473771c ("Smack: Simplified Mandatory Access Control Kernel")
    
    Signed-off-by: Konstantin Andreev <[email protected]>
    Signed-off-by: Casey Schaufler <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
soc: qcom: cmd-db: Use devm_memremap() to fix memory leak in cmd_db_dev_probe [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Tue Dec 16 09:39:32 2025 +0800

    soc: qcom: cmd-db: Use devm_memremap() to fix memory leak in cmd_db_dev_probe
    
    [ Upstream commit 0da7824734d8d83e6a844dd0207f071cb0c50cf4 ]
    
    If cmd_db_magic_matches() fails after memremap() succeeds, the function
    returns -EINVAL without unmapping the memory region, causing a
    potential resource leak.
    
    Switch to devm_memremap to automatically manage the map resource.
    
    Fixes: 312416d9171a ("drivers: qcom: add command DB driver")
    Suggested-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Haotian Zhang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: ti: k3-socinfo: Fix regmap leak on probe failure [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Thu Nov 27 14:49:42 2025 +0100

    soc: ti: k3-socinfo: Fix regmap leak on probe failure
    
    [ Upstream commit c933138d45176780fabbbe7da263e04d5b3e525d ]
    
    The mmio regmap allocated during probe is never freed.
    
    Switch to using the device managed allocator so that the regmap is
    released on probe failures (e.g. probe deferral) and on driver unbind.
    
    Fixes: a5caf03188e4 ("soc: ti: k3-socinfo: Do not use syscon helper to build regmap")
    Cc: [email protected]      # 6.15
    Cc: Andrew Davis <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Acked-by: Andrew Davis <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Nishanth Menon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: ti: pruss: Fix double free in pruss_clk_mux_setup() [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Tue Jan 13 01:47:16 2026 +0000

    soc: ti: pruss: Fix double free in pruss_clk_mux_setup()
    
    [ Upstream commit 80db65d4acfb9ff12d00172aed39ea8b98261aad ]
    
    In the pruss_clk_mux_setup(), the devm_add_action_or_reset() indirectly
    calls pruss_of_free_clk_provider(), which calls of_node_put(clk_mux_np)
    on the error path. However, after the devm_add_action_or_reset()
    returns, the of_node_put(clk_mux_np) is called again, causing a double
    free.
    
    Fix by returning directly, to avoid the duplicate of_node_put().
    
    Fixes: ba59c9b43c86 ("soc: ti: pruss: support CORECLK_MUX and IEPCLK_MUX")
    Cc: [email protected]
    Signed-off-by: Wentao Liang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Nishanth Menon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sparc: don't reference obsolete termio struct for TC* constants [+ + +]
Author: Sam James <[email protected]>
Date:   Wed Feb 4 13:40:29 2026 +0000

    sparc: don't reference obsolete termio struct for TC* constants
    
    [ Upstream commit be0bccffcde3308150d2a90e55fc10e249098909 ]
    
    Similar in nature to commit ab107276607a ("powerpc: Fix struct termio related ioctl macros").
    
    glibc-2.42 drops the legacy termio struct, but the ioctls.h header still
    defines some TC* constants in terms of termio (via sizeof). Hardcode the
    values instead.
    
    This fixes building Python for example, which falls over like:
      ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
    
    Link: https://bugs.gentoo.org/961769
    Link: https://bugs.gentoo.org/962600
    Signed-off-by: Sam James <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: Synchronize user stack on fork and clone [+ + +]
Author: Andreas Larsson <[email protected]>
Date:   Mon Jan 19 15:47:52 2026 +0100

    sparc: Synchronize user stack on fork and clone
    
    [ Upstream commit e38eba3b77878ada327a572a41596a3b0b44e522 ]
    
    Flush all uncommitted user windows before calling the generic syscall
    handlers for clone, fork, and vfork.
    
    Prior to entering the arch common handlers sparc_{clone|fork|vfork}, the
    arch-specific syscall wrappers for these syscalls will attempt to flush
    all windows (including user windows).
    
    In the window overflow trap handlers on both SPARC{32|64},
    if the window can't be stored (i.e due to MMU related faults) the routine
    backups the user window and increments a thread counter (wsaved).
    
    By adding a synchronization point after the flush attempt, when fault
    handling is enabled, any uncommitted user windows will be flushed.
    
    Link: https://sourceware.org/bugzilla/show_bug.cgi?id=31394
    Closes: https://lore.kernel.org/sparclinux/fe5cc47167430007560501aabb28ba154985b661.camel@physik.fu-berlin.de/
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Ludwig Rydberg <[email protected]>
    Tested-by: John Paul Adrian Glaubitz <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: spi-mem: Protect dirmap_create() with spi_mem_access_start/end [+ + +]
Author: Chin-Ting Kuo <[email protected]>
Date:   Tue Jan 20 20:30:04 2026 +0800

    spi: spi-mem: Protect dirmap_create() with spi_mem_access_start/end
    
    [ Upstream commit 53f826ff5e0e3ecb279862ca7cce1491b94bb017 ]
    
    spi_mem_dirmap_create() may reconfigure controller-wide settings,
    which can interfere with concurrent transfers to other devices
    sharing the same SPI controller but using different chip selects.
    
    Wrap the ->dirmap_create() callback with spi_mem_access_start() and
    spi_mem_access_end() to serialize access and prevent cross-CS
    interference during dirmap creation.
    
    This patch has been verified on a setup where a SPI TPM is connected
    to CS0 of a SPI controller, while a SPI NOR flash is connected to CS1
    of the same controller. Without this patch, spi_mem_dirmap_create()
    for the SPI NOR flash interferes with ongoing SPI TPM data transfers,
    resulting in failure to create the TPM device. This was tested on an
    ASPEED AST2700 EVB.
    
    Signed-off-by: Chin-Ting Kuo <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: stm32: fix Overrun issue at < 8bpw [+ + +]
Author: Deepak Kumar <[email protected]>
Date:   Thu Dec 18 11:48:28 2025 +0100

    spi: stm32: fix Overrun issue at < 8bpw
    
    [ Upstream commit 1ac3be217c01d5df55ec5052f81e4f1708f46552 ]
    
    When SPI communication is suspended by hardware automatically, it could
    happen that few bits of next frame are already clocked out due to
    internal synchronization delay.
    
    To achieve a safe suspension, we need to ensure that each word must be
    at least 8 SPI clock cycles long. That's why, if bpw is less than 8
    bits, we need to use midi to reach 8 SPI clock cycles at least.
    
    This will ensure that each word achieve safe suspension and prevent
    overrun condition.
    
    Signed-off-by: Deepak Kumar <[email protected]>
    Signed-off-by: Alain Volmat <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: tools: Add include folder to .gitignore [+ + +]
Author: Francesco Lavra <[email protected]>
Date:   Mon Feb 9 10:50:01 2026 +0100

    spi: tools: Add include folder to .gitignore
    
    [ Upstream commit 5af56f30c4fcbade4a92f94dadfea517d1db9703 ]
    
    The Makefile for the SPI tools creates an include/linux/spi folder and some
    symlinks inside it. After running `make -C spi/tools`, this folder shows up
    as untracked in the git status.
    Add the above folder to the .gitignore file.
    
    Fixes: f325b73dc4db ("spi: tools: move to tools buildsystem")
    Signed-off-by: Francesco Lavra <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
staging: greybus: lights: avoid NULL deref [+ + +]
Author: Chaitanya Mishra <[email protected]>
Date:   Thu Jan 8 20:42:54 2026 +0530

    staging: greybus: lights: avoid NULL deref
    
    [ Upstream commit efcffd9a6ad8d190651498d5eda53bfc7cf683a7 ]
    
    gb_lights_light_config() stores channel_count before allocating the
    channels array. If kcalloc() fails, gb_lights_release() iterates the
    non-zero count and dereferences light->channels, which is NULL.
    
    Allocate channels first and only then publish channels_count so the
    cleanup path can't walk a NULL pointer.
    
    Fixes: 2870b52bae4c ("greybus: lights: add lights implementation")
    Link: https://lore.kernel.org/all/[email protected]/
    Reviewed-by: Rui Miguel Silva <[email protected]>
    Signed-off-by: Chaitanya Mishra <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

staging: rtl8723bs: fix memory leak on failure path [+ + +]
Author: Diksha Kumari <[email protected]>
Date:   Tue Jan 13 14:47:12 2026 +0530

    staging: rtl8723bs: fix memory leak on failure path
    
    [ Upstream commit abe850d82c8cb72d28700673678724e779b1826e ]
    
    cfg80211_inform_bss_frame() may return NULL on failure. In that case,
    the allocated buffer 'buf' is not freed and the function returns early,
    leading to potential memory leak.
    Fix this by ensuring that 'buf' is freed on both success and failure paths.
    
    Signed-off-by: Diksha Kumari <[email protected]>
    Reviewed-by: Mukesh Kumar Chaurasiya <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

staging: rtl8723bs: fix missing status update on sdio_alloc_irq() failure [+ + +]
Author: Liang Jie <[email protected]>
Date:   Mon Dec 8 17:27:28 2025 +0800

    staging: rtl8723bs: fix missing status update on sdio_alloc_irq() failure
    
    [ Upstream commit 618b4aec12faabc7579a6b0df046842d798a4c7c ]
    
    The return value of sdio_alloc_irq() was not stored in status.
    If sdio_alloc_irq() fails after rtw_drv_register_netdev() succeeds,
    status remains _SUCCESS and the error path skips resource cleanup,
    while rtw_drv_init() still returns success.
    
    Store the return value of sdio_alloc_irq() in status and reuse the
    existing error handling which relies on status.
    
    Reviewed-by: fanggeng <[email protected]>
    Signed-off-by: Liang Jie <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

staging: rtl8723bs: fix null dereference in find_network [+ + +]
Author: Ethan Tidmore <[email protected]>
Date:   Mon Feb 2 14:54:29 2026 -0600

    staging: rtl8723bs: fix null dereference in find_network
    
    [ Upstream commit 41460a19654c32d39fd0e3a3671cd8d4b7b8479f ]
    
    The variable pwlan has the possibility of being NULL when passed into
    rtw_free_network_nolock() which would later dereference the variable.
    
    Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver")
    Cc: [email protected]
    Signed-off-by: Ethan Tidmore <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
SUNRPC: auth_gss: fix memory leaks in XDR decoding error paths [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Fri Dec 26 10:15:32 2025 -0500

    SUNRPC: auth_gss: fix memory leaks in XDR decoding error paths
    
    commit 3e6397b056335cc56ef0e9da36c95946a19f5118 upstream.
    
    The gssx_dec_ctx(), gssx_dec_status(), and gssx_dec_name()
    functions allocate memory via gssx_dec_buffer(), which calls
    kmemdup(). When a subsequent decode operation fails, these
    functions return immediately without freeing previously
    allocated buffers, causing memory leaks.
    
    The leak in gssx_dec_ctx() is particularly relevant because
    the caller (gssp_accept_sec_context_upcall) initializes several
    buffer length fields to non-zero values, resulting in memory
    allocation:
    
        struct gssx_ctx rctxh = {
            .exported_context_token.len = GSSX_max_output_handle_sz,
            .mech.len = GSS_OID_MAX_LEN,
            .src_name.display_name.len = GSSX_max_princ_sz,
            .targ_name.display_name.len = GSSX_max_princ_sz
        };
    
    If, for example, gssx_dec_name() succeeds for src_name but
    fails for targ_name, the memory allocated for
    exported_context_token, mech, and src_name.display_name
    remains unreferenced and cannot be reclaimed.
    
    Add error handling with goto-based cleanup to free any
    previously allocated buffers before returning an error.
    
    Reported-by: Xingjing Deng <[email protected]>
    Closes: https://lore.kernel.org/linux-nfs/CAK+ZN9qttsFDu6h1FoqGadXjMx1QXqPMoYQ=6O9RY4SxVTvKng@mail.gmail.com/
    Fixes: 1d658336b05f ("SUNRPC: Add RPC based upcall mechanism for RPCGSS auth")
    Cc: [email protected]
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

SUNRPC: fix gss_auth kref leak in gss_alloc_msg error path [+ + +]
Author: Daniel Hodges <[email protected]>
Date:   Fri Feb 6 15:41:46 2026 -0500

    SUNRPC: fix gss_auth kref leak in gss_alloc_msg error path
    
    commit dd2fdc3504592d85e549c523b054898a036a6afe upstream.
    
    Commit 5940d1cf9f42 ("SUNRPC: Rebalance a kref in auth_gss.c") added
    a kref_get(&gss_auth->kref) call to balance the gss_put_auth() done
    in gss_release_msg(), but forgot to add a corresponding kref_put()
    on the error path when kstrdup_const() fails.
    
    If service_name is non-NULL and kstrdup_const() fails, the function
    jumps to err_put_pipe_version which calls put_pipe_version() and
    kfree(gss_msg), but never releases the gss_auth reference. This leads
    to a kref leak where the gss_auth structure is never freed.
    
    Add a forward declaration for gss_free_callback() and call kref_put()
    in the err_put_pipe_version error path to properly release the
    reference taken earlier.
    
    Fixes: 5940d1cf9f42 ("SUNRPC: Rebalance a kref in auth_gss.c")
    Cc: [email protected]
    Signed-off-by: Daniel Hodges <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
svcrdma: Clean up comment in svc_rdma_accept() [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Mon Dec 11 10:24:34 2023 -0500

    svcrdma: Clean up comment in svc_rdma_accept()
    
    [ Upstream commit fc2e69db82c1ac506cd7f539a3ab66d51d3380dc ]
    
    The comment that starts "Qualify ..." applies to only some of the
    following code paragraph. Re-arrange the lines so the comment makes
    more sense.
    
    Signed-off-by: Chuck Lever <[email protected]>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <[email protected]>

svcrdma: Increase the per-transport rw_ctx count [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Sun Feb 4 18:16:56 2024 -0500

    svcrdma: Increase the per-transport rw_ctx count
    
    [ Upstream commit 2da0f610e733606e06284ac3c1f188b9dec75d68 ]
    
    rdma_rw_mr_factor() returns the smallest number of MRs needed to
    move a particular number of pages. svcrdma currently asks for the
    number of MRs needed to move RPCSVC_MAXPAGES (a little over one
    megabyte), as that is the number of pages in the largest r/wsize
    the server supports.
    
    This call assumes that the client's NIC can bundle a full one
    megabyte payload in a single rdma_segment. In fact, most NICs cannot
    handle a full megabyte with a single rkey / rdma_segment. Clients
    will typically split even a single Read chunk into many segments.
    
    The server needs one MR to read each rdma_segment in a Read chunk,
    and thus each one needs an rw_ctx.
    
    svcrdma has been vastly underestimating the number of rw_ctxs needed
    to handle 64 RPC requests with large Read chunks using small
    rdma_segments.
    
    Unfortunately there doesn't seem to be a good way to estimate this
    number without knowing the client NIC's capabilities. Even then,
    the client RPC/RDMA implementation is still free to split a chunk
    into smaller segments (for example, it might be using physical
    registration, which needs an rdma_segment per page).
    
    The best we can do for now is choose a number that will guarantee
    forward progress in the worst case (one page per segment).
    
    At some later point, we could add some mechanisms to make this
    much less of a problem:
    - Add a core API to add more rw_ctxs to an already-established QP
    - svcrdma could treat rw_ctx exhaustion as a temporary error and
      try again
    - Limit the number of Reads in flight
    
    Signed-off-by: Chuck Lever <[email protected]>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <[email protected]>

svcrdma: Reduce the number of rdma_rw contexts per-QP [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Mon Apr 28 15:36:49 2025 -0400

    svcrdma: Reduce the number of rdma_rw contexts per-QP
    
    [ Upstream commit 59243315890578a040a2d50ae9e001a2ef2fcb62 ]
    
    There is an upper bound on the number of rdma_rw contexts that can
    be created per QP.
    
    This invisible upper bound is because rdma_create_qp() adds one or
    more additional SQEs for each ctxt that the ULP requests via
    qp_attr.cap.max_rdma_ctxs. The QP's actual Send Queue length is on
    the order of the sum of qp_attr.cap.max_send_wr and a factor times
    qp_attr.cap.max_rdma_ctxs. The factor can be up to three, depending
    on whether MR operations are required before RDMA Reads.
    
    This limit is not visible to RDMA consumers via dev->attrs. When the
    limit is surpassed, QP creation fails with -ENOMEM. For example:
    
    svcrdma's estimate of the number of rdma_rw contexts it needs is
    three times the number of pages in RPCSVC_MAXPAGES. When MAXPAGES
    is about 260, the internally-computed SQ length should be:
    
    64 credits + 10 backlog + 3 * (3 * 260) = 2414
    
    Which is well below the advertised qp_max_wr of 32768.
    
    If RPCSVC_MAXPAGES is increased to 4MB, that's 1040 pages:
    
    64 credits + 10 backlog + 3 * (3 * 1040) = 9434
    
    However, QP creation fails. Dynamic printk for mlx5 shows:
    
    calc_sq_size:618:(pid 1514): send queue size (9326 * 256 / 64 -> 65536) exceeds limits(32768)
    
    Although 9326 is still far below qp_max_wr, QP creation still
    fails.
    
    Because the total SQ length calculation is opaque to RDMA consumers,
    there doesn't seem to be much that can be done about this except for
    consumers to try to keep the requested rdma_rw ctxt count low.
    
    Fixes: 2da0f610e733 ("svcrdma: Increase the per-transport rw_ctx count")
    Reviewed-by: NeilBrown <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <[email protected]>

svcrdma: Remove queue-shortening warnings [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Mon Dec 11 10:24:28 2023 -0500

    svcrdma: Remove queue-shortening warnings
    
    [ Upstream commit b918bfcf370c92ea3b82fa9bb3d017702b5fa4cb ]
    
    These won't have much diagnostic value for site administrators.
    Since they can't be disabled, they become noise.
    
    What's more, the subsequent rdma_create_qp() call adjusts the Send
    Queue size (possibly downward) without warning, making the size
    reported by these pr_warns inaccurate.
    
    Signed-off-by: Chuck Lever <[email protected]>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <[email protected]>

 
tcp: tcp_tx_timestamp() must look at the rtx queue [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Jan 27 12:38:27 2026 +0000

    tcp: tcp_tx_timestamp() must look at the rtx queue
    
    [ Upstream commit 838eb9687691d29915797a885b861fd09353386e ]
    
    tcp_tx_timestamp() is only called at the end of tcp_sendmsg_locked()
    before the final tcp_push().
    
    By the time it is called, it is possible all the copied data
    has been sent already (transmit queue is empty).
    
    If this is the case, use the last skb in the rtx queue.
    
    Fixes: 75c119afe14f ("tcp: implement rb-tree based retransmit queue")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
timers: Replace in_irq() with in_hardirq() [+ + +]
Author: ye xingchen <[email protected]>
Date:   Wed Oct 12 01:26:29 2022 +0000

    timers: Replace in_irq() with in_hardirq()
    
    [ Upstream commit 8be3f96ceddb911539a53d87a66da84a04502366 ]
    
    Replace the obsolete and ambiguous macro in_irq() with new
    macro in_hardirq().
    
    Signed-off-by: ye xingchen <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Acked-by: John Stultz <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: c9efde1e537b ("nfc: hci: shdlc: Stop timers and work before freeing context")
    Signed-off-by: Sasha Levin <[email protected]>

 
tipc: fix duplicate publication key in tipc_service_insert_publ() [+ + +]
Author: Tung Nguyen <[email protected]>
Date:   Fri Feb 20 05:05:41 2026 +0000

    tipc: fix duplicate publication key in tipc_service_insert_publ()
    
    [ Upstream commit 3aa677625c8fad39989496c51bcff3872c1f16f1 ]
    
    TIPC uses named table to store TIPC services represented by type and
    instance. Each time an application calls TIPC API bind() to bind a
    type/instance to a socket, an entry is created and inserted into the
    named table. It looks like this:
    
    named table:
    key1, entry1 (type, instance ...)
    key2, entry2 (type, instance ...)
    
    In the above table, each entry represents a route for sending data
    from one socket to the other. For all publications originated from
    the same node, the key is UNIQUE to identify each entry.
    It is calculated by this formula:
    key = socket portid + number of bindings + 1 (1)
    
    where:
     - socket portid: unique and calculated by using linux kernel function
                      get_random_u32_below(). So, the value is randomized.
     - number of bindings: the number of times a type/instance pair is bound
                           to a socket. This number is linearly increased,
                           starting from 0.
    
    While the socket portid is unique and randomized by linux kernel, the
    linear increment of "number of bindings" in formula (1) makes "key" not
    unique anymore. For example:
    - Socket 1 is created with its associated port number 20062001. Type 1000,
    instance 1 is bound to socket 1:
    key1: 20062001 + 0 + 1 = 20062002
    
    Then, bind() is called a second time on Socket 1 to by the same type 1000,
    instance 1:
    key2: 20062001 + 1 + 1 = 20062003
    
    Named table:
    key1 (20062002), entry1 (1000, 1 ...)
    key2 (20062003), entry2 (1000, 1 ...)
    
    - Socket 2 is created with its associated port number 20062002. Type 1000,
    instance 1 is bound to socket 2:
    key3: 20062002 + 0 + 1 = 20062003
    
    TIPC looks up the named table and finds out that key2 with the same value
    already exists and rejects the insertion into the named table.
    This leads to failure of bind() call from application on Socket 2 with error
    message EINVAL "Invalid argument".
    
    This commit fixes this issue by adding more port id checking to make sure
    that the key is unique to publications originated from the same port id
    and node.
    
    Fixes: 218527fe27ad ("tipc: replace name table service range array with rb tree")
    Signed-off-by: Tung Nguyen <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tipc: fix RCU dereference race in tipc_aead_users_dec() [+ + +]
Author: Daniel Hodges <[email protected]>
Date:   Tue Feb 3 09:56:21 2026 -0500

    tipc: fix RCU dereference race in tipc_aead_users_dec()
    
    [ Upstream commit 6a65c0cb0ff20b3cbc5f1c87b37dd22cdde14a1c ]
    
    tipc_aead_users_dec() calls rcu_dereference(aead) twice: once to store
    in 'tmp' for the NULL check, and again inside the atomic_add_unless()
    call.
    
    Use the already-dereferenced 'tmp' pointer consistently, matching the
    correct pattern used in tipc_aead_users_inc() and tipc_aead_users_set().
    
    Fixes: fc1b6d6de220 ("tipc: introduce TIPC encryption & authentication")
    Cc: [email protected]
    Reviewed-by: Eric Dumazet <[email protected]>
    Signed-off-by: Daniel Hodges <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/power cpupower: Reset errno before strtoull() [+ + +]
Author: Kaushlendra Kumar <[email protected]>
Date:   Mon Dec 1 17:47:45 2025 +0530

    tools/power cpupower: Reset errno before strtoull()
    
    [ Upstream commit f9bd3762cf1bd0c2465f2e6121b340883471d1bf ]
    
    cpuidle_state_get_one_value() never cleared errno before calling
    strtoull(), so a prior ERANGE caused every cpuidle counter read to
    return zero. Reset errno to 0 before the conversion so each sysfs read
    is evaluated independently.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kaushlendra Kumar <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tpm: st33zp24: Fix missing cleanup on get_burstcount() error [+ + +]
Author: Alper Ak <[email protected]>
Date:   Fri Dec 26 15:09:27 2025 +0300

    tpm: st33zp24: Fix missing cleanup on get_burstcount() error
    
    [ Upstream commit 3e91b44c93ad2871f89fc2a98c5e4fe6ca5db3d9 ]
    
    get_burstcount() can return -EBUSY on timeout. When this happens,
    st33zp24_send() returns directly without releasing the locality
    acquired earlier.
    
    Use goto out_err to ensure proper cleanup when get_burstcount() fails.
    
    Fixes: bf38b8710892 ("tpm/tpm_i2c_stm_st33: Split tpm_i2c_tpm_st33 in 2 layers (core + phy)")
    Signed-off-by: Alper Ak <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tpm: tpm_i2c_infineon: Fix locality leak on get_burstcount() failure [+ + +]
Author: Alper Ak <[email protected]>
Date:   Fri Dec 26 13:23:38 2025 +0300

    tpm: tpm_i2c_infineon: Fix locality leak on get_burstcount() failure
    
    [ Upstream commit bbd6e97c836cbeb9606d7b7e5dcf8a1d89525713 ]
    
    get_burstcount() can return -EBUSY on timeout. When this happens, the
    function returns directly without releasing the locality that was
    acquired at the beginning of tpm_tis_i2c_send().
    
    Use goto out_err to ensure proper cleanup when get_burstcount() fails.
    
    Fixes: aad628c1d91a ("char/tpm: Add new driver for Infineon I2C TIS TPM")
    Signed-off-by: Alper Ak <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing: Fix false sharing in hwlat get_sample() [+ + +]
Author: Colin Lord <[email protected]>
Date:   Mon Feb 9 23:48:10 2026 -0800

    tracing: Fix false sharing in hwlat get_sample()
    
    [ Upstream commit f743435f988cb0cf1f521035aee857851b25e06d ]
    
    The get_sample() function in the hwlat tracer assumes the caller holds
    hwlat_data.lock, but this is not actually happening. The result is
    unprotected data access to hwlat_data, and in per-cpu mode can result in
    false sharing which may show up as false positive latency events.
    
    The specific case of false sharing observed was primarily between
    hwlat_data.sample_width and hwlat_data.count. These are separated by
    just 8B and are therefore likely to share a cache line. When one thread
    modifies count, the cache line is in a modified state so when other
    threads read sample_width in the main latency detection loop, they fetch
    the modified cache line. On some systems, the fetch itself may be slow
    enough to count as a latency event, which could set up a self
    reinforcing cycle of latency events as each event increments count which
    then causes more latency events, continuing the cycle.
    
    The other result of the unprotected data access is that hwlat_data.count
    can end up with duplicate or missed values, which was observed on some
    systems in testing.
    
    Convert hwlat_data.count to atomic64_t so it can be safely modified
    without locking, and prevent false sharing by pulling sample_width into
    a local variable.
    
    One system this was tested on was a dual socket server with 32 CPUs on
    each numa node. With settings of 1us threshold, 1000us width, and
    2000us window, this change reduced the number of latency events from
    500 per second down to approximately 1 event per minute. Some machines
    tested did not exhibit measurable latency from the false sharing.
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Colin Lord <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tracing: Fix to set write permission to per-cpu buffer_size_kb [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Tue Feb 10 17:43:36 2026 +0900

    tracing: Fix to set write permission to per-cpu buffer_size_kb
    
    [ Upstream commit f844282deed7481cf2f813933229261e27306551 ]
    
    Since the per-cpu buffer_size_kb file is writable for changing
    per-cpu ring buffer size, the file should have the write access
    permission.
    
    Cc: [email protected]
    Cc: Mathieu Desnoyers <[email protected]>
    Link: https://patch.msgid.link/177071301597.2293046.11683339475076917920.stgit@mhiramat.tok.corp.google.com
    Fixes: 21ccc9cd7211 ("tracing: Disable "other" permission bits in the tracefs files")
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tracing: Remove duplicate ENABLE_EVENT_STR and DISABLE_EVENT_STR macros [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Mon Jan 26 13:00:37 2026 -0500

    tracing: Remove duplicate ENABLE_EVENT_STR and DISABLE_EVENT_STR macros
    
    [ Upstream commit 9df0e49c5b9b8d051529be9994e4f92f2d20be6f ]
    
    The macros ENABLE_EVENT_STR and DISABLE_EVENT_STR were added to trace.h so
    that more than one file can have access to them, but was never removed
    from their original location. Remove the duplicates.
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Tom Zanussi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Fixes: d0bad49bb0a09 ("tracing: Add enable_hist/disable_hist triggers")
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ucount: check for CAP_SYS_RESOURCE using ns_capable_noaudit() [+ + +]
Author: Ondrej Mosnacek <[email protected]>
Date:   Thu Jan 22 15:07:45 2026 +0100

    ucount: check for CAP_SYS_RESOURCE using ns_capable_noaudit()
    
    [ Upstream commit 0895a000e4fff9e950a7894210db45973e485c35 ]
    
    The user.* sysctls implement the ctl_table_root::permissions hook and they
    override the file access mode based on the CAP_SYS_RESOURCE capability (at
    most rwx if capable, at most r-- if not).  The capability is being checked
    unconditionally, so if an LSM denies the capability, an audit record may
    be logged even when access is in fact granted.
    
    Given the logic in the set_permissions() function in kernel/ucount.c and
    the unfortunate way the permission checking is implemented, it doesn't
    seem viable to avoid false positive denials by deferring the capability
    check.  Thus, do the same as in net_ctl_permissions() (net/sysctl_net.c) -
    switch from ns_capable() to ns_capable_noaudit(), so that the check never
    logs an audit record.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: dbec28460a89 ("userns: Add per user namespace sysctls.")
    Signed-off-by: Ondrej Mosnacek <[email protected]>
    Reviewed-by: Paul Moore <[email protected]>
    Acked-by: Serge Hallyn <[email protected]>
    Cc: Eric Biederman <[email protected]>
    Cc: Alexey Gladkov <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: bdc: fix sleep during atomic [+ + +]
Author: Justin Chen <[email protected]>
Date:   Tue Jan 20 12:07:54 2026 -0800

    usb: bdc: fix sleep during atomic
    
    [ Upstream commit f1195ca3b4bbd001d3f1264dce91f83dec7777f5 ]
    
    bdc_run() can be ran during atomic context leading to a sleep during
    atomic warning. Fix this by replacing read_poll_timeout() with
    read_poll_timeout_atomic().
    
    Fixes: 75ae051efc9b ("usb: gadget: bdc: use readl_poll_timeout() to simplify code")
    Signed-off-by: Justin Chen <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: dwc2: fix resume failure if dr_mode is host [+ + +]
Author: Jisheng Zhang <[email protected]>
Date:   Thu Jan 29 10:15:34 2026 +0800

    usb: dwc2: fix resume failure if dr_mode is host
    
    [ Upstream commit a52e4f2dff413b58c7200e89bb6540bd995e1269 ]
    
    commit 13b1f8e25bfd1 ("usb: dwc2: Force mode optimizations") removed the
    dwc2_force_mode(hsotg, true) in dwc2_force_dr_mode() if dr_mode is host.
    
    But this brings a bug: the controller fails to resume back as host,
    further debugging shows that the controller is resumed as peripheral.
    The reason is dwc2_force_dr_mode() missed the host mode forcing, and
    when resuming from s2ram, GINTSTS is 0 by default, dwc2_is_device_mode
    in dwc2_resume() misreads this as the controller is in peripheral mode.
    
    Fix the resume failure by adding back the dwc2_force_mode(hsotg, true).
    
    Then an obvious question is: why this bug hasn't been observed and fixed
    for about six years? There are two resons: most dwc2 platforms set the
    dr_mode as otg; Some platforms don't have suspend & resume support yet.
    
    Fixes: 13b1f8e25bfd1 ("usb: dwc2: Force mode optimizations")
    Cc: stable <[email protected]>
    Signed-off-by: Jisheng Zhang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: gadget: tegra-xudc: Add handling for BLCG_COREPLL_PWRDN [+ + +]
Author: Haotien Hsu <[email protected]>
Date:   Sat Jan 24 01:31:21 2026 +0800

    usb: gadget: tegra-xudc: Add handling for BLCG_COREPLL_PWRDN
    
    [ Upstream commit 1132e90840abf3e7db11f1d28199e9fbc0b0e69e ]
    
    The COREPLL_PWRDN bit in the BLCG register must be set when the XUSB
    device controller is powergated and cleared when it is unpowergated.
    If this bit is not explicitly controlled, the core PLL may remain in an
    incorrect power state across suspend/resume or ELPG transitions.
    Therefore, update the driver to explicitly control this bit during
    powergate transitions.
    
    Fixes: 49db427232fe ("usb: gadget: Add UDC driver for tegra XUSB device mode controller")
    Cc: stable <[email protected]>
    Signed-off-by: Haotien Hsu <[email protected]>
    Signed-off-by: Wayne Chang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
virt: vbox: uapi: Mark inner unions in packed structs as packed [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Thu Jan 15 08:35:45 2026 +0100

    virt: vbox: uapi: Mark inner unions in packed structs as packed
    
    [ Upstream commit c25d01e1c4f2d43f47af87c00e223f5ca7c71792 ]
    
    The unpacked unions within a packed struct generates alignment warnings
    on clang for 32-bit ARM:
    
    ./usr/include/linux/vbox_vmmdev_types.h:239:4: error: field u within 'struct vmmdev_hgcm_function_parameter32'
      is less aligned than 'union (unnamed union at ./usr/include/linux/vbox_vmmdev_types.h:223:2)'
      and is usually due to 'struct vmmdev_hgcm_function_parameter32' being packed,
      which can lead to unaligned accesses [-Werror,-Wunaligned-access]
         239 |         } u;
             |           ^
    
    ./usr/include/linux/vbox_vmmdev_types.h:254:6: error: field u within
      'struct vmmdev_hgcm_function_parameter64::(anonymous union)::(unnamed at ./usr/include/linux/vbox_vmmdev_types.h:249:3)'
      is less aligned than 'union (unnamed union at ./usr/include/linux/vbox_vmmdev_types.h:251:4)' and is usually due to
      'struct vmmdev_hgcm_function_parameter64::(anonymous union)::(unnamed at ./usr/include/linux/vbox_vmmdev_types.h:249:3)'
      being packed, which can lead to unaligned accesses [-Werror,-Wunaligned-access]
    
    With the recent changes to compile-test the UAPI headers in more cases,
    these warning in combination with CONFIG_WERROR breaks the build.
    
    Fix the warnings.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Reported-by: Nathan Chancellor <[email protected]>
    Closes: https://lore.kernel.org/linux-kbuild/20260110-uapi-test-disable-headers-arm-clang-unaligned-access-v1-1-b7b0fa541daa@kernel.org/
    Suggested-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/linux-kbuild/[email protected]/
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Tested-by: Nicolas Schier <[email protected]>
    Reviewed-by: Nicolas Schier <[email protected]>
    Acked-by: Greg Kroah-Hartman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vmw_vsock: bypass false-positive Wnonnull warning with gcc-16 [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Feb 3 17:34:00 2026 +0100

    vmw_vsock: bypass false-positive Wnonnull warning with gcc-16
    
    [ Upstream commit e25dbf561e03c0c5e36228e3b8b784392819ce85 ]
    
    The gcc-16.0.1 snapshot produces a false-positive warning that turns
    into a build failure with CONFIG_WERROR:
    
    In file included from arch/x86/include/asm/string.h:6,
                     from net/vmw_vsock/vmci_transport.c:10:
    In function 'vmci_transport_packet_init',
        inlined from '__vmci_transport_send_control_pkt.constprop' at net/vmw_vsock/vmci_transport.c:198:2:
    arch/x86/include/asm/string_32.h:150:25: error: argument 2 null where non-null expected because argument 3 is nonzero [-Werror=nonnull]
      150 | #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
    net/vmw_vsock/vmci_transport.c:164:17: note: in expansion of macro 'memcpy'
      164 |                 memcpy(&pkt->u.wait, wait, sizeof(pkt->u.wait));
          |                 ^~~~~~
    arch/x86/include/asm/string_32.h:150:25: note: in a call to built-in function '__builtin_memcpy'
    net/vmw_vsock/vmci_transport.c:164:17: note: in expansion of macro 'memcpy'
      164 |                 memcpy(&pkt->u.wait, wait, sizeof(pkt->u.wait));
          |                 ^~~~~~
    
    This seems relatively harmless, and it so far the only instance of this
    warning I have found. The __vmci_transport_send_control_pkt function
    is called either with wait=NULL or with one of the type values that
    pass 'wait' into memcpy() here, but not from the same caller.
    
    Replacing the memcpy with a struct assignment is otherwise the same
    but avoids the warning.
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Bobby Eshleman <[email protected]>
    Reviewed-by: Stefano Garzarella <[email protected]>
    Reviewed-by: Bryan Tan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath10k: fix lock protection in ath10k_wmi_event_peer_sta_ps_state_chg() [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Fri Jan 23 17:56:11 2026 +0000

    wifi: ath10k: fix lock protection in ath10k_wmi_event_peer_sta_ps_state_chg()
    
    [ Upstream commit 820ba7dd6859ef8b1eaf6014897e7aa4756fc65d ]
    
    ath10k_wmi_event_peer_sta_ps_state_chg() uses lockdep_assert_held() to
    assert that ar->data_lock should be held by the caller, but neither
    ath10k_wmi_10_2_op_rx() nor ath10k_wmi_10_4_op_rx() acquire this lock
    before calling this function.
    
    The field arsta->peer_ps_state is documented as protected by
    ar->data_lock in core.h, and other accessors (ath10k_peer_ps_state_disable,
    ath10k_dbg_sta_read_peer_ps_state) properly acquire this lock.
    
    Add spin_lock_bh()/spin_unlock_bh() around the peer_ps_state update,
    and remove the lockdep_assert_held() to be aligned with new locking,
    following the pattern used by other WMI event handlers in the driver.
    
    Signed-off-by: Ziyi Guo <[email protected]>
    Reviewed-by: Baochen Qiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [removed excess blank line]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath10k: sdio: add missing lock protection in ath10k_sdio_fw_crashed_dump() [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Fri Jan 23 04:58:22 2026 +0000

    wifi: ath10k: sdio: add missing lock protection in ath10k_sdio_fw_crashed_dump()
    
    [ Upstream commit e55ac348089e579fc224569c7bd90340bf2439f9 ]
    
    ath10k_sdio_fw_crashed_dump() calls ath10k_coredump_new() which requires
    ar->dump_mutex to be held, as indicated by lockdep_assert_held() in that
    function. However, the SDIO implementation does not acquire this lock,
    unlike the PCI and SNOC implementations which properly hold the mutex.
    
    Additionally, ar->stats.fw_crash_counter is documented as protected by
    ar->data_lock in core.h, but the SDIO implementation modifies it without
    holding this spinlock.
    
    Add the missing mutex_lock()/mutex_unlock() around the coredump
    operations, and add spin_lock_bh()/spin_unlock_bh() around the
    fw_crash_counter increment, following the pattern used in
    ath10k_pci_fw_dump_work() and ath10k_snoc_fw_crashed_dump().
    
    Fixes: 3c45f21af84e ("ath10k: sdio: add firmware coredump support")
    Signed-off-by: Ziyi Guo <[email protected]>
    Reviewed-by: Baochen Qiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: stop NAN and P2P in cfg80211_leave [+ + +]
Author: Miri Korenblit <[email protected]>
Date:   Wed Jan 7 14:04:51 2026 +0200

    wifi: cfg80211: stop NAN and P2P in cfg80211_leave
    
    [ Upstream commit e1696c8bd0056bc1a5f7766f58ac333adc203e8a ]
    
    Seems that there is an assumption that this function should be called
    only for netdev interfaces, but it can also be called in suspend, or
    from nl80211_netlink_notify (indirectly).
    Note that the documentation of NL80211_ATTR_SOCKET_OWNER explicitly
    says that NAN interfaces would be destroyed as well in the
    nl80211_netlink_notify case.
    
    Fix this by also stopping P2P and NAN.
    
    Fixes: cb3b7d87652a ("cfg80211: add start / stop NAN commands")
    Reviewed-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20260107140430.dab142cbef0b.I290cc47836d56dd7e35012ce06bec36c6da688cd@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: wext: fix IGTK key ID off-by-one [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Mon Feb 9 19:12:20 2026 +0100

    wifi: cfg80211: wext: fix IGTK key ID off-by-one
    
    [ Upstream commit c8d7f21ead727485ebf965e2b4d42d4a4f0840f6 ]
    
    The IGTK key ID must be 4 or 5, but the code checks against
    key ID + 1, so must check against 5/6 rather than 4/5. Fix
    that.
    
    Reported-by: Jouni Malinen <[email protected]>
    Fixes: 08645126dd24 ("cfg80211: implement wext key handling")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlegacy: add missing mutex protection in il3945_store_measurement() [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Sun Jan 25 19:30:05 2026 +0000

    wifi: iwlegacy: add missing mutex protection in il3945_store_measurement()
    
    [ Upstream commit 4dd1dda65265ecbc9f43ffc08e333684cf715152 ]
    
    il3945_store_measurement() calls il3945_get_measurement() which internally
    calls il_send_cmd_sync() without holding il->mutex. However,
    il_send_cmd_sync() has lockdep_assert_held(&il->mutex) indicating that
    callers must hold this lock.
    
    Other sysfs store functions in the same file properly acquire the mutex:
    - il3945_store_flags() acquires mutex at 3945-mac.c:3110
    - il3945_store_filter_flags() acquires mutex at 3945-mac.c:3144
    
    Add mutex_lock()/mutex_unlock() around the il3945_get_measurement() call
    in the sysfs store function to fix the missing lock protection.
    
    Signed-off-by: Ziyi Guo <[email protected]>
    Acked-by: Stanislaw Gruszka <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlegacy: add missing mutex protection in il4965_store_tx_power() [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Sun Jan 25 19:40:39 2026 +0000

    wifi: iwlegacy: add missing mutex protection in il4965_store_tx_power()
    
    [ Upstream commit e31fa691d0b1c07b6094a6cf0cce894192c462b3 ]
    
    il4965_store_tx_power() calls il_set_tx_power() without holding il->mutex.
    However, il_set_tx_power() has lockdep_assert_held(&il->mutex) indicating
    that callers must hold this lock.
    
    All other callers of il_set_tx_power() properly acquire the mutex:
    - il_bg_scan_completed() acquires mutex at common.c:1683
    - il_mac_config() acquires mutex at common.c:5006
    - il3945_commit_rxon() and il4965_commit_rxon() are called via work
      queues that hold the mutex (like il4965_bg_alive_start)
    
    Add mutex_lock()/mutex_unlock() around the il_set_tx_power() call in
    the sysfs store function to fix the missing lock protection.
    
    Signed-off-by: Ziyi Guo <[email protected]>
    Acked-by: Stanislaw Gruszka <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: libertas: fix WARNING in usb_tx_block [+ + +]
Author: Szymon Wilczek <[email protected]>
Date:   Sun Dec 21 16:58:06 2025 +0100

    wifi: libertas: fix WARNING in usb_tx_block
    
    [ Upstream commit d66676e6ca96bf8680f869a9bd6573b26c634622 ]
    
    The function usb_tx_block() submits cardp->tx_urb without ensuring that
    any previous transmission on this URB has completed. If a second call
    occurs while the URB is still active (e.g. during rapid firmware loading),
    usb_submit_urb() detects the active state and triggers a warning:
    'URB submitted while active'.
    
    Fix this by enforcing serialization: call usb_kill_urb() before
    submitting the new request. This ensures the URB is idle and safe to reuse.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=67969ab6a2551c27f71b
    Signed-off-by: Szymon Wilczek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set [+ + +]
Author: Hou Wenlong <[email protected]>
Date:   Sat Jan 10 12:00:08 2026 +0800

    x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set
    
    [ Upstream commit db9aded979b491a24871e1621cd4e8822dbca859 ]
    
    The PVH entry is available for 32-bit KVM guests, and 32-bit KVM guests
    do not depend on CONFIG_X86_PAE. However, mk_early_pgtbl_32() builds
    different pagetables depending on whether CONFIG_X86_PAE is set.
    Therefore, enabling PAE mode for 32-bit KVM guests without
    CONFIG_X86_PAE being set would result in a boot failure during CR3
    loading.
    
    Signed-off-by: Hou Wenlong <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Message-ID: <d09ce9a134eb9cbc16928a5b316969f8ba606b81.1768017442.git.houwenlong.hwl@antgroup.com>
    Signed-off-by: Sasha Levin <[email protected]>

 
xen-netback: reject zero-queue configuration from guest [+ + +]
Author: Ziyi Guo <[email protected]>
Date:   Thu Feb 12 22:40:40 2026 +0000

    xen-netback: reject zero-queue configuration from guest
    
    [ Upstream commit 6d1dc8014334c7fb25719999bca84d811e60a559 ]
    
    A malicious or buggy Xen guest can write "0" to the xenbus key
    "multi-queue-num-queues". The connect() function in the backend only
    validates the upper bound (requested_num_queues > xenvif_max_queues)
    but not zero, allowing requested_num_queues=0 to reach
    vzalloc(array_size(0, sizeof(struct xenvif_queue))), which triggers
    WARN_ON_ONCE(!size) in __vmalloc_node_range().
    
    On systems with panic_on_warn=1, this allows a guest-to-host denial
    of service.
    
    The Xen network interface specification requires
    the queue count to be "greater than zero".
    
    Add a zero check to match the validation already present
    in xen-blkback, which has included this
    guard since its multi-queue support was added.
    
    Fixes: 8d3d53b3e433 ("xen-netback: Add support for multiple queues")
    Signed-off-by: Ziyi Guo <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xenbus: Use .freeze/.thaw to handle xenbus devices [+ + +]
Author: Jason Andryuk <[email protected]>
Date:   Wed Nov 19 17:47:29 2025 -0500

    xenbus: Use .freeze/.thaw to handle xenbus devices
    
    [ Upstream commit e08dd1ee49838750a514e83c0aa60cd12ba6ecbb ]
    
    The goal is to fix s2idle and S3 for Xen PV devices.  A domain resuming
    from s3 or s2idle disconnects its PV devices during resume.  The
    backends are not expecting this and do not reconnect.
    
    b3e96c0c7562 ("xen: use freeze/restore/thaw PM events for suspend/
    resume/chkpt") changed xen_suspend()/do_suspend() from
    PMSG_SUSPEND/PMSG_RESUME to PMSG_FREEZE/PMSG_THAW/PMSG_RESTORE, but the
    suspend/resume callbacks remained.
    
    .freeze/restore are used with hiberation where Linux restarts in a new
    place in the future.  .suspend/resume are useful for runtime power
    management for the duration of a boot.
    
    The current behavior of the callbacks works for an xl save/restore or
    live migration where the domain is restored/migrated to a new location
    and connecting to a not-already-connected backend.
    
    Change xenbus_pm_ops to use .freeze/thaw/restore and drop the
    .suspend/resume hook.  This matches the use in drivers/xen/manage.c for
    save/restore and live migration.  With .suspend/resume empty, PV devices
    are left connected during s2idle and s3, so PV devices are not changed
    and work after resume.
    
    Signed-off-by: Jason Andryuk <[email protected]>
    Acked-by: Juergen Gross <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm6: fix uninitialized saddr in xfrm6_get_saddr() [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Tue Jan 27 19:38:44 2026 +0800

    xfrm6: fix uninitialized saddr in xfrm6_get_saddr()
    
    [ Upstream commit 1799d8abeabc68ec05679292aaf6cba93b343c05 ]
    
    xfrm6_get_saddr() does not check the return value of
    ipv6_dev_get_saddr(). When ipv6_dev_get_saddr() fails to find a suitable
    source address (returns -EADDRNOTAVAIL), saddr->in6 is left
    uninitialized, but xfrm6_get_saddr() still returns 0 (success).
    
    This causes the caller xfrm_tmpl_resolve_one() to use the uninitialized
    address in xfrm_state_find(), triggering KMSAN warning:
    
    =====================================================
    BUG: KMSAN: uninit-value in xfrm_state_find+0x2424/0xa940
     xfrm_state_find+0x2424/0xa940
     xfrm_resolve_and_create_bundle+0x906/0x5a20
     xfrm_lookup_with_ifid+0xcc0/0x3770
     xfrm_lookup_route+0x63/0x2b0
     ip_route_output_flow+0x1ce/0x270
     udp_sendmsg+0x2ce1/0x3400
     inet_sendmsg+0x1ef/0x2a0
     __sock_sendmsg+0x278/0x3d0
     __sys_sendto+0x593/0x720
     __x64_sys_sendto+0x130/0x200
     x64_sys_call+0x332b/0x3e70
     do_syscall_64+0xd3/0xf80
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Local variable tmp.i.i created at:
     xfrm_resolve_and_create_bundle+0x3e3/0x5a20
     xfrm_lookup_with_ifid+0xcc0/0x3770
    =====================================================
    
    Fix by checking the return value of ipv6_dev_get_saddr() and propagating
    the error.
    
    Fixes: a1e59abf8249 ("[XFRM]: Fix wildcard as tunnel source")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Signed-off-by: Jiayuan Chen <[email protected]>
    Signed-off-by: Jiayuan Chen <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfs: delete attr leaf freemap entries when empty [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Fri Jan 23 09:27:30 2026 -0800

    xfs: delete attr leaf freemap entries when empty
    
    [ Upstream commit 6f13c1d2a6271c2e73226864a0e83de2770b6f34 ]
    
    Back in commit 2a2b5932db6758 ("xfs: fix attr leaf header freemap.size
    underflow"), Brian Foster observed that it's possible for a small
    freemap at the end of the end of the xattr entries array to experience
    a size underflow when subtracting the space consumed by an expansion of
    the entries array.  There are only three freemap entries, which means
    that it is not a complete index of all free space in the leaf block.
    
    This code can leave behind a zero-length freemap entry with a nonzero
    base.  Subsequent setxattr operations can increase the base up to the
    point that it overlaps with another freemap entry.  This isn't in and of
    itself a problem because the code in _leaf_add that finds free space
    ignores any freemap entry with zero size.
    
    However, there's another bug in the freemap update code in _leaf_add,
    which is that it fails to update a freemap entry that begins midway
    through the xattr entry that was just appended to the array.  That can
    result in the freemap containing two entries with the same base but
    different sizes (0 for the "pushed-up" entry, nonzero for the entry
    that's actually tracking free space).  A subsequent _leaf_add can then
    allocate xattr namevalue entries on top of the entries array, leading to
    data loss.  But fixing that is for later.
    
    For now, eliminate the possibility of confusion by zeroing out the base
    of any freemap entry that has zero size.  Because the freemap is not
    intended to be a complete index of free space, a subsequent failure to
    find any free space for a new xattr will trigger block compaction, which
    regenerates the freemap.
    
    It looks like this bug has been in the codebase for quite a long time.
    
    Cc: <[email protected]> # v2.6.12
    Fixes: 1da177e4c3f415 ("Linux-2.6.12-rc2")
    Signed-off-by: "Darrick J. Wong" <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xfs: fix freemap adjustments when adding xattrs to leaf blocks [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Fri Jan 23 09:27:31 2026 -0800

    xfs: fix freemap adjustments when adding xattrs to leaf blocks
    
    [ Upstream commit 3eefc0c2b78444b64feeb3783c017d6adc3cd3ce ]
    
    xfs/592 and xfs/794 both trip this assertion in the leaf block freemap
    adjustment code after ~20 minutes of running on my test VMs:
    
     ASSERT(ichdr->firstused >= ichdr->count * sizeof(xfs_attr_leaf_entry_t)
                                            + xfs_attr3_leaf_hdr_size(leaf));
    
    Upon enabling quite a lot more debugging code, I narrowed this down to
    fsstress trying to set a local extended attribute with namelen=3 and
    valuelen=71.  This results in an entry size of 80 bytes.
    
    At the start of xfs_attr3_leaf_add_work, the freemap looks like this:
    
    i 0 base 448 size 0 rhs 448 count 46
    i 1 base 388 size 132 rhs 448 count 46
    i 2 base 2120 size 4 rhs 448 count 46
    firstused = 520
    
    where "rhs" is the first byte past the end of the leaf entry array.
    This is inconsistent -- the entries array ends at byte 448, but
    freemap[1] says there's free space starting at byte 388!
    
    By the end of the function, the freemap is in worse shape:
    
    i 0 base 456 size 0 rhs 456 count 47
    i 1 base 388 size 52 rhs 456 count 47
    i 2 base 2120 size 4 rhs 456 count 47
    firstused = 440
    
    Important note: 388 is not aligned with the entries array element size
    of 8 bytes.
    
    Based on the incorrect freemap, the name area starts at byte 440, which
    is below the end of the entries array!  That's why the assertion
    triggers and the filesystem shuts down.
    
    How did we end up here?  First, recall from the previous patch that the
    freemap array in an xattr leaf block is not intended to be a
    comprehensive map of all free space in the leaf block.  In other words,
    it's perfectly legal to have a leaf block with:
    
     * 376 bytes in use by the entries array
     * freemap[0] has [base = 376, size = 8]
     * freemap[1] has [base = 388, size = 1500]
     * the space between 376 and 388 is free, but the freemap stopped
       tracking that some time ago
    
    If we add one xattr, the entries array grows to 384 bytes, and
    freemap[0] becomes [base = 384, size = 0].  So far, so good.  But if we
    add a second xattr, the entries array grows to 392 bytes, and freemap[0]
    gets pushed up to [base = 392, size = 0].  This is bad, because
    freemap[1] hasn't been updated, and now the entries array and the free
    space claim the same space.
    
    The fix here is to adjust all freemap entries so that none of them
    collide with the entries array.  Note that this fix relies on commit
    2a2b5932db6758 ("xfs: fix attr leaf header freemap.size underflow") and
    the previous patch that resets zero length freemap entries to have
    base = 0.
    
    Cc: <[email protected]> # v2.6.12
    Fixes: 1da177e4c3f415 ("Linux-2.6.12-rc2")
    Signed-off-by: "Darrick J. Wong" <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xfs: fix remote xattr valuelblk check [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Fri Jan 23 09:27:33 2026 -0800

    xfs: fix remote xattr valuelblk check
    
    [ Upstream commit bd3138e8912c9db182eac5fed1337645a98b7a4f ]
    
    In debugging other problems with generic/753, it turns out that it's
    possible for the system go to down in the middle of a remote xattr set
    operation such that the leaf block entry is marked incomplete and
    valueblk is set to zero.  Make this no longer a failure.
    
    Cc: <[email protected]> # v4.15
    Fixes: 13791d3b833428 ("xfs: scrub extended attribute leaf space")
    Signed-off-by: "Darrick J. Wong" <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xfs: mark data structures corrupt on EIO and ENODATA [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Thu Dec 18 18:40:50 2025 -0800

    xfs: mark data structures corrupt on EIO and ENODATA
    
    [ Upstream commit f39854a3fb2f06dc69b81ada002b641ba5b4696b ]
    
    I learned a few things this year: first, blk_status_to_errno can return
    ENODATA for critical media errors; and second, the scrub code doesn't
    mark data structures as corrupt on ENODATA or EIO.
    
    Currently, scrub failing to capture these errors isn't all that
    impactful -- the checking code will exit to userspace with EIO/ENODATA,
    and xfs_scrub will log a complaint and exit with nonzero status.  Most
    people treat fsck tools failing as a sign that the fs is corrupt, but
    online fsck should mark the metadata bad and keep moving.
    
    Cc: [email protected] # v4.15
    Fixes: 4700d22980d459 ("xfs: create helpers to record and deal with scrub problems")
    Signed-off-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Carlos Maiolino <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>