Changelog in Linux kernel 5.10.252

 
ACPICA: Abort AML bytecode execution when executing AML_FATAL_OP [+ + +]
Author: Armin Wolf <W_Armin@gmx.de>
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 <W_Armin@gmx.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/3325491.5fSG56mABF@rafael.j.wysocki
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
APEI/GHES: ensure that won't go past CPER allocated record [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
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 <mchehab+huawei@kernel.org>
    Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    [ rjw: Subject tweaks ]
    Link: https://patch.msgid.link/4e70310a816577fabf37d94ed36cde4ad62b1e0a.1767871950.git.mchehab+huawei@kernel.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
apparmor: fix invalid deref of rawdata when export_binary is unset [+ + +]
Author: Georgia Garcia <georgia.garcia@canonical.com>
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 <georgia.garcia@canonical.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

apparmor: fix NULL sock in aa_sock_file_perm [+ + +]
Author: John Johansen <john.johansen@canonical.com>
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 <georgia.garcia@canonical.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

apparmor: fix rlimit for posix cpu timers [+ + +]
Author: John Johansen <john.johansen@canonical.com>
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 <georgia.garcia@canonical.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm64: Add support for TSV110 Spectre-BHB mitigation [+ + +]
Author: Jinqian Yang <yangjinqian1@huawei.com>
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 <yangjinqian1@huawei.com>
    Reviewed-by: Zenghui Yu <zenghui.yu@linux.dev>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: amlogic: axg: assign the MMC signal clocks [+ + +]
Author: Jerome Brunet <jbrunet@baylibre.com>
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 <jbrunet@baylibre.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-3-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: amlogic: g12: assign the MMC A signal clock [+ + +]
Author: Jerome Brunet <jbrunet@baylibre.com>
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 <jbrunet@baylibre.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-6-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: amlogic: g12: assign the MMC B and C signal clocks [+ + +]
Author: Jerome Brunet <jbrunet@baylibre.com>
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 <jbrunet@baylibre.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-5-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: amlogic: gx: assign the MMC signal clocks [+ + +]
Author: Jerome Brunet <jbrunet@baylibre.com>
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 <jbrunet@baylibre.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://patch.msgid.link/20260114-amlogic-mmc-clocks-followup-v1-4-a999fafbe0aa@baylibre.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdm630: Add qfprom subnodes [+ + +]
Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
Date:   Thu Jul 29 00:25:09 2021 +0200

    arm64: dts: qcom: sdm630: Add qfprom subnodes
    
    [ Upstream commit 142662f8f43c1725418ff13a2c83fb218d2b0911 ]
    
    These will be required for USB and Adreno support.
    
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
    Signed-off-by: Konrad Dybcio <konrad.dybcio@somainline.org>
    Link: https://lore.kernel.org/r/20210728222542.54269-7-konrad.dybcio@somainline.org
    [bjorn: y/_/-/ in gpu_speed_bin]
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Stable-dep-of: e814796dfcae ("arm64: dts: qcom: sdm630: fix gpu_speed_bin size")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdm630: correct QFPROM byte offsets [+ + +]
Author: Krzysztof Kozlowski <krzk@kernel.org>
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 <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20220505113802.243301-6-krzysztof.kozlowski@linaro.org
    Stable-dep-of: e814796dfcae ("arm64: dts: qcom: sdm630: fix gpu_speed_bin size")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdm630: fix gpu_speed_bin size [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
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 <dmitry.baryshkov@oss.qualcomm.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Reviewed-by: Alexey Minnekhanov <alexeymin@postmarketos.org>
    Link: https://lore.kernel.org/r/20251211-sdm630-fix-gpu-v2-1-92f0e736dba0@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: qcom: sdm845-db845c: specify power for WiFi CH1 [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
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 <konrad.dybcio@oss.qualcomm.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20260106-wcn3990-pwrctl-v2-8-0386204328be@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Do not enable hdmi_sound node on Pinebook Pro [+ + +]
Author: Jun Yan <jerrysteve1101@gmail.com>
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: stable@vger.kernel.org
    Fixes: 5a65505a69884 ("arm64: dts: rockchip: Add initial support for Pinebook Pro")
    Signed-off-by: Jun Yan <jerrysteve1101@gmail.com>
    Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Link: https://patch.msgid.link/20260116151253.9223-1-jerrysteve1101@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: tegra: smaug: Add usb-role-switch support [+ + +]
Author: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
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 <diogo.ivo@tecnico.ulisboa.pt>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: 9467/1: mm: Don't use %pK through printk [+ + +]
Author: Thomas Weissschuh <thomas.weissschuh@linutronix.de>
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 <thomas.weissschuh@linutronix.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: dts: allwinner: sun5i-a13-utoo-p66: delete "power-gpios" property [+ + +]
Author: Chen-Yu Tsai <wens@kernel.org>
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 <jernej.skrabec@gmail.com>
    Link: https://patch.msgid.link/20251225103616.3203473-4-wens@kernel.org
    Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
arm: dts: lpc32xx: add clocks property to Motor Control PWM device tree node [+ + +]
Author: Vladimir Zapolskiy <vz@mleia.com>
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 <vz@mleia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARM: dts: lpc32xx: Set motor PWM #pwm-cells property value to 3 cells [+ + +]
Author: Vladimir Zapolskiy <vz@mleia.com>
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 <u.kleine-koenig@baylibre.com>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Stable-dep-of: 71630e581a0e ("arm: dts: lpc32xx: add clocks property to Motor Control PWM device tree node")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ARM: VDSO: Patch out __vdso_clock_getres() if unavailable [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
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 <thomas.weissschuh@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@kernel.org>
    Link: https://patch.msgid.link/20251223-vdso-compat-time32-v1-6-97ea7a06a543@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ASoC: es8328: Add error unwind in resume [+ + +]
Author: Hsieh Hung-En <hungen3108@gmail.com>
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 <hungen3108@gmail.com>
    Link: https://patch.msgid.link/20260130160017.2630-6-hungen3108@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: wm8962: Add WM8962_ADC_MONOMIX to "3D Coefficients" mask [+ + +]
Author: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
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 <sebastian.krzyszkowiak@puri.sm>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20260105-wm8962-l5-fixes-v1-1-f4f4eeacf089@puri.sm
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: wm8962: Don't report a microphone if it's shorted to ground on plug [+ + +]
Author: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
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 <sebastian.krzyszkowiak@puri.sm>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20260105-wm8962-l5-fixes-v1-3-f4f4eeacf089@puri.sm
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ata: pata_ftide010: Fix some DMA timings [+ + +]
Author: Linus Walleij <linusw@kernel.org>
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: stable@vger.kernel.org
    Signed-off-by: Linus Walleij <linusw@kernel.org>
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
atm: fore200e: fix use-after-free in tasklets during device removal [+ + +]
Author: Duoming Zhou <duoming@zju.edu.cn>
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: stable@kernel.org
    Suggested-by: Jijie Shao <shaojijie@huawei.com>
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Reviewed-by: Jijie Shao <shaojijie@huawei.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20260210094537.9767-1-duoming@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
audit: add fchmodat2() to change attributes class [+ + +]
Author: Jeffrey Bencteux <jeff@bencteux.fr>
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 <jeff@bencteux.fr>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

audit: add missing syscalls to read class [+ + +]
Author: Jeffrey Bencteux <jeff@bencteux.fr>
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 <jeff@bencteux.fr>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
auxdisplay: arm-charlcd: fix release_mem_region() size [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
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 <fourier.thomas@gmail.com>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
binder: don't use %pK through printk [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
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 <thomas.weissschuh@linutronix.de>
    Acked-by: Carlos Llamas <cmllamas@google.com>
    Reviewed-by: Alice Ryhl <aliceryhl@google.com>
    Link: https://patch.msgid.link/20260107-restricted-pointers-binder-v1-1-181018bf3812@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
blk-mq-debugfs: add missing debugfs_mutex in blk_mq_debugfs_register_hctxs() [+ + +]
Author: Yu Kuai <yukuai@fnnas.com>
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 <yukuai@fnnas.com>
    Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: btusb: Add device ID for Realtek RTL8761BU [+ + +]
Author: Jacopo Scannella <code@charlie.cat>
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 <code@charlie.cat>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: Enforce key size of 16 bytes on FIPS level [+ + +]
Author: Archie Pusaka <apusaka@chromium.org>
Date:   Wed Nov 11 14:32:20 2020 +0800

    Bluetooth: Enforce key size of 16 bytes on FIPS level
    
    [ Upstream commit 288c06973daae4637f25a0d1bdaf65fdbf8455f9 ]
    
    According to the spec Ver 5.2, Vol 3, Part C, Sec 5.2.2.8:
    Device in security mode 4 level 4 shall enforce:
    128-bit equivalent strength for link and encryption keys required
    using FIPS approved algorithms (E0 not allowed, SAFER+ not allowed,
    and P-192 not allowed; encryption key not shortened)
    
    This patch rejects connection with key size below 16 for FIPS
    level services.
    
    Signed-off-by: Archie Pusaka <apusaka@chromium.org>
    Reviewed-by: Alain Michaud <alainm@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Stable-dep-of: 138d7eca445e ("Bluetooth: L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_conn: use mod_delayed_work for active mode timeout [+ + +]
Author: Stefan Sørensen <ssorensen@roku.com>
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 <ssorensen@roku.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: l2cap: Check encryption key size on incoming connection [+ + +]
Author: Frédéric Danis <frederic.danis@collabora.com>
Date:   Wed Apr 9 10:53:06 2025 +0200

    Bluetooth: l2cap: Check encryption key size on incoming connection
    
    [ Upstream commit 522e9ed157e3c21b4dd623c79967f72c21e45b78 ]
    
    This is required for passing GAP/SEC/SEM/BI-04-C PTS test case:
      Security Mode 4 Level 4, Responder - Invalid Encryption Key Size
      - 128 bit
    
    This tests the security key with size from 1 to 15 bytes while the
    Security Mode 4 Level 4 requests 16 bytes key size.
    
    Currently PTS fails with the following logs:
    - expected:Connection Response:
        Code: [3 (0x03)] Code
        Identifier: (lt)WildCard: Exists(gt)
        Length: [8 (0x0008)]
        Destination CID: (lt)WildCard: Exists(gt)
        Source CID: [64 (0x0040)]
        Result: [3 (0x0003)] Connection refused - Security block
        Status: (lt)WildCard: Exists(gt),
    but received:Connection Response:
        Code: [3 (0x03)] Code
        Identifier: [1 (0x01)]
        Length: [8 (0x0008)]
        Destination CID: [64 (0x0040)]
        Source CID: [64 (0x0040)]
        Result: [0 (0x0000)] Connection Successful
        Status: [0 (0x0000)] No further information available
    
    And HCI logs:
    < HCI Command: Read Encrypti.. (0x05|0x0008) plen 2
            Handle: 14 Address: 00:1B:DC:F2:24:10 (Vencer Co., Ltd.)
    > HCI Event: Command Complete (0x0e) plen 7
          Read Encryption Key Size (0x05|0x0008) ncmd 1
            Status: Success (0x00)
            Handle: 14 Address: 00:1B:DC:F2:24:10 (Vencer Co., Ltd.)
            Key size: 7
    > ACL Data RX: Handle 14 flags 0x02 dlen 12
          L2CAP: Connection Request (0x02) ident 1 len 4
            PSM: 4097 (0x1001)
            Source CID: 64
    < ACL Data TX: Handle 14 flags 0x00 dlen 16
          L2CAP: Connection Response (0x03) ident 1 len 8
            Destination CID: 64
            Source CID: 64
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    
    Fixes: 288c06973daa ("Bluetooth: Enforce key size of 16 bytes on FIPS level")
    Signed-off-by: Frédéric Danis <frederic.danis@collabora.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Stable-dep-of: 138d7eca445e ("Bluetooth: L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: L2CAP: Fix invalid response to L2CAP_ECRED_RECONF_REQ [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
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 <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
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 <luiz.von.dentz@intel.com>
    Tested-by: Christian Eggers <ceggers@arri.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: L2CAP: Fix not checking l2cap_chan security level [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Wed May 7 15:00:30 2025 -0400

    Bluetooth: L2CAP: Fix not checking l2cap_chan security level
    
    [ Upstream commit 7af8479d9eb4319b4ba7b47a8c4d2c55af1c31e1 ]
    
    l2cap_check_enc_key_size shall check the security level of the
    l2cap_chan rather than the hci_conn since for incoming connection
    request that may be different as hci_conn may already been
    encrypted using a different security level.
    
    Fixes: 522e9ed157e3 ("Bluetooth: l2cap: Check encryption key size on incoming connection")
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Stable-dep-of: 138d7eca445e ("Bluetooth: L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: L2CAP: Fix response to L2CAP_ECRED_CONN_REQ [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
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 <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bonding: alb: fix UAF in rlb_arp_recv during bond up/down [+ + +]
Author: Hangbin Liu <liuhangbin@gmail.com>
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 <liali@redhat.com>
    Fixes: 3aba891dde38 ("bonding: move processing of recv handlers into handle_frame()")
    Reviewed-by: Nikolay Aleksandrov <nikolay@nvidia.com>
    Acked-by: Jay Vosburgh <jv@jvosburgh.net>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Link: https://patch.msgid.link/20260218060919.101574-1-liuhangbin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bonding: only set speed/duplex to unknown, if getting speed failed [+ + +]
Author: Thomas Bogendoerfer <tbogendoerfer@suse.de>
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 <tbogendoerfer@suse.de>
    Acked-by: Jay Vosburgh <jv@jvosburgh.net>
    Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Link: https://patch.msgid.link/20260203141153.51581-1-tbogendoerfer@suse.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: verifier improvement in 32bit shift sign extension pattern [+ + +]
Author: Cupertino Miranda <cupertino.miranda@oracle.com>
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  <cupertino.miranda@oracle.com>
    Signed-off-by: Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
    Acked-by: Eduard Zingerman <eddyz87@gmail.com>
    Cc: David Faust  <david.faust@oracle.com>
    Cc: Jose Marchesi  <jose.marchesi@oracle.com>
    Cc: Elena Zannoni  <elena.zannoni@oracle.com>
    Link: https://lore.kernel.org/r/20251202180220.11128-2-cupertino.miranda@oracle.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: continue trimming remaining devices on failure [+ + +]
Author: jinbaohong <jinbaohong@synology.com>
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: stable@vger.kernel.org # 5.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Signed-off-by: jinbaohong <jinbaohong@synology.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: fix invalid leaf access in btrfs_quota_enable() if ref key not found [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
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 <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: qgroup: return correct error when deleting qgroup relation item [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
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 <johannes.thumshirn@wdc.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bus: fsl-mc: fix an error handling in fsl_mc_device_add() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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: stable@vger.kernel.org
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/all/b767348e-d89c-416e-acea-1ebbff3bea20@stanley.mountain/
    Signed-off-by: Su Hui <suhui@nfschina.com>
    Suggested-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Link: https://lore.kernel.org/r/20260124102054.1613093-1-lihaoxiang@isrc.iscas.ac.cn
    Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ceph: supply snapshot context in ceph_zero_partial_object() [+ + +]
Author: ethanwu <ethanwu@synology.com>
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 fs_a@.a=/ /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: stable@vger.kernel.org
    Fixes: ad7a60de882ac ("ceph: punch hole support")
    Signed-off-by: ethanwu <ethanwu@synology.com>
    Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
    Tested-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clk: meson: gxbb: Limit the HDMI PLL OD to /4 on GXL/GXM SoCs [+ + +]
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
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 <martin.blumenstingl@googlemail.com>
    Link: https://lore.kernel.org/r/20260105204710.447779-2-martin.blumenstingl@googlemail.com
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: microchip: core: correct return value on *_get_parent() [+ + +]
Author: Brian Masney <bmasney@redhat.com>
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 <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/r/202512050233.R9hAWsJN-lkp@intel.com/
    Signed-off-by: Brian Masney <bmasney@redhat.com>
    Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Link: https://lore.kernel.org/r/20251205-clk-microchip-fixes-v3-2-a02190705e47@redhat.com
    Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: Move clk_{save,restore}_context() to COMMON_CLK section [+ + +]
Author: Geert Uytterhoeven <geert@linux-m68k.org>
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 <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202511301553.eaEz1nEW-lkp@intel.com/
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: qcom: dispcc-sdm845: convert to parent data [+ + +]
Author: Dmitry Baryshkov <lumag@kernel.org>
Date:   Tue Apr 6 01:47:21 2021 +0300

    clk: qcom: dispcc-sdm845: convert to parent data
    
    [ Upstream commit 7acd22512907c3afe07cfd759d47a5f8eb8fb04f ]
    
    Convert the clock driver to specify parent data rather than parent
    names, to actually bind using 'clock-names' specified in the DTS rather
    than global clock names.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20210405224743.590029-12-dmitry.baryshkov@linaro.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Stable-dep-of: a1d63493634e ("clk: qcom: dispcc-sdm845: Enable parents for pixel clocks")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: qcom: dispcc-sdm845: Enable parents for pixel clocks [+ + +]
Author: Petr Hodina <petr.hodina@protonmail.com>
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 <petr.hodina@protonmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Reviewed-by: David Heidelberg <david@ixit.cz>
    Link: https://lore.kernel.org/r/20260107-stability-discussion-v2-1-ef7717b435ff@protonmail.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: qcom: Return correct error code in qcom_cc_probe_by_index() [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
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 <vulab@iscas.ac.cn>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20251217041338.2432-1-vulab@iscas.ac.cn
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: tegra: tegra124-emc: Fix potential memory leak in tegra124_clk_register_emc() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Reviewed-by: Brian Masney <bmasney@redhat.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clocksource/drivers/sh_tmu: Always leave device running after probe [+ + +]
Author: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
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 <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://patch.msgid.link/20251202221341.1856773-1-niklas.soderlund+renesas@ragnatech.se
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clocksource/drivers/timer-integrator-ap: Add missing Kconfig dependency on OF [+ + +]
Author: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
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/202601152233.og6LdeUo-lkp@intel.com/
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://patch.msgid.link/20260116111723.10585-1-bartosz.golaszewski@oss.qualcomm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
coresight: etm3x: Fix cpulocked warning on cpuhp [+ + +]
Author: Antonio Borneo <antonio.borneo@foss.st.com>
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 <antonio.borneo@foss.st.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/20260108152427.357379-1-antonio.borneo@foss.st.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cpuidle: Skip governor when only one idle state is available [+ + +]
Author: Aboorva Devarajan <aboorvad@linux.ibm.com>
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 <aboorvad@linux.ibm.com>
    Reviewed-by: Christian Loehle <christian.loehle@arm.com>
    Link: https://patch.msgid.link/20260216185005.1131593-2-aboorvad@linux.ibm.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: cavium - fix dma_free_coherent() size [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
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 <fourier.thomas@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: ccp - Add an S4 restore flow [+ + +]
Author: Mario Limonciello (AMD) <superm1@kernel.org>
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 <lars.francke@gmail.com>
    Closes: https://lore.kernel.org/platform-driver-x86/CAD-Ua_gfJnQSo8ucS_7ZwzuhoBRJ14zXP7s8b-zX3ZcxcyWePw@mail.gmail.com/
    Tested-by: Yijun Shen <Yijun.Shen@Dell.com>
    Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
    Reviewed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
    Link: https://patch.msgid.link/20260116041132.153674-4-superm1@kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: octeontx - fix dma_free_coherent() size [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
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 <fourier.thomas@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm mpath: make pg_init_delay_msecs settable [+ + +]
Author: Benjamin Marzinski <bmarzins@redhat.com>
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 <bmarzins@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-integrity: fix a typo in the code for write/discard race [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
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: stable@vger.kernel.org
    Fixes: 31843edab7cb ("dm integrity: improve discard in journal mode")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-unstripe: fix mapping bug when there are multiple targets in a table [+ + +]
Author: Matt Whitlock <kernel@mattwhitlock.name>
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 <kernel@mattwhitlock.name>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 18a5bf270532 ("dm: add unstriped target")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm-verity: correctly handle dm_bufio_client_create() failure [+ + +]
Author: Eric Biggers <ebiggers@kernel.org>
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: stable@vger.kernel.org
    Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Eric Biggers <ebiggers@kernel.org>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dm: clear cloned request bio pointer when last clone bio completes [+ + +]
Author: Michael Liang <mliang@purestorage.com>
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 <mliang@purestorage.com>
    Reviewed-by: Mohamed Khalfella <mkhalfella@purestorage.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dm: remove fake timeout to avoid leak request [+ + +]
Author: Ding Hui <dinghui@sangfor.com.cn>
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 <dinghui@sangfor.com.cn>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dma: dma-axi-dmac: fix SW cyclic transfers [+ + +]
Author: Nuno Sá <nuno.sa@analog.com>
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á <nuno.sa@analog.com>
    base-commit: 398035178503bf662281bbffb4bebce1460a4bc5
    change-id: 20251104-axi-dmac-fixes-and-improvs-e3ad512a329c
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Link: https://patch.msgid.link/20251104-axi-dmac-fixes-and-improvs-v1-1-3e6fd9328f72@analog.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
dmaengine: mediatek: uart-apdma: Fix above 4G addressing TX/RX [+ + +]
Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
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 <angelogioacchino.delregno@collabora.com>
    Link: https://patch.msgid.link/20251113122229.23998-6-angelogioacchino.delregno@collabora.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drivers: iio: mpu3050: use dev_err_probe for regulator request [+ + +]
Author: Svyatoslav Ryhel <clamor95@gmail.com>
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 <clamor95@gmail.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Avoid updating surface with the same surface under MPO [+ + +]
Author: Wayne Lin <Wayne.Lin@amd.com>
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 <harry.wentland@amd.com>
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: Add HAINAN clock adjustment [+ + +]
Author: decce6 <decce6@proton.me>
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 <decce6@proton.me>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: keep vga memory on MacBooks with switchable graphics [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
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 <mario.kleiner.de@gmail.com>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4302
    Cc: stable@vger.kernel.org
    Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: Use explicit VCN instance 0 in SR-IOV init [+ + +]
Author: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
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 <dan.carpenter@linaro.org>
    Cc: darlington Opara <darlington.opara@amd.com>
    Cc: Jinage Zhao <jiange.zhao@amd.com>
    Cc: Monk Liu <Monk.Liu@amd.com>
    Cc: Emily Deng <Emily.Deng@amd.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
    Reviewed-by: Emily Deng <Emily.Deng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdkfd: Fix out-of-bounds write in kfd_event_page_set() [+ + +]
Author: Sunday Clement <Sunday.Clement@amd.com>
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 <Sunday.Clement@amd.com>
    Reviewed-by: Alexander Deucher <Alexander.Deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/atmel-hlcdc: fix memory leak from the atomic_destroy_state callback [+ + +]
Author: Ludovic Desroches <ludovic.desroches@microchip.com>
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 <ludovic.desroches@microchip.com>
    Reviewed-by: Manikandan Muralidharan <manikandan.m@microchip.com>
    Link: https://patch.msgid.link/20251024-lcd_fixes_mainlining-v1-1-79b615130dc3@microchip.com
    Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/atmel-hlcdc: fix use-after-free of drm_crtc_commit after release [+ + +]
Author: Ludovic Desroches <ludovic.desroches@microchip.com>
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 <ludovic.desroches@microchip.com>
    Reviewed-by: Manikandan Muralidharan <manikandan.m@microchip.com>
    Link: https://patch.msgid.link/20251024-lcd_fixes_mainlining-v1-2-79b615130dc3@microchip.com
    Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/acpi: free _DSM package when no connectors [+ + +]
Author: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
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 <kaushlendra.kumar@intel.com>
    Fixes: 337d7a1621c7 ("drm/i915: Fix invalid access to ACPI _DSM objects")
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patch.msgid.link/20260109032549.1826303-1-kaushlendra.kumar@intel.com
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    (cherry picked from commit c0a27a0ca8a34e96d08bb05a2c5d5ccf63fb8dc0)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/radeon: Add HAINAN clock adjustment [+ + +]
Author: decce6 <decce6@proton.me>
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 <decce6@proton.me>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm: Account property blob allocations to memcg [+ + +]
Author: Xiao Kan <814091656@qq.com>
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 <814091656@qq.com>
    Signed-off-by: Xiao Kan <xiao.kan@samsung.com>
    Link: https://patch.msgid.link/tencent_D12AA2DEDE6F359E1AF59405242FB7A5FD05@qq.com
    Signed-off-by: Maxime Ripard <mripard@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm: of: drm_of_panel_bridge_remove(): fix device_node leak [+ + +]
Author: Luca Ceresoli <luca.ceresoli@bootlin.com>
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: stable@vger.kernel.org # v4.15
    Acked-by: Maxime Ripard <mripard@kernel.org>
    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 <luca.ceresoli@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EDAC/altera: Remove IRQF_ONESHOT [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
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 <bigeasy@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@kernel.org>
    Link: https://patch.msgid.link/20260128095540.863589-11-bigeasy@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EDAC/i5000: Fix snprintf() size calculation in calculate_dimm_size() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
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 <dan.carpenter@linaro.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Link: https://patch.msgid.link/07cd652c51e77aad5a8350e1a7cd9407e5bbe373.1765290801.git.dan.carpenter@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EDAC/i5400: Fix snprintf() limit calculation in calculate_dimm_size() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
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 <dan.carpenter@linaro.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    Link: https://patch.msgid.link/ccd06b91748e7ed8e33eeb2ff1e7b98700879304.1765290801.git.dan.carpenter@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
EFI/CPER: don't dump the entire memory region [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
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 <mchehab+huawei@kernel.org>
    Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    [ rjw: Subject tweaks ]
    Link: https://patch.msgid.link/1752b5ba63a3e2f148ddee813b36c996cc617e86.1767871950.git.mchehab+huawei@kernel.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

EFI/CPER: don't go past the ARM processor CPER record buffer [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
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 <mchehab+huawei@kernel.org>
    Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    [ rjw: Subject and changelog tweaks ]
    Link: https://patch.msgid.link/41cd9f6b3ace3cdff7a5e864890849e4b1c58b63.1767871950.git.mchehab+huawei@kernel.org
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext4: don't cache extent during splitting extent [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
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 <yi.zhang@huawei.com>
    Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
    Reviewed-by: Baokun Li <libaokun1@huawei.com>
    Cc: stable@kernel.org
    Message-ID: <20251129103247.686136-6-yi.zhang@huaweicloud.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ext4: fix memory leak in ext4_ext_shift_extents() [+ + +]
Author: Zilin Guan <zilin@seu.edu.cn>
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 <zilin@seu.edu.cn>
    Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Baokun Li <libaokun1@huawei.com>
    Link: https://patch.msgid.link/20251225084800.905701-1-zilin@seu.edu.cn
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fat: avoid parent link count underflow in rmdir [+ + +]
Author: Zhiyu Zhang <zhiyuzhang999@gmail.com>
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/20260101111148.1437-1-zhiyuzhang999@gmail.com
    Fixes: 9a53c3a783c2 ("[PATCH] r/o bind mounts: unlink: monitor i_nlink")
    Signed-off-by: Zhiyu Zhang <zhiyuzhang999@gmail.com>
    Reported-by: Zhiyu Zhang <zhiyuzhang999@gmail.com>
    Closes: https://lore.kernel.org/linux-fsdevel/aVN06OKsKxZe6-Kv@casper.infradead.org/T/#t
    Tested-by: Zhiyu Zhang <zhiyuzhang999@gmail.com>
    Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fbdev: au1200fb: Fix a memory leak in au1200fb_drv_probe() [+ + +]
Author: Felix Gu <ustc.gu@gmail.com>
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 <ustc.gu@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fbdev: ffb: fix corrupted video output on Sun FFB1 [+ + +]
Author: René Rebe <rene@exactco.de>
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 <rene@exactco.de>
    Cc: stable@kernel.org
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fbdev: of: display_timing: fix refcount leak in of_get_display_timings() [+ + +]
Author: Weigang He <geoffreyhe2@gmail.com>
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: stable@vger.kernel.org
    Signed-off-by: Weigang He <geoffreyhe2@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fbdev: vt8500lcdfb: fix missing dma_free_coherent() [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
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: <stable@vger.kernel.org>
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: fix it87_wdt early reboot by reporting running timer [+ + +]
Author: René Rebe <rene@exactco.de>
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 <rene@exactco.de>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fpga: dfl: use subsys_initcall to allow built-in drivers to be added [+ + +]
Author: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
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: stable@vger.kernel.org
    Fixes: 9ba3a0aa09fe ("fpga: dfl: create a dfl bus type to support DFL devices")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
    Link: https://lore.kernel.org/r/20251215-dfl_subsys-v1-1-21807bad6b10@igalia.com
    Reviewed-by: Xu Yilun <yilun.xu@intel.com>
    Signed-off-by: Xu Yilun <yilun.xu@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs: add for 'init_fs' [+ + +]
Author: Ben Dooks <ben.dooks@codethink.co.uk>
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 <ben.dooks@codethink.co.uk>
    Link: https://patch.msgid.link/20260108115856.238027-1-ben.dooks@codethink.co.uk
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gfs2: Add metapath_dibh helper [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
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 <agruenba@redhat.com>
    Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: Add new gfs2_iomap_get helper [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Sat Mar 27 21:56:40 2021 +0100

    gfs2: Add new gfs2_iomap_get helper
    
    [ Upstream commit 54992257fe4bb9f76f66b3863492aa8cc5567790 ]
    
    Rename the current gfs2_iomap_get and gfs2_iomap_alloc functions to __*.
    Add a new gfs2_iomap_get helper that doesn't expose struct metapath.
    Rename gfs2_iomap_get_alloc to gfs2_iomap_alloc.  Use the new helpers
    where they make sense.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: Add wrapper for iomap_file_buffered_write [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Thu May 13 16:13:54 2021 +0200

    gfs2: Add wrapper for iomap_file_buffered_write
    
    [ Upstream commit 2eb7509a05443048fb4df60b782de3f03c6c298b ]
    
    Add a wrapper around iomap_file_buffered_write.  We'll add code for when
    the operation needs to be retried here later.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: Fix use-after-free in iomap inline data write path [+ + +]
Author: Deepanshu Kartikey <kartikey406@gmail.com>
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: syzbot+ea1cd4aa4d1e98458a55@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=ea1cd4aa4d1e98458a55
    Fixes: d0a22a4b03b8 ("gfs2: Fix iomap write page reclaim deadlock")
    Signed-off-by: Deepanshu Kartikey <kartikey406@gmail.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: Move the inode glock locking to gfs2_file_buffered_write [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Wed Aug 11 21:50:14 2021 +0200

    gfs2: Move the inode glock locking to gfs2_file_buffered_write
    
    [ Upstream commit b924bdab7445946e2ed364a0e6e249d36f1f1158 ]
    
    So far, for buffered writes, we were taking the inode glock in
    gfs2_iomap_begin and dropping it in gfs2_iomap_end with the intention of
    not holding the inode glock while iomap_write_actor faults in user
    pages.  It turns out that iomap_write_actor is called inside iomap_begin
    ... iomap_end, so the user pages were still faulted in while holding the
    inode glock and the locking code in iomap_begin / iomap_end was
    completely pointless.
    
    Move the locking into gfs2_file_buffered_write instead.  We'll take care
    of the potential deadlocks due to faulting in user pages while holding a
    glock in a subsequent patch.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: Replace gfs2_lblk_to_dblk with gfs2_get_extent [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Sat Mar 27 22:05:14 2021 +0100

    gfs2: Replace gfs2_lblk_to_dblk with gfs2_get_extent
    
    [ Upstream commit 152f58c9af21abf913699e671b425fd38447b170 ]
    
    We don't need two very similar functions for mapping logical blocks to physical
    blocks.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

gfs2: Turn gfs2_extent_map into gfs2_{get,alloc}_extent [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Wed Mar 31 23:17:38 2021 +0200

    gfs2: Turn gfs2_extent_map into gfs2_{get,alloc}_extent
    
    [ Upstream commit 9153dac13a6966b63183bac450d5cd39b07cc85c ]
    
    Convert gfs2_extent_map to iomap and split it into gfs2_get_extent and
    gfs2_alloc_extent.  Instead of hardcoding the extent size, pass it in
    via the extlen parameter.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Stable-dep-of: faddeb848305 ("gfs2: Fix use-after-free in iomap inline data write path")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpio: aspeed-sgpio: Change the macro to support deferred probe [+ + +]
Author: Billy Tsai <billy_tsai@aspeedtech.com>
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 <linusw@kernel.org>
    Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
    Link: https://lore.kernel.org/r/20260123-upstream_sgpio-v2-1-69cfd1631400@aspeedtech.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hfsplus: fix volume corruption issue for generic/498 [+ + +]
Author: Viacheslav Dubeyko <slava@dubeyko.com>
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 <slava@dubeyko.com>
    cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    cc: Yangtao Li <frank.li@vivo.com>
    cc: linux-fsdevel@vger.kernel.org
    Link: https://lore.kernel.org/r/20251207035821.3863657-1-slava@dubeyko.com
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hfsplus: pretend special inodes as regular files [+ + +]
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
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 <syzbot+895c23f6917da440ed0d@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=895c23f6917da440ed0d
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Link: https://lore.kernel.org/r/d0a07b1b-8b73-4002-8e29-e2bd56871262@I-love.SAKURA.ne.jp
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

hfsplus: return error when node already exists in hfs_bnode_create [+ + +]
Author: Shardul Bankar <shardul.b@mpiricsoftware.com>
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: syzbot+1c8ff72d0cd8a50dfeaa@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?extid=1c8ff72d0cd8a50dfeaa
    Link: https://lore.kernel.org/all/784415834694f39902088fa8946850fc1779a318.camel@ibm.com/
    Fixes: 634725a92938 ("[PATCH] hfs: cleanup HFS+ prints")
    Signed-off-by: Shardul Bankar <shardul.b@mpiricsoftware.com>
    Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Link: https://lore.kernel.org/r/20251229204938.1907089-1-shardul.b@mpiricsoftware.com
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
HID: hid-pl: handle probe errors [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
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: stable@vger.kernel.org
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: logitech-hidpp: Check maxfield in hidpp_get_report_length() [+ + +]
Author: Günther Noack <gnoack@google.com>
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: stable@vger.kernel.org
    Signed-off-by: Günther Noack <gnoack@google.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: magicmouse: Do not crash on missing msc->input [+ + +]
Author: Günther Noack <gnoack@google.com>
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: stable@vger.kernel.org
    Signed-off-by: Günther Noack <gnoack@google.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: multitouch: add eGalaxTouch EXC3188 support [+ + +]
Author: Thorsten Schmelzer <tschmelzer@topcon.com>
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 <tschmelzer@topcon.com>
    Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

HID: prodikeys: Check presence of pm->input_ep82 [+ + +]
Author: Günther Noack <gnoack@google.com>
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: stable@vger.kernel.org
    Signed-off-by: Günther Noack <gnoack@google.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hrtimer: Fix trace oddity [+ + +]
Author: Thomas Gleixner <tglx@kernel.org>
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) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://patch.msgid.link/20260121143208.219595606@infradead.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hyper-v: Mark inner union in hv_kvp_exchg_msg_value as packed [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
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 <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202512140314.DzDxpIVn-lkp@intel.com/
    Reported-by: Nathan Chancellor <nathan@kernel.org>
    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 <arnd@arndb.de>
    Link: https://lore.kernel.org/linux-kbuild/29b2e736-d462-45b7-a0a9-85f8d8a3de56@app.fastmail.com/
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Acked-by: Wei Liu (Microsoft) <wei.liu@kernel.org>
    Tested-by: Nicolas Schier <nsc@kernel.org>
    Reviewed-by: Nicolas Schier <nsc@kernel.org>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://patch.msgid.link/20260115-kbuild-alignment-vbox-v1-1-076aed1623ff@linutronix.de
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i3c: Move device name assignment after i3c_bus_init [+ + +]
Author: Billy Tsai <billy_tsai@aspeedtech.com>
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 <billy_tsai@aspeedtech.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://patch.msgid.link/20260112-upstream_i3c_fix-v1-1-cbbf2cb71809@aspeedtech.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i3c: remove i2c board info from i2c_dev_desc [+ + +]
Author: Jamie Iles <quic_jiles@quicinc.com>
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 <alexandre.belloni@bootlin.com>
    Signed-off-by: Jamie Iles <quic_jiles@quicinc.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20220117174816.1963463-2-quic_jiles@quicinc.com
    Stable-dep-of: 3502cea99c7c ("i3c: Move device name assignment after i3c_bus_init")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iio: gyro: itg3200: Fix unchecked return value in read_raw [+ + +]
Author: Antoniu Miclaus <antoniu.miclaus@analog.com>
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 <antoniu.miclaus@analog.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iio: magnetometer: Remove IRQF_ONESHOT [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
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 <geert+renesas@glider.be>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
    Reviewed-by: Nuno Sá <nuno.sa@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iio: sca3000: Fix a resource leak in sca3000_probe() [+ + +]
Author: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
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 <harshit.m.mogalapalli@oracle.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
include: uapi: netfilter_bridge.h: Cover for musl libc [+ + +]
Author: Phil Sutter <phil@nwl.cc>
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 <hi@alyssa.is>
    Suggested-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iomap: fix submission side handling of completion side errors [+ + +]
Author: Christoph Hellwig <hch@lst.de>
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 <hch@lst.de>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/arm-smmu-v3: Improve CMDQ lock fairness and efficiency [+ + +]
Author: Alexander Grest <Alexander.Grest@microsoft.com>
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 <smostafa@google.com>
    Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
    Signed-off-by: Alexander Grest <Alexander.Grest@microsoft.com>
    Signed-off-by: Jacob Pan <jacob.pan@linux.microsoft.com>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iommu/vt-d: Flush cache for PASID table before using it [+ + +]
Author: Dmytro Maluka <dmaluka@chromium.org>
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 <dmaluka@chromium.org>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Link: https://lore.kernel.org/r/20251221123508.37495-1-dmaluka@chromium.org
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iommu/vt-d: Flush dev-IOTLB only when PCIe device is accessible in scalable mode [+ + +]
Author: Jinhui Guo <guojinhui.liam@bytedance.com>
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: stable@vger.kernel.org
    Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
    Link: https://lore.kernel.org/r/20251211035946.2071-3-guojinhui.liam@bytedance.com
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ionic: Rate limit unknown xcvr type messages [+ + +]
Author: Eric Joyner <eric.joyner@amd.com>
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 <eric.joyner@amd.com>
    Reviewed-by: Brett Creeley <brett.creeley@amd.com>
    Link: https://patch.msgid.link/20260206224651.1491-1-eric.joyner@amd.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv4: fib: Annotate access to struct fib_alias.fa_state. [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
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: syzbot+d24f940f770afda885cf@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/69783ead.050a0220.c9109.0013.GAE@google.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20260127043528.514160-1-kuniyu@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv6: fix a race in ip6_sock_set_v6only() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
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 <edumazet@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>
    Link: https://patch.msgid.link/20260216102202.3343588-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
jfs: Add missing set_freezable() for freezable kthread [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
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 <vulab@iscas.ac.cn>
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

jfs: nlink overflow in jfs_rename [+ + +]
Author: Jori Koolstra <jkoolstra@xs4all.nl>
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 <jkoolstra@xs4all.nl>
    Reported-by: syzbot+9131ddfd7870623b719f@syzkaller.appspotmail.com
    Closes: https://syzbot.org/bug?extid=9131ddfd7870623b719f
    Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kexec: derive purgatory entry from symbol [+ + +]
Author: Li Chen <me@linux.beauty>
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
    
    [me@linux.beauty: move helper to avoid forward declaration, per Baoquan]
      Link: https://lkml.kernel.org/r/20260128043511.316860-1-me@linux.beauty
    Link: https://lkml.kernel.org/r/20260120124005.148381-1-me@linux.beauty
    Fixes: 8652d44f466a ("kexec: support purgatories with .text.hot sections")
    Signed-off-by: Li Chen <me@linux.beauty>
    Acked-by: Baoquan He <bhe@redhat.com>
    Cc: Alexander Graf <graf@amazon.com>
    Cc: Eric Biggers <ebiggers@kernel.org>
    Cc: Li Chen <me@linux.beauty>
    Cc: Philipp Rudo <prudo@redhat.com>
    Cc: Ricardo Ribalda Delgado <ribalda@chromium.org>
    Cc: Ross Zwisler <zwisler@google.com>
    Cc: Sourabh Jain <sourabhjain@linux.ibm.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
lan78xx: Fix memory allocation bug [+ + +]
Author: John Efstathiades <john.efstathiades@pebblebay.com>
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 <john.efstathiades@pebblebay.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: f1e2f0ce704e ("net: usb: lan78xx: scan all MDIO addresses on LAN7801")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

lan78xx: Fix race condition in disconnect handling [+ + +]
Author: John Efstathiades <john.efstathiades@pebblebay.com>
Date:   Tue Aug 24 19:56:12 2021 +0100

    lan78xx: Fix race condition in disconnect handling
    
    [ Upstream commit 77dfff5bb7e20ce1eaaf4c599d9c54a8f4331124 ]
    
    If there is a device disconnect at roughly the same time as a
    deferred PHY link reset there is a race condition that can result
    in a kernel lock up due to a null pointer dereference in the
    driver's deferred work handling routine lan78xx_delayedwork().
    The following changes fix this problem.
    
    Add new status flag EVENT_DEV_DISCONNECT to indicate when the
    device has been removed and use it to prevent operations, such as
    register access, that will fail once the device is removed.
    
    Stop processing of deferred work items when the driver's USB
    disconnect handler is invoked.
    
    Disconnect the PHY only after the network device has been
    unregistered and all delayed work has been cancelled.
    
    Signed-off-by: John Efstathiades <john.efstathiades@pebblebay.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: f1e2f0ce704e ("net: usb: lan78xx: scan all MDIO addresses on LAN7801")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

lan78xx: Remove unused pause frame queue [+ + +]
Author: John Efstathiades <john.efstathiades@pebblebay.com>
Date:   Tue Aug 24 19:56:07 2021 +0100

    lan78xx: Remove unused pause frame queue
    
    [ Upstream commit 40b8452fa8b4567ab7d862c7d4c3d02f635f17fd ]
    
    Remove the pause frame queue from the driver. It is initialised
    but not actually used.
    
    Signed-off-by: John Efstathiades <john.efstathiades@pebblebay.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: f1e2f0ce704e ("net: usb: lan78xx: scan all MDIO addresses on LAN7801")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 5.10.252 [+ + +]
Author: Sasha Levin <sashal@kernel.org>
Date:   Wed Mar 4 07:38:34 2026 -0500

    Linux 5.10.252
    
    Tested-by: Barry K. Nathan <barryn@pobox.com>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Woody Suwalski <terraluna977@gmail.com>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
m68k: nommu: fix memmove() with differently aligned src and dest for 68000 [+ + +]
Author: Daniel Palmer <daniel@thingy.jp>
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 <daniel@thingy.jp>
    Signed-off-by: Greg Ungerer <gerg@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
macvlan: observe an RCU grace period in macvlan_common_newlink() error path [+ + +]
Author: Eric Dumazet <edumazet@google.com>
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 <edumazet@google.com>
    Reported-by: valis <sec@valis.email>
    Link: https://patch.msgid.link/20260213142557.3059043-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mailbox: bcm-ferxrm-mailbox: Use default primary handler [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
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 <bigeasy@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@kernel.org>
    Link: https://patch.msgid.link/20260128095540.863589-5-bigeasy@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mailbox: sprd: clear delivery flag before handling TX done [+ + +]
Author: Otto Pflüger <otto.pflueger@abscue.de>
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 <otto.pflueger@abscue.de>
    Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md/bitmap: fix GPF in write_page caused by resize race [+ + +]
Author: Jack Wang <jinpu.wang@ionos.com>
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/20260120102456.25169-1-jinpu.wang@ionos.com
    Closes: https://lore.kernel.org/linux-raid/CAMGffE=Mbfp=7xD_hYxXk1PAaCZNSEAVeQGKGy7YF9f2S4=NEA@mail.gmail.com/T/#u
    Cc: stable@vger.kernel.org
    Fixes: d60b479d177a ("md/bitmap: add bitmap_resize function to allow bitmap resizing.")
    Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
    Signed-off-by: Yu Kuai <yukuai@fnnas.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
md/raid10: fix any_working flag handling in raid10_sync_request [+ + +]
Author: Li Nan <linan122@huawei.com>
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/20260105110300.1442509-11-linan666@huaweicloud.com
    Fixes: e875ecea266a ("md/raid10 record bad blocks as needed during recovery.")
    Signed-off-by: Li Nan <linan122@huawei.com>
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Yu Kuai <yukuai@fnnas.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: adv7180: fix frame interval in progressive mode [+ + +]
Author: Thorsten Schmelzer <tschmelzer@topcon.com>
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 <tschmelzer@topcon.com>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: cx23885: Add missing unmap in snd_cx23885_hw_params() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: cx25821: Add missing unmap in snd_cx25821_hw_params() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: cx25821: Fix a resource leak in cx25821_dev_setup() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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 <lihaoxiang@isrc.iscas.ac.cn>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: cx88: Add missing unmap in snd_cx88_hw_params() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: dvb-core: dmxdevfilter must always flush bufs [+ + +]
Author: Hans Verkuil <hverkuil@kernel.org>
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 <hverkuil@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: i2c/tw9903: Fix potential memory leak in tw9903_probe() [+ + +]
Author: Abdun Nihaal <nihaal@cse.iitm.ac.in>
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: stable@vger.kernel.org
    Fixes: 0890ec19c65d ("[media] tw9903: add new tw9903 video decoder")
    Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: i2c/tw9906: Fix potential memory leak in tw9906_probe() [+ + +]
Author: Abdun Nihaal <nihaal@cse.iitm.ac.in>
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: stable@vger.kernel.org
    Fixes: a000e9a02b58 ("[media] tw9906: add Techwell tw9906 video decoder")
    Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: mtk-mdp: Fix a reference leak bug in mtk_mdp_remove() [+ + +]
Author: Haoxiang Li <haoxiang_li2024@163.com>
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: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: mtk-mdp: Fix error handling in probe function [+ + +]
Author: Haoxiang Li <haoxiang_li2024@163.com>
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: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
    Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: omap3isp: isp_video_mbus_to_pix/pix_to_mbus fixes [+ + +]
Author: Hans Verkuil <hverkuil+cisco@kernel.org>
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 <hverkuil+cisco@kernel.org>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: omap3isp: isppreview: always clamp in preview_try_format() [+ + +]
Author: Hans Verkuil <hverkuil+cisco@kernel.org>
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 <hverkuil+cisco@kernel.org>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: omap3isp: set initial format [+ + +]
Author: Hans Verkuil <hverkuil+cisco@kernel.org>
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 <hverkuil+cisco@kernel.org>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: pvrusb2: fix URB leak in pvr2_send_request_ex [+ + +]
Author: Szymon Wilczek <swilczek.lx@gmail.com>
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: syzbot+405dcd13121ff75a9e16@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=405dcd13121ff75a9e16
    Signed-off-by: Szymon Wilczek <szymonwilczek@gmx.com>
    Acked-by: Mike Isely <isely@pobox.com>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: radio-keene: fix memory leak in error path [+ + +]
Author: Shaurya Rane <ssrane_b23@ee.vjti.ac.in>
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: syzbot+a41b73dce23962a74c72@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=a41b73dce23962a74c72
    Fixes: 1bf20c3a0c61 ("[media] radio-keene: add a driver for the Keene FM Transmitter")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shaurya Rane <ssrane_b23@ee.vjti.ac.in>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: solo6x10: Check for out of bounds chip_id [+ + +]
Author: Kees Cook <kees@kernel.org>
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 <nathan@kernel.org>
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    [hverkuil: fix checkpatch warning for is_tw286x]
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: venus: vdec: fix error state assignment for zero bytesused [+ + +]
Author: Renjiang Han <renjiang.han@oss.qualcomm.com>
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 <renjiang.han@oss.qualcomm.com>
    Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mfd: arizona: Fix regulator resource leak on wm5102_clear_write_sequencer() failure [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
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 <vulab@iscas.ac.cn>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20251214145804.2037-1-vulab@iscas.ac.cn
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mfd: wm8350-core: Use IRQF_ONESHOT [+ + +]
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
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 <bigeasy@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@kernel.org>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://patch.msgid.link/20260128095540.863589-16-bigeasy@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
minix: Add required sanity checking to minix_check_superblock() [+ + +]
Author: Jori Koolstra <jkoolstra@xs4all.nl>
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 <jkoolstra@xs4all.nl>
    Link: https://patch.msgid.link/20251208153947.108343-1-jkoolstra@xs4all.nl
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reported-by: syzbot+5ad0824204c7bf9b67f2@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=5ad0824204c7bf9b67f2
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
MIPS: Loongson: Make cpumask_of_node() robust against NUMA_NO_NODE [+ + +]
Author: John Garry <john.g.garry@oracle.com>
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 <john.g.garry@oracle.com>
    Reviewed-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: rb532: Fix MMIO UART resource registration [+ + +]
Author: Jiaxun Yang <jiaxun.yang@flygoat.com>
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: stable@vger.kernel.org
    Reported-by: Waldemar Brodkorb <wbx@openadk.org>
    Link: https://lore.kernel.org/linux-mips/aX-d0ShTplHKZT33@waldemar-brodkorb.de/
    Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

MIPS: Work around LLVM bug when gp is used as global register variable [+ + +]
Author: Yao Zi <me@ziyao.cc>
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: stable@vger.kernel.org
    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 <me@ziyao.cc>
    Acked-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
misc: rtsx: Add SD Express mode support for RTS5261 [+ + +]
Author: Rui Feng <rui_feng@realsil.com.cn>
Date:   Thu Oct 29 09:57:48 2020 +0800

    misc: rtsx: Add SD Express mode support for RTS5261
    
    [ Upstream commit 5afe802132f242f5520d2acac09ea05d31e3c7cf ]
    
    RTS5261 support SD mode and PCIe/NVMe mode. The workflow is as follows.
    1.RTS5261 work in SD mode and set MMC_CAPS2_SD_EXP flag.
    2.If card is plugged in, Host send CMD8 to ask card's PCIe availability.
    3.If the card has PCIe availability and WP is not set, init_sd_express() will be invoked,
    RTS5261 switch to PCIe/NVMe mode.
    4.Mmc driver handover it to NVMe driver.
    5.If card is unplugged, RTS5261 will switch to SD mode.
    
    Signed-off-by: Rui Feng <rui_feng@realsil.com.cn>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/1603936668-3363-1-git-send-email-rui_feng@realsil.com.cn
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Stable-dep-of: aced969e9bf3 ("mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm, page_alloc, thp: prevent reclaim for __GFP_THISNODE THP allocations [+ + +]
Author: Vlastimil Babka <vbabka@kernel.org>
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/20251219-costly-noretry-thisnode-fix-v1-1-e1085a4a0c34@suse.cz
    Fixes: 2f0799a0ffc0 ("mm, thp: restore node-local hugepage allocations")
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Pedro Falcato <pfalcato@suse.de>
    Acked-by: Zi Yan <ziy@nvidia.com>
    Cc: Brendan Jackman <jackmanb@google.com>
    Cc: "David Hildenbrand (Red Hat)" <david@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joshua Hahn <joshua.hahnjy@gmail.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mmc: core: Initial support for SD express card/host [+ + +]
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Thu Oct 29 09:57:16 2020 +0800

    mmc: core: Initial support for SD express card/host
    
    [ Upstream commit ead49373d2916080509f51fc6a4ee8f9bc021b9b ]
    
    In the SD specification v7.10 the SD express card has been added. This new
    type of removable SD card, can be managed via a PCIe/NVMe based interface,
    while also allowing backwards compatibility towards the legacy SD
    interface.
    
    To keep the backwards compatibility, it's required to start the
    initialization through the legacy SD interface. If it turns out that the
    mmc host and the SD card, both supports the PCIe/NVMe interface, then a
    switch should be allowed.
    
    Therefore, let's introduce some basic support for this type of SD cards to
    the mmc core. The mmc host, should set MMC_CAP2_SD_EXP if it supports this
    interface and MMC_CAP2_SD_EXP_1_2V, if also 1.2V is supported, as to inform
    the core about it.
    
    To deal with the switch to the PCIe/NVMe interface, the mmc host is
    required to implement a new host ops, ->init_sd_express(). Based on the
    initial communication between the host and the card, host->ios.timing is
    set to either MMC_TIMING_SD_EXP or MMC_TIMING_SD_EXP_1_2V, depending on if
    1.2V is supported or not. In this way, the mmc host can check these values
    in its ->init_sd_express() ops, to know how to proceed with the handover.
    
    Note that, to manage card insert/removal, the mmc core sticks with using
    the ->get_cd() callback, which means it's the host's responsibility to make
    sure it provides valid data, even if the card may be managed by PCIe/NVMe
    at the moment. As long as the card seems to be present, the mmc core keeps
    the card powered on.
    
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Rui Feng <rui_feng@realsil.com.cn>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/1603936636-3126-1-git-send-email-rui_feng@realsil.com.cn
    Stable-dep-of: aced969e9bf3 ("mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms [+ + +]
Author: Matthew Schwartz <matthew.schwartz@linux.dev>
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 <matthew.schwartz@linux.dev>
    Link: https://patch.msgid.link/20260105060236.400366-3-matthew.schwartz@linux.dev
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
modpost: Amend ppc64 save/restfpr symnames for -Os build [+ + +]
Author: René Rebe <rene@exactco.de>
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 <rene@exactco.de>
    Link: https://patch.msgid.link/20251123.131330.407910684435629198.rene@exactco.de
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mtd: rawnand: cadence: Fix return type of CDMA send-and-wait helper [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
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 <alok.a.tiwari@oracle.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
myri10ge: avoid uninitialized variable use [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
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 <arnd@arndb.de>
    Link: https://patch.msgid.link/20260205162935.2126442-1-arnd@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/rds: Clear reconnect pending bit [+ + +]
Author: Håkon Bugge <haakon.bugge@oracle.com>
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 <haakon.bugge@oracle.com>
    Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
    Link: https://patch.msgid.link/20260203055723.1085751-6-achender@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/rds: No shortcut out of RDS_CONN_ERROR [+ + +]
Author: Gerd Rausch <gerd.rausch@oracle.com>
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 <gerd.rausch@oracle.com>
    Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
    Link: https://patch.msgid.link/20260122055213.83608-2-achender@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/rds: rds_sendmsg should not discard payload_len [+ + +]
Author: Allison Henderson <achender@kernel.org>
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 <horms@kernel.org>
    Signed-off-by: Allison Henderson <achender@kernel.org>
    Link: https://patch.msgid.link/20260213035409.1963391-1-achender@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: atm: fix crash due to unvalidated vcc pointer in sigd_send() [+ + +]
Author: Jiayuan Chen <jiayuan.chen@shopee.com>
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: syzbot+1f22cb1769f249df9fa0@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/69039850.a70a0220.5b2ed.005d.GAE@google.com/T/
    Signed-off-by: Jiayuan Chen <jiayuan.chen@shopee.com>
    Link: https://patch.msgid.link/20260205095501.131890-1-jiayuan.chen@linux.dev
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: consume xmit errors of GSO frames [+ + +]
Author: Jakub Kicinski <kuba@kernel.org>
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 <kuba@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20260223235100.108939-1-kuba@kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: cpsw_new: Fix unnecessary netdev unregistration in cpsw_probe() error path [+ + +]
Author: Kevin Hao <haokexin@gmail.com>
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 <haokexin@gmail.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
    Link: https://patch.msgid.link/20260205-cpsw-error-path-v1-1-6e58bae6b299@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: ec_bhf: Fix dma_free_coherent() dma handle [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
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: <stable@vger.kernel.org>
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Link: https://patch.msgid.link/20260213164340.77272-2-fourier.thomas@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ethernet: marvell: skge: remove incorrect conflicting PCI ID [+ + +]
Author: Ethan Nelson-Moore <enelsonmoore@gmail.com>
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: stable@vger.kernel.org
    Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
    Link: https://patch.msgid.link/20260206071724.15268-1-enelsonmoore@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: intel: fix PCI device ID conflict between i40e and ipw2200 [+ + +]
Author: Ethan Nelson-Moore <enelsonmoore@gmail.com>
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: stable@vger.kernel.org
    Acked-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
    Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Link: https://patch.msgid.link/20260210021235.16315-1-enelsonmoore@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: catc: enable basic endpoint checking [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
Date:   Thu Feb 12 21:41:54 2026 +0000

    net: usb: catc: enable basic endpoint checking
    
    [ Upstream commit 9e7021d2aeae57c323a6f722ed7915686cdcc123 ]
    
    catc_probe() fills three URBs with hardcoded endpoint pipes without
    verifying the endpoint descriptors:
    
      - usb_sndbulkpipe(usbdev, 1) and usb_rcvbulkpipe(usbdev, 1) for TX/RX
      - usb_rcvintpipe(usbdev, 2) for interrupt status
    
    A malformed USB device can present these endpoints with transfer types
    that differ from what the driver assumes.
    
    Add a catc_usb_ep enum for endpoint numbers, replacing magic constants
    throughout. Add usb_check_bulk_endpoints() and usb_check_int_endpoints()
    calls after usb_set_interface() to verify endpoint types before use,
    rejecting devices with mismatched descriptors at probe time.
    
    Similar to
    - commit 90b7f2961798 ("net: usb: rtl8150: enable basic endpoint checking")
    which fixed the issue in rtl8150.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Suggested-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Ziyi Guo <n7l8m4@u.northwestern.edu>
    Link: https://patch.msgid.link/20260212214154.3609844-1-n7l8m4@u.northwestern.edu
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: kaweth: remove TX queue manipulation in kaweth_set_rx_mode [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
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 <pabeni@redhat.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ziyi Guo <n7l8m4@u.northwestern.edu>
    Link: https://patch.msgid.link/20260217175012.1234494-1-n7l8m4@u.northwestern.edu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: lan78xx: scan all MDIO addresses on LAN7801 [+ + +]
Author: Martin Pålsson <martin@poleshift.se>
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 <martin@poleshift.se>
    Link: https://patch.msgid.link/0110019c6f388aff-98d99cf0-4425-4fff-b16b-dea5ad8fafe0-000000@eu-north-1.amazonses.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: pegasus: enable basic endpoint checking [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
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 <n7l8m4@u.northwestern.edu>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20260222050633.410165-1-n7l8m4@u.northwestern.edu
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: r8152: fix transmit queue timeout [+ + +]
Author: Mingj Ye <insyelu@gmail.com>
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 <insyelu@gmail.com>
    Reviewed-by: Hayes Wang <hayeswang@realtek.com>
    Link: https://patch.msgid.link/20260120015949.84996-1-insyelu@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: sr9700: remove code to drive nonexistent multicast filter [+ + +]
Author: Ethan Nelson-Moore <enelsonmoore@gmail.com>
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 <horms@kernel.org> (from v1)
    Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
    Link: https://patch.msgid.link/20260203013924.28582-1-enelsonmoore@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: wan/fsl_ucc_hdlc: Fix dma_free_coherent() in uhdlc_memclean() [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
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) <chleroy@kernel.org>
    Fixes: c19b6d246a35 ("drivers/net: support hdlc function for QE-UCC")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Link: https://patch.msgid.link/20260206085334.21195-2-fourier.thomas@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: wan: farsync: Fix use-after-free bugs caused by unfinished tasklets [+ + +]
Author: Duoming Zhou <duoming@zju.edu.cn>
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 <duoming@zju.edu.cn>
    Reviewed-by: Jijie Shao <shaojijie@huawei.com>
    Link: https://patch.msgid.link/20260219124637.72578-1-duoming@zju.edu.cn
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: nf_conncount: fix tracking of connections from localhost [+ + +]
Author: Fernando Fernandez Mancera <fmancera@suse.de>
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 <michal.slabihoudek@gooddata.com>
    Closes: https://lore.kernel.org/netfilter/6989BD9F-8C24-4397-9AD7-4613B28BF0DB@gooddata.com/
    Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_conncount: increase the connection clean up limit to 64 [+ + +]
Author: Fernando Fernandez Mancera <fmancera@suse.de>
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 <ARukomoinikova@k2.cloud>
    Closes: https://lore.kernel.org/netfilter/b2064e7b-0776-4e14-adb6-c68080987471@k2.cloud/
    Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_conncount: make nf_conncount_gc_list() to disable BH [+ + +]
Author: Fernando Fernandez Mancera <fmancera@suse.de>
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 <fmancera@suse.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Stable-dep-of: 21d033e47273 ("netfilter: nf_conncount: increase the connection clean up limit to 64")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_conntrack: Add allow_clash to generic protocol handler [+ + +]
Author: Yuto Hamaguchi <Hamaguchi.Yuto@da.MitsubishiElectric.co.jp>
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 <Hamaguchi.Yuto@da.MitsubishiElectric.co.jp>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_conntrack_h323: don't pass uninitialised l3num value [+ + +]
Author: Florian Westphal <fw@strlen.de>
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 <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nf_conntrack_h323: fix OOB read in decode_choice() [+ + +]
Author: Vahagn Vardanian <vahagn@redrays.io>
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 <vahagn@redrays.io>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Link: https://patch.msgid.link/20260225130619.1248-2-fw@strlen.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nft_set_hash: fix get operation on big endian [+ + +]
Author: Florian Westphal <fw@strlen.de>
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 <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: nft_set_rbtree: check for partial overlaps in anonymous sets [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
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 <pablo@netfilter.org>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: xt_tcpmss: check remaining length before reading optlen [+ + +]
Author: Florian Westphal <fw@strlen.de>
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 <sungzii@pm.me>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfc: nxp-nci: remove interrupt trigger type [+ + +]
Author: Carl Lee <carl.lee@amd.com>
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 <carl.lee@amd.com>
    Link: https://patch.msgid.link/20260205-fc-nxp-nci-remove-interrupt-trigger-type-v2-1-79d2ed4a7e42@amd.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfsd: fix return error code for nfsd_map_name_to_[ug]id [+ + +]
Author: Anthony Iliopoulos <ailiop@suse.com>
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: stable@vger.kernel.org
    Signed-off-by: Anthony Iliopoulos <ailiop@suse.com>
    Reviewed-by: NeilBrown <neil@brown.name>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nfsd: never defer requests during idmap lookup [+ + +]
Author: Anthony Iliopoulos <ailiop@suse.com>
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 <ailiop@suse.com>
    Reviewed-by: NeilBrown <neil@brown.name>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ntb: ntb_hw_switchtec: Fix array-index-out-of-bounds access [+ + +]
Author: Maciej Grochowski <Maciej.Grochowski@sony.com>
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 <Maciej.Grochowski@sony.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ntb: ntb_hw_switchtec: Fix shift-out-of-bounds for 0 mw lut [+ + +]
Author: Maciej Grochowski <Maciej.Grochowski@sony.com>
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 <Maciej.Grochowski@sony.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NTB: ntb_transport: Fix too small buffer for debugfs_name [+ + +]
Author: Koichiro Den <den@valinux.co.jp>
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: <stable@vger.kernel.org> # v3.9+
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Koichiro Den <den@valinux.co.jp>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvdimm: virtio_pmem: serialize flush requests [+ + +]
Author: Li Chen <me@linux.beauty>
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 <me@linux.beauty>
    Acked-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Link: https://patch.msgid.link/20260203021353.121091-1-me@linux.beauty
    Signed-off-by: Ira Weiny <ira.weiny@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ocfs2: fix reflink preserve cleanup issue [+ + +]
Author: Heming Zhao <heming.zhao@suse.com>
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/20251210015725.8409-2-heming.zhao@suse.com
    Fixes: 0fe9b66c65f3 ("ocfs2: Add preserve to reflink.")
    Signed-off-by: Heming Zhao <heming.zhao@suse.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
octeontx2-af: Fix PF driver crash with kexec kernel booting [+ + +]
Author: Anshumali Gaur <agaur@marvell.com>
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 <agaur@marvell.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20260203050701.2616685-1-agaur@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

octeontx2-af: Workaround SQM/PSE stalls by disabling sticky [+ + +]
Author: Geetha sowjanya <gakula@marvell.com>
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 <gakula@marvell.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20260127125147.1642-1-gakula@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
openrisc: define arch-specific version of nop() [+ + +]
Author: Brian Masney <bmasney@redhat.com>
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 <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202601180236.BVy480We-lkp@intel.com/
    Signed-off-by: Brian Masney <bmasney@redhat.com>
    Signed-off-by: Stafford Horne <shorne@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ovl: Fix uninit-value in ovl_fill_real [+ + +]
Author: Qing Wang <wangqing7171@gmail.com>
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: syzbot+d130f98b2c265fae5297@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=d130f98b2c265fae5297
    Fixes: 4edb83bb1041 ("ovl: constant d_ino for non-merge dirs")
    Signed-off-by: Qing Wang <wangqing7171@gmail.com>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Link: https://patch.msgid.link/20260128132406.23768-2-amir73il@gmail.com
    Acked-by: Miklos Szeredi <mszeredi@redhat.com>
    Reviewed-by: Eric Biggers <ebiggers@kernel.org>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
parisc: kernel: replace kfree() with put_device() in create_tree_node() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

parisc: Prevent interrupts during reboot [+ + +]
Author: Helge Deller <deller@gmx.de>
Date:   Tue Jan 27 17:58:55 2026 +0100

    parisc: Prevent interrupts during reboot
    
    [ Upstream commit 35ac5a728c878594f2ea6c43b57652a16be3c968 ]
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI/IOV: Fix race between SR-IOV enable/disable and hotplug [+ + +]
Author: Niklas Schnelle <schnelle@linux.ibm.com>
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 <bblock@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Gerd Bayer <gbayer@linux.ibm.com>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20251216-revert_sriov_lock-v3-2-dac4925a7621@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI/portdrv: Fix potential resource leak [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
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 <u.kleine-koenig@baylibre.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
    Link: https://patch.msgid.link/e1c68c3b3f1af8427e98ca5e2c79f8bf0ebe2ce4.1764688034.git.u.kleine-koenig@baylibre.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PCI: Add ACS quirk for Qualcomm Hamoa & Glymur [+ + +]
Author: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
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 <krishna.chundru@oss.qualcomm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: https://patch.msgid.link/20260109-acs_quirk-v1-1-82adf95a89ae@oss.qualcomm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Do not attempt to set ExtTag for VFs [+ + +]
Author: Håkon Bugge <haakon.bugge@oracle.com>
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 <haakon.bugge@oracle.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Link: https://patch.msgid.link/20251112095442.1913258-1-haakon.bugge@oracle.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Enable ACS after configuring IOMMU for OF platforms [+ + +]
Author: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
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 <manivannan.sadhasivam@oss.qualcomm.com>
    [bhelgaas: commit log]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Link: https://patch.msgid.link/20260102-pci_acs-v3-1-72280b94d288@oss.qualcomm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Fix pci_slot_lock () device locking [+ + +]
Author: Keith Busch <kbusch@kernel.org>
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 <kbusch@kernel.org>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Dan Williams <dan.j.williams@intel.com>
    Link: https://patch.msgid.link/20260130165953.751063-3-kbusch@meta.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Fix pci_slot_trylock() error handling [+ + +]
Author: Jinhui Guo <guojinhui.liam@bytedance.com>
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/20260116184150.3013258-1-kbusch@meta.com]
    
    Fixes: a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
    Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Dan Williams <dan.j.williams@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20251212145528.2555-1-guojinhui.liam@bytedance.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Initialize RCB from pci_configure_device() [+ + +]
Author: Håkon Bugge <haakon.bugge@oracle.com>
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 <haakon.bugge@oracle.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: https://patch.msgid.link/20260129175237.727059-2-haakon.bugge@oracle.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Mark 3ware-9650SA Root Port Extended Tags as broken [+ + +]
Author: Jörg Wedekind <joerg@wedekind.de>
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 <joerg@wedekind.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: https://patch.msgid.link/20260119143114.21948-1-joerg@wedekind.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Mark ASM1164 SATA controller to avoid bus reset [+ + +]
Author: Alex Williamson <alex.williamson@nvidia.com>
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 <patrick.w.bianchi@gmail.com>
    Link: https://forum.proxmox.com/threads/problems-with-pcie-passthrough-with-two-identical-devices.149003/
    Signed-off-by: Alex Williamson <alex.williamson@nvidia.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Link: https://patch.msgid.link/20260109000211.398300-1-alex.williamson@nvidia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: Mark Nvidia GB10 to avoid bus reset [+ + +]
Author: Johnny-CC Chang <Johnny-CC.Chang@mediatek.com>
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 <Johnny-CC.Chang@mediatek.com>
    [bhelgaas: drop pci_ids.h update (only used once), update commit log]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
    Link: https://patch.msgid.link/20251113084441.2124737-1-Johnny-CC.Chang@mediatek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PCI: mediatek: Fix IRQ domain leak when MSI allocation fails [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
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 <vulab@iscas.ac.cn>
    Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
    Link: https://patch.msgid.link/20251119023308.476-1-vulab@iscas.ac.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf callchain: Fix srcline printing with inlines [+ + +]
Author: Ian Rogers <irogers@google.com>
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 <james.clark@linaro.org>
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Howard Chu <howardchu95@gmail.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
    Cc: Tony Jones <tonyj@suse.de>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
phy: fsl-imx8mq-usb: disable bind/unbind platform driver feature [+ + +]
Author: Xu Yang <xu.yang_2@nxp.com>
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 <xu.yang_2@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://patch.msgid.link/20260120111712.3159782-1-xu.yang_2@nxp.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pinctrl: equilibrium: Fix device node reference leak in pinbank_init() [+ + +]
Author: Felix Gu <ustc.gu@gmail.com>
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 <ustc.gu@gmail.com>
    Acked-by: Andy Shevchenko <andriy.shevchenko@intel.com>
    Signed-off-by: Linus Walleij <linusw@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: single: fix refcount leak in pcs_add_gpio_func() [+ + +]
Author: Wei Li <unsw.weili@gmail.com>
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 <unsw.weili@gmail.com>
    Signed-off-by: Linus Walleij <linusw@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/chrome: cros_ec_lightbar: Fix response size initialization [+ + +]
Author: Tzung-Bi Shih <tzungbi@kernel.org>
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 <gwendal@google.com>
    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/20260130040335.361997-1-tzungbi@kernel.org
    Reviewed-by: Gwendal Grignou <gwendal@google.com>
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
PM: core: Add new *_PM_OPS macros, deprecate old ones [+ + +]
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Tue Dec 7 00:21:00 2021 +0000

    PM: core: Add new *_PM_OPS macros, deprecate old ones
    
    [ Upstream commit 1a3c7bb088266fa2db017be299f91f1c1894c857 ]
    
    This commit introduces the following macros:
    
    SYSTEM_SLEEP_PM_OPS()
    LATE_SYSTEM_SLEEP_PM_OPS()
    NOIRQ_SYSTEM_SLEEP_PM_OPS()
    RUNTIME_PM_OPS()
    
    These new macros are very similar to their SET_*_PM_OPS() equivalent.
    They however differ in the fact that the callbacks they set will always
    be seen as referenced by the compiler. This means that the callback
    functions don't need to be wrapped with a #ifdef CONFIG_PM guard, or
    tagged with __maybe_unused, to prevent the compiler from complaining
    about unused static symbols. The compiler will then simply evaluate at
    compile time whether or not these symbols are dead code.
    
    The callbacks that are only useful with CONFIG_PM_SLEEP is enabled, are
    now also wrapped with a new pm_sleep_ptr() macro, which is inspired from
    pm_ptr(). This is needed for drivers that use different callbacks for
    sleep and runtime PM, to handle the case where CONFIG_PM is set and
    CONFIG_PM_SLEEP is not.
    
    This commit also deprecates the following macros:
    
    SIMPLE_DEV_PM_OPS()
    UNIVERSAL_DEV_PM_OPS()
    
    And introduces the following macros:
    
    DEFINE_SIMPLE_DEV_PM_OPS()
    DEFINE_UNIVERSAL_DEV_PM_OPS()
    
    These macros are similar to the functions they were created to replace,
    with the following differences:
    
     - They use the new macros introduced above, and as such always
       reference the provided callback functions.
    
     - They are not tagged with __maybe_unused. They are meant to be used
       with pm_ptr() or pm_sleep_ptr() for DEFINE_UNIVERSAL_DEV_PM_OPS()
       and DEFINE_SIMPLE_DEV_PM_OPS() respectively.
    
     - They declare the symbol static, since every driver seems to do that
       anyway; and if a non-static use-case is needed an indirection pointer
       could be used.
    
    The point of this change, is to progressively switch from a code model
    where PM callbacks are all protected behind CONFIG_PM guards, to a code
    model where the PM callbacks are always seen by the compiler, but
    discarded if not used.
    
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Stable-dep-of: 0ba2035026d0 ("crypto: ccp - Add an S4 restore flow")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PM: core: Redefine pm_ptr() macro [+ + +]
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Tue Dec 7 00:20:59 2021 +0000

    PM: core: Redefine pm_ptr() macro
    
    [ Upstream commit c06ef740d401d0f4ab188882bf6f8d9cf0f75eaf ]
    
    The pm_ptr() macro was previously conditionally defined, according to
    the value of the CONFIG_PM option. This meant that the pointed structure
    was either referenced (if CONFIG_PM was set), or never referenced (if
    CONFIG_PM was not set), causing it to be detected as unused by the
    compiler.
    
    This worked fine, but required the __maybe_unused compiler attribute to
    be used to every symbol pointed to by a pointer wrapped with pm_ptr().
    
    We can do better. With this change, the pm_ptr() is now defined the
    same, independently of the value of CONFIG_PM. It now uses the (?:)
    ternary operator to conditionally resolve to its argument. Since the
    condition is known at compile time, the compiler will then choose to
    discard the unused symbols, which won't need to be tagged with
    __maybe_unused anymore.
    
    This pm_ptr() macro is usually used with pointers to dev_pm_ops
    structures created with SIMPLE_DEV_PM_OPS() or similar macros. These do
    use a __maybe_unused flag, which is now useless with this change, so it
    later can be removed. However in the meantime it causes no harm, and all
    the drivers still compile fine with the new pm_ptr() macro.
    
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Stable-dep-of: 0ba2035026d0 ("crypto: ccp - Add an S4 restore flow")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PM: sleep: wakeirq: harden dev_pm_clear_wake_irq() against races [+ + +]
Author: Gui-Dong Han <hanguidong02@gmail.com>
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 <hanguidong02@gmail.com>
    Link: https://patch.msgid.link/20260203031943.1924-1-hanguidong02@gmail.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

PM: wakeup: Handle empty list in wakeup_sources_walk_start() [+ + +]
Author: Samuel Wu <wusamuel@google.com>
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 <wusamuel@google.com>
    [ rjw: Subject and changelog edits ]
    Link: https://patch.msgid.link/20260124012133.2451708-2-wusamuel@google.com
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pNFS: fix a missing wake up while waiting on NFS_LAYOUT_DRAIN [+ + +]
Author: Olga Kornievskaia <okorniev@redhat.com>
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 <trond.myklebust@hammerspace.com>
    Fixes: 880265c77ac4 ("pNFS: Avoid a live lock condition in pnfs_update_layout()")
    Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
power: reset: nvmem-reboot-mode: respect cell size for nvmem_cell_write [+ + +]
Author: Alexander Koskovich <AKoskovich@pm.me>
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 <akoskovich@pm.me>
    Link: https://patch.msgid.link/20251214191529.2470580-1-akoskovich@pm.me
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: act8945a: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <waqar.hameed@axis.com>
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 <waqar.hameed@axis.com>
    Link: https://patch.msgid.link/bcf3a23b5187df0bba54a8c8fe09f8b8a0031dee.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: bq25980: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <waqar.hameed@axis.com>
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 <waqar.hameed@axis.com>
    Link: https://patch.msgid.link/8763035cadb959e14787b3837f2d3db61f6e1c34.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: bq27xxx: fix wrong errno when bus ops are unsupported [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
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 <vulab@iscas.ac.cn>
    Reviewed-by: Matt Ranostay <matt@ranostay.sg>
    Link: https://patch.msgid.link/20251204083436.1367-1-vulab@iscas.ac.cn
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: cpcap-battery: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <waqar.hameed@axis.com>
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 <waqar.hameed@axis.com>
    Link: https://patch.msgid.link/81db58d610c9a51a68184f856cd431a934cccee2.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: goldfish: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <waqar.hameed@axis.com>
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 <waqar.hameed@axis.com>
    Link: https://patch.msgid.link/500a606bb6fb6f2bb8d797e19a00cea9dd7b03c1.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: rt9455: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <waqar.hameed@axis.com>
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 <waqar.hameed@axis.com>
    Link: https://patch.msgid.link/1567d831e04c3e2fcb9e18dd36b7bcba4634581a.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: sbs-battery: Fix use-after-free in power_supply_changed() [+ + +]
Author: Waqar Hameed <waqar.hameed@axis.com>
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 <waqar.hameed@axis.com>
    Reviewed-by: Phil Reid <preid@electromag.com.au>
    Link: https://patch.msgid.link/0ef896e002495e615157b482d18a437af19ddcd0.1766268280.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed() [+ + +]
Author: Waqar Hameed <waqar.hameed@axis.com>
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 <waqar.hameed@axis.com>
    Link: https://patch.msgid.link/97b55f0479a932eea7213844bf66f28a974e27a2.1766270196.git.waqar.hameed@axis.com
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

power: supply: wm97xx_battery: Convert to GPIO descriptor [+ + +]
Author: Linus Walleij <linusw@kernel.org>
Date:   Mon Jan 11 00:45:08 2021 +0100

    power: supply: wm97xx_battery: Convert to GPIO descriptor
    
    [ Upstream commit cb6d6918c56ffd98e88164d5471f692d33dabf2b ]
    
    This converts the WM97xx driver to use a GPIO descriptor
    instead of passing a GPIO number thru platform data.
    
    Like everything else in the driver, use a simple local
    variable for the descriptor, it can only ever appear in
    one instance anyway so it should not hurt.
    
    After converting the driver I noticed that none of the
    boardfiles actually define a meaningful GPIO line for
    this, but hey, it is converted.
    
    Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
    Cc: Robert Jarzmik <robert.jarzmik@free.fr>
    Cc: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Daniel Mack <daniel@zonque.org>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Stable-dep-of: 39fe0eac6d75 ("power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc/eeh: fix recursive pci_lock_rescan_remove locking in EEH event handling [+ + +]
Author: Narayana Murty N <nnmlinux@linux.ibm.com>
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 <nnmlinux@linux.ibm.com>
    Reviewed-by: Sourabh Jain <sourabhjain@linux.ibm.com>
    Reviewed-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
    Link: https://patch.msgid.link/20251210142559.8874-1-nnmlinux@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
procfs: fix missing RCU protection when reading real_parent in do_task_stat() [+ + +]
Author: Jinliang Zheng <alexjlzheng@tencent.com>
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/20260128083007.3173016-1-alexjlzheng@tencent.com
    Fixes: 06fffb1267c9 ("do_task_stat: don't take rcu_read_lock()")
    Signed-off-by: Jinliang Zheng <alexjlzheng@tencent.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: David Hildenbrand <david@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Mateusz Guzik <mjguzik@gmail.com>
    Cc: ruippan <ruippan@tencent.com>
    Cc: Usama Arif <usamaarif642@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pstore/ram: fix buffer overflow in persistent_ram_save_old() [+ + +]
Author: Sai Ritvik Tanksalkar <stanksal@purdue.edu>
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 <stanksal@purdue.edu>
    Link: https://patch.msgid.link/20260201132240.2948732-1-stanksal@purdue.edu
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pstore: ram_core: fix incorrect success return when vmap() fails [+ + +]
Author: Ruipeng Qi <ruipengqi3@gmail.com>
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 <ruipengqi3@gmail.com>
    Link: https://patch.msgid.link/20260203020358.3315299-1-ruipengqi3@gmail.com
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rapidio: replace rio_free_net() with kfree() in rio_scan_alloc_net() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
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/20260121013508.195836-1-lihaoxiang@isrc.iscas.ac.cn
    Fixes: e6b585ca6e81 ("rapidio: move net allocation into core code")
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexandre Bounine <alex.bou9@gmail.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/core: add rdma_rw_max_sge() helper for SQ sizing [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
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 <hch@lst.de>
    Fixes: 00bd1439f464 ("RDMA/rw: Support threshold for registration vs scattering to local pages")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://patch.msgid.link/20260128005400.25147-5-cel@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/core: device: Fix formatting in worthy kernel-doc header and demote another [+ + +]
Author: Lee Jones <lee@kernel.org>
Date:   Mon Jan 18 22:39:11 2021 +0000

    RDMA/core: device: Fix formatting in worthy kernel-doc header and demote another
    
    [ Upstream commit 4c3b53e14cdf29af2a565bfda2e3dbeede5f39a3 ]
    
    Fixes the following W=1 kernel build warning(s):
    
     drivers/infiniband/core/device.c:1896: warning: Function parameter or member 'ibdev' not described in 'ib_get_client_nl_info'
     drivers/infiniband/core/device.c:1896: warning: Function parameter or member 'client_name' not described in 'ib_get_client_nl_info'
     drivers/infiniband/core/device.c:1896: warning: Function parameter or member 'res' not described in 'ib_get_client_nl_info'
     drivers/infiniband/core/device.c:2328: warning: Function parameter or member 'nldev_cb' not described in 'ib_enum_all_devs'
     drivers/infiniband/core/device.c:2328: warning: Function parameter or member 'skb' not described in 'ib_enum_all_devs'
    
    Link: https://lore.kernel.org/r/20210118223929.512175-3-lee.jones@linaro.org
    Cc: Doug Ledford <dledford@redhat.com>
    Cc: Jason Gunthorpe <jgg@ziepe.ca>
    Cc: linux-rdma@vger.kernel.org
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Stable-dep-of: 9af0feae8016 ("RDMA/core: Fix stale RoCE GIDs during netdev events at registration")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/core: Fix a couple of obvious typos in comments [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
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 <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/169643338101.8035.6826446669479247727.stgit@manet.1015granger.net
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/core: Fix stale RoCE GIDs during netdev events at registration [+ + +]
Author: Jiri Pirko <jiri@resnulli.us>
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 <jiri@nvidia.com>
    Link: https://patch.msgid.link/20260127093839.126291-1-jiri@resnulli.us
    Reported-by: syzbot+881d65229ca4f9ae8c84@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=881d65229ca4f9ae8c84
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/efa: Fix typo in efa_alloc_mr() [+ + +]
Author: Jason Gunthorpe <jgg@ziepe.ca>
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 <jgg@nvidia.com>
    Link: https://patch.msgid.link/1-v1-83e918d69e73+a9-rdma_udata_rc_jgg@nvidia.com
    Acked-by: Michael Margolin <mrgolin@amazon.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rtrs: server: remove dead code [+ + +]
Author: Honggang LI <honggangli@163.com>
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 <honggangli@163.com>
    Link: https://patch.msgid.link/20251224023819.138846-1-honggangli@163.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rxe: Fix double free in rxe_srq_from_init [+ + +]
Author: Jiasheng Jiang <jiashengjiangcool@gmail.com>
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 <jiashengjiangcool@gmail.com>
    Link: https://patch.msgid.link/20260112015412.29458-1-jiashengjiangcool@gmail.com
    Reviewed-by: Zhu Yanjun <yanjun.Zhu@linux.dev>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/siw: Fix potential NULL pointer dereference in header processing [+ + +]
Author: YunJe Shin <yjshin0438@gmail.com>
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 <ioerts@kookmin.ac.kr>
    Link: https://patch.msgid.link/20260204092546.489842-1-ioerts@kookmin.ac.kr
    Acked-by: Bernard Metzler <bernard.metzler@linux.dev>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
RDMA/umad: Reject negative data_len in ib_umad_write [+ + +]
Author: YunJe Shin <yjshin0438@gmail.com>
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 <ioerts@kookmin.ac.kr>
    Link: https://patch.msgid.link/20260203100628.1215408-1-ioerts@kookmin.ac.kr
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA/uverbs: Add __GFP_NOWARN to ib_uverbs_unmarshall_recv() kmalloc [+ + +]
Author: Yi Liu <liuy22@mails.tsinghua.edu.cn>
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 <liuy22@mails.tsinghua.edu.cn>
    Link: https://patch.msgid.link/20260129094900.3517706-1-liuy22@mails.tsinghua.edu.cn
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send [+ + +]
Author: Yi Liu <liuy22@mails.tsinghua.edu.cn>
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 <liuy22@mails.tsinghua.edu.cn>
    Link: https://patch.msgid.link/20260122142900.2356276-2-liuy22@mails.tsinghua.edu.cn
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
regulator: core: Fix off-on-delay-us for always-on/boot-on regulators [+ + +]
Author: Christian Kohlschütter <christian@kohlschutter.com>
Date:   Tue Jul 19 16:02:00 2022 +0200

    regulator: core: Fix off-on-delay-us for always-on/boot-on regulators
    
    [ Upstream commit 218320fec29430438016f88dd4fbebfa1b95ad8d ]
    
    Regulators marked with "regulator-always-on" or "regulator-boot-on"
    as well as an "off-on-delay-us", may run into cycling issues that are
    hard to detect.
    
    This is caused by the "last_off" state not being initialized in this
    case.
    
    Fix the "last_off" initialization by setting it to the current kernel
    time upon initialization, regardless of always_on/boot_on state.
    
    Signed-off-by: Christian Kohlschütter <christian@kohlschutter.com>
    Link: https://lore.kernel.org/r/FAFD5B39-E9C4-47C7-ACF1-2A04CD59758D@kohlschutter.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 86a8eeb0e913 ("regulator: core: move supply check earlier in set_machine_constraints()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: core: Fix off_on_delay handling [+ + +]
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Fri Apr 23 13:45:24 2021 +0200

    regulator: core: Fix off_on_delay handling
    
    [ Upstream commit a8ce7bd89689997537dd22dcbced46cf23dc19da ]
    
    The jiffies-based off_on_delay implementation has a couple of problems
    that cause it to sometimes not actually delay for the required time:
    
     (1) If, for example, the off_on_delay time is equivalent to one jiffy,
         and the ->last_off_jiffy is set just before a new jiffy starts,
         then _regulator_do_enable() does not wait at all since it checks
         using time_before().
    
     (2) When jiffies overflows, the value of "remaining" becomes higher
         than "max_delay" and the code simply proceeds without waiting.
    
    Fix these problems by changing it to use ktime_t instead.
    
    [Note that since jiffies doesn't start at zero but at INITIAL_JIFFIES
     ("-5 minutes"), (2) above also led to the code not delaying if
     the first regulator_enable() is called when the ->last_off_jiffy is not
     initialised, such as for regulators with ->constraints->boot_on set.
     It's not clear to me if this was intended or not, but I've preserved
     this behaviour explicitly with the check for a non-zero ->last_off.]
    
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Link: https://lore.kernel.org/r/20210423114524.26414-1-vincent.whitchurch@axis.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 86a8eeb0e913 ("regulator: core: move supply check earlier in set_machine_constraints()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: core: move supply check earlier in set_machine_constraints() [+ + +]
Author: André Draszik <andre.draszik@linaro.org>
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 <andre.draszik@linaro.org>
    Link: https://patch.msgid.link/20260109-regulators-defer-v2-3-1a25dc968e60@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: core: Respect off_on_delay at startup [+ + +]
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Thu Apr 22 10:30:44 2021 +0200

    regulator: core: Respect off_on_delay at startup
    
    [ Upstream commit a5ccccb3ec0b052804d03df90c0d08689be54170 ]
    
    We currently do not respect off_on_delay the first time we turn on a
    regulator.  This is problematic since the regulator could have been
    turned off by the bootloader, or it could it have been turned off during
    the probe of the regulator driver (such as when regulator-fixed requests
    the enable GPIO), either of which could potentially have happened less
    than off_on_delay microseconds ago before the first time a client
    requests for the regulator to be turned on.
    
    We can't know exactly when the regulator was turned off, but initialise
    off_on_delay to the current time when registering the regulator, so that
    we guarantee that we respect the off_on_delay in all cases.
    
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Link: https://lore.kernel.org/r/20210422083044.11479-1-vincent.whitchurch@axis.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 86a8eeb0e913 ("regulator: core: move supply check earlier in set_machine_constraints()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: core: Shorten off-on-delay-us for always-on/boot-on by time since booted [+ + +]
Author: Douglas Anderson <dianders@chromium.org>
Date:   Mon Mar 13 11:18:19 2023 -0700

    regulator: core: Shorten off-on-delay-us for always-on/boot-on by time since booted
    
    [ Upstream commit 691c1fcda5351ed98a44610b7dccc0e3ee920020 ]
    
    This is very close to a straight revert of commit 218320fec294
    ("regulator: core: Fix off-on-delay-us for always-on/boot-on
    regulators"). We've identified that patch as causing a boot speed
    regression on sc7180-trogdor boards. While boot speed certainly isn't
    more important than making sure that power sequencing is correct,
    looking closely at the original change it doesn't seem to have been
    fully justified. It mentions "cycling issues" without describing
    exactly what the issues were. That means it's possible that the
    cycling issues were really a problem that should be fixed in a
    different way.
    
    Let's take a careful look at how we should handle regulators that have
    an off-on-delay and that are boot-on or always-on. Linux currently
    doesn't have any way to identify whether a GPIO regulator was already
    on when the kernel booted. That means that when the kernel boots we
    probe a regulator, see that it wants boot-on / always-on we, and then
    turn the regulator on. We could be in one of two cases when we do
    this:
    
    a) The regulator might have been left on by the bootloader and we're
       ensuring that it stays on.
    b) The regulator might have been left off by the bootloader and we're
       just now turning it on.
    
    For case a) we definitely don't need any sort of delay. For case b) we
    _might_ need some delay in case the bootloader turned the regulator
    off _right_ before booting the kernel. To get the proper delay for
    case b) then we can just assume a `last_off` of 0, which is what it
    gets initialized to by default.
    
    As per above, we can't tell whether we're in case a) or case b) so
    we'll assume the longer delay (case b). This basically puts the code
    to how it was before commit 218320fec294 ("regulator: core: Fix
    off-on-delay-us for always-on/boot-on regulators"). However, we add
    one important change: we make sure that the delay is actually honored
    if `last_off` is 0. Though the original "cycling issues" cited were
    vague, I'm hopeful that this important extra change will be enough to
    fix the issues that the initial commit mentioned.
    
    With this fix, I've confined that on a sc7180-trogdor board the delay
    at boot goes down from 500 ms to ~250 ms. That's not as good as the 0
    ms that we had prior to commit 218320fec294 ("regulator: core: Fix
    off-on-delay-us for always-on/boot-on regulators"), but it's probably
    safer because we don't know if the bootloader turned the regulator off
    right before booting.
    
    One note is that it's possible that we could be in a state that's not
    a) or b) if there are other issues in the kernel. The only one I can
    think of is related to pinctrl. If the pinctrl driver being used on a
    board isn't careful about avoiding glitches when setting up a pin then
    it's possible that setting up a pin could cause the regulator to "turn
    off" briefly immediately before the regulator probes. If this is
    indeed causing problems then the pinctrl driver should be fixed,
    perhaps in a similar way to what was done in commit d21f4b7ffc22
    ("pinctrl: qcom: Avoid glitching lines when we first mux to output")
    
    Fixes: 218320fec294 ("regulator: core: Fix off-on-delay-us for always-on/boot-on regulators")
    Cc: Christian Kohlschütter <christian@kohlschutter.com>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20230313111806.1.I2eaad872be0932a805c239a7c7a102233fb0b03b@changeid
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 86a8eeb0e913 ("regulator: core: move supply check earlier in set_machine_constraints()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: core: Use ktime_get_boottime() to determine how long a regulator was off [+ + +]
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Thu Feb 23 00:33:30 2023 +0000

    regulator: core: Use ktime_get_boottime() to determine how long a regulator was off
    
    [ Upstream commit 80d2c29e09e663761c2778167a625b25ffe01b6f ]
    
    For regulators with 'off-on-delay-us' the regulator framework currently
    uses ktime_get() to determine how long the regulator has been off
    before re-enabling it (after a delay if needed). A problem with using
    ktime_get() is that it doesn't account for the time the system is
    suspended. As a result a regulator with a longer 'off-on-delay' (e.g.
    500ms) that was switched off during suspend might still incurr in a
    delay on resume before it is re-enabled, even though the regulator
    might have been off for hours. ktime_get_boottime() accounts for
    suspend time, use it instead of ktime_get().
    
    Fixes: a8ce7bd89689 ("regulator: core: Fix off_on_delay handling")
    Cc: stable@vger.kernel.org    # 5.13+
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20230223003301.v2.1.I9719661b8eb0a73b8c416f9c26cf5bd8c0563f99@changeid
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 86a8eeb0e913 ("regulator: core: move supply check earlier in set_machine_constraints()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

regulator: Flag uncontrollable regulators as always_on [+ + +]
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Mar 25 14:46:37 2022 +0000

    regulator: Flag uncontrollable regulators as always_on
    
    [ Upstream commit 261f06315cf7c3744731e36bfd8d4434949e3389 ]
    
    While we currently assume that regulators with no control available are
    just uncontionally enabled this isn't always as clearly displayed to
    users as is desirable, for example the code for disabling unused
    regulators will log that it is about to disable them. Clean this up a
    bit by setting always_on during constraint evaluation if we have no
    available mechanism for controlling the regualtor so things that check
    the constraint will do the right thing.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20220325144637.1543496-1-broonie@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 86a8eeb0e913 ("regulator: core: move supply check earlier in set_machine_constraints()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "hwmon: (ibmpex) fix use-after-free in high/low store" [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Feb 7 08:12:25 2026 -0800

    Revert "hwmon: (ibmpex) fix use-after-free in high/low store"
    
    [ Upstream commit 8bde3e395a85017f12af2b0ba5c3684f5af9c006 ]
    
    This reverts commit 6946c726c3f4c36f0f049e6f97e88c510b15f65d.
    
    Jean Delvare points out that the patch does not completely
    fix the reported problem, that it in fact introduces a
    (new) race condition, and that it may actually not be needed in
    the first place.
    
    Various AI reviews agree. Specific and relevant AI feedback:
    
    "
    This reordering sets the driver data to NULL before removing the sensor
    attributes in the loop below.
    
    ibmpex_show_sensor() retrieves this driver data via dev_get_drvdata() but
    does not check if it is NULL before dereferencing it to access
    data->sensors[].
    
    If a userspace process reads a sensor file (like temp1_input) while this
    delete function is running, could it race with the dev_set_drvdata(...,
    NULL) call here and crash in ibmpex_show_sensor()?
    
    Would it be safer to keep the original order where device_remove_file() is
    called before clearing the driver data? device_remove_file() should wait
    for any active sysfs callbacks to complete, which might already prevent the
    use-after-free this patch intends to fix.
    "
    
    Revert the offending patch. If it can be shown that the originally reported
    alleged race condition does indeed exist, it can always be re-introduced
    with a complete fix.
    
    Reported-by: Jean Delvare <jdelvare@suse.de>
    Closes: https://lore.kernel.org/linux-hwmon/20260121095342.73e723cb@endymion/
    Cc: Jean Delvare <jdelvare@suse.de>
    Cc: Junrui Luo <moonafterrain@outlook.com>
    Fixes: 6946c726c3f4 ("hwmon: (ibmpex) fix use-after-free in high/low store")
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "mfd: da9052-spi: Change read-mask to write-mask" [+ + +]
Author: Marcus Folkesson <marcus.folkesson@gmail.com>
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 <marcus.folkesson@gmail.com>
    Link: https://patch.msgid.link/20251124-da9052-revert-v1-1-fbeb2c894002@gmail.com
    Signed-off-by: Lee Jones <lee@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
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 <matthew.schwartz@linux.dev>
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV" [+ + +]
Author: Niklas Schnelle <schnelle@linux.ibm.com>
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 <bblock@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Acked-by: Gerd Bayer <gbayer@linux.ibm.com>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20251216-revert_sriov_lock-v3-1-dac4925a7621@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rnbd-srv: Zero the rsp buffer before using it [+ + +]
Author: Md Haris Iqbal <haris.iqbal@ionos.com>
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 <haris.iqbal@ionos.com>
    Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
    Signed-off-by: Grzegorz Prajsner <grzegorz.prajsner@ionos.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rpmsg: core: fix race in driver_override_show() and use core helper [+ + +]
Author: Gui-Dong Han <hanguidong02@gmail.com>
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: stable@vger.kernel.org
    Signed-off-by: Gui-Dong Han <hanguidong02@gmail.com>
    Link: https://lore.kernel.org/r/20251202174948.12693-1-hanguidong02@gmail.com
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rtc: interface: Alarm race handling should not discard preceding error [+ + +]
Author: Anthony Pighin (Nokia) <anthony.pighin@nokia.com>
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) <anthony.pighin@nokia.com>
    Reviewed-by: Esben Haabendal <esben@geanix.com>
    Tested-by: Nick Bowler <nbowler@draconx.ca>
    Link: https://patch.msgid.link/BN0PR08MB6951415A751F236375A2945683D1A@BN0PR08MB6951.namprd08.prod.outlook.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/cio: Fix device lifecycle handling in css_alloc_subchannel() [+ + +]
Author: Salah Triki <salah.triki@gmail.com>
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 <salah.triki@gmail.com>
    Reviewed-by: Vineeth Vijayan <vneethv@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/perf: Disable register readout on sampling events [+ + +]
Author: Thomas Richter <tmricht@linux.ibm.com>
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 <tmricht@linux.ibm.com>
    Reviewed-by: Jan Polensky <japo@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/purgatory: Add -Wno-default-const-init-unsafe to KBUILD_CFLAGS [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
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 <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched/rt: Skip currently executing CPU in rto_next_cpu() [+ + +]
Author: Chen Jinghuang <chenjinghuang2@huawei.com>
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) <rostedt@goodmis.org>
    Suggested-by: K Prateek Nayak <kprateek.nayak@amd.com>
    Signed-off-by: Chen Jinghuang <chenjinghuang2@huawei.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Reviewed-by: Valentin Schneider <vschneid@redhat.com>
    Link: https://patch.msgid.link/20260122012533.673768-1-chenjinghuang2@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: csiostor: Fix dereference of null pointer rn [+ + +]
Author: Colin Ian King <colin.i.king@gmail.com>
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 <colin.i.king@gmail.com>
    Link: https://patch.msgid.link/20260129155332.196338-1-colin.i.king@gmail.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests/mm/charge_reserved_hugetlb: drop mount size for hugetlbfs [+ + +]
Author: Li Wang <liwang@redhat.com>
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/20251221122639.3168038-3-liwang@redhat.com
    Fixes: 29750f71a9b4 ("hugetlb_cgroup: add hugetlb_cgroup reservation tests")
    Signed-off-by: Li Wang <liwang@redhat.com>
    Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>
    Acked-by: Waiman Long <longman@redhat.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: forwarding: tc_actions: cleanup temporary files when test is aborted [+ + +]
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Tue Feb 14 10:52:37 2023 +0100

    selftests: forwarding: tc_actions: cleanup temporary files when test is aborted
    
    [ Upstream commit f58531716ced8975a4ade108ef4af35f98722af7 ]
    
    remove temporary files created by 'mirred_egress_to_ingress_tcp' test
    in the cleanup() handler. Also, change variable names to avoid clashing
    with globals from lib.sh.
    
    Suggested-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Link: https://lore.kernel.org/r/091649045a017fc00095ecbb75884e5681f7025f.1676368027.git.dcaratti@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 32b70e62034a ("selftests: tc_actions: don't dump 2MB of \0 to stdout")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: forwarding: tc_actions: Use ncat instead of nc [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Tue Aug 8 17:14:57 2023 +0300

    selftests: forwarding: tc_actions: Use ncat instead of nc
    
    [ Upstream commit 5e8670610b93158ffacc3241f835454ff26a3469 ]
    
    The test relies on 'nc' being the netcat version from the nmap project.
    While this seems to be the case on Fedora, it is not the case on Ubuntu,
    resulting in failures such as [1].
    
    Fix by explicitly using the 'ncat' utility from the nmap project and the
    skip the test in case it is not installed.
    
    [1]
     # timeout set to 0
     # selftests: net/forwarding: tc_actions.sh
     # TEST: gact drop and ok (skip_hw)                                    [ OK ]
     # TEST: mirred egress flower redirect (skip_hw)                       [ OK ]
     # TEST: mirred egress flower mirror (skip_hw)                         [ OK ]
     # TEST: mirred egress matchall mirror (skip_hw)                       [ OK ]
     # TEST: mirred_egress_to_ingress (skip_hw)                            [ OK ]
     # nc: invalid option -- '-'
     # usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
     #         [-m minttl] [-O length] [-P proxy_username] [-p source_port]
     #         [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit]
     #         [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]]
     #         [destination] [port]
     # nc: invalid option -- '-'
     # usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
     #         [-m minttl] [-O length] [-P proxy_username] [-p source_port]
     #         [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit]
     #         [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]]
     #         [destination] [port]
     # TEST: mirred_egress_to_ingress_tcp (skip_hw)                        [FAIL]
     #       server output check failed
     # INFO: Could not test offloaded functionality
     not ok 80 selftests: net/forwarding: tc_actions.sh # exit=1
    
    Fixes: ca22da2fbd69 ("act_mirred: use the backlog for nested calls to mirred ingress")
    Reported-by: Mirsad Todorovac <mirsad.todorovac@alu.unizg.hr>
    Closes: https://lore.kernel.org/netdev/adc5e40d-d040-a65e-eb26-edf47dac5b02@alu.unizg.hr/
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Tested-by: Mirsad Todorovac <mirsad.todorovac@alu.unizg.hr>
    Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
    Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
    Link: https://lore.kernel.org/r/20230808141503.4060661-12-idosch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 32b70e62034a ("selftests: tc_actions: don't dump 2MB of \0 to stdout")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: forwarding: vxlan_bridge_1d: fix test failure with br_netfilter enabled [+ + +]
Author: Aleksei Oladko <aleksey.oladko@virtuozzo.com>
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 <aleksey.oladko@virtuozzo.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://patch.msgid.link/20260213131907.43351-2-aleksey.oladko@virtuozzo.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

selftests: mlxsw: tc_restrictions: Fix test failure with new iproute2 [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
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/20250916215731.3431465-1-jay.vosburgh@canonical.com/
    
    Fixes: cb12d1763267 ("selftests: mlxsw: tc_restrictions: Test tc-police restrictions")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/88b00c6e85188aa6a065dc240206119b328c46e1.1770643998.git.petrm@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
serial: 8250: 8250_omap.c: Clear DMA RX running status only after DMA termination is done [+ + +]
Author: Moteen Shah <m-shah@ti.com>
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 <m-shah@ti.com>
    Link: https://patch.msgid.link/20260112081829.63049-3-m-shah@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

serial: 8250_dw: handle clock enable errors in runtime_resume [+ + +]
Author: Artem Shimko <a.shimko.dev@gmail.com>
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 <a.shimko.dev@gmail.com>
    Link: https://patch.msgid.link/20251104145433.2316165-2-a.shimko.dev@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

serial: caif: fix use-after-free in caif_serial ldisc_close() [+ + +]
Author: Jiayuan Chen <jiayuan.chen@shopee.com>
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/20260204074327.226165-1-jiayuan.chen@linux.dev/T/#u
    
    Reported-by: syzbot+827272712bd6d12c79a4@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/000000000000a4a7550611e234f5@google.com/T/
    Fixes: 56e0ef527b18 ("drivers/net: caif: fix wrong rtnl_is_locked() usage")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Jiayuan Chen <jiayuan.chen@shopee.com>
    Reviewed-by: Jijie Shao <shaojijie@huawei.com>
    Link: https://patch.msgid.link/20260206074450.154267-1-jiayuan.chen@linux.dev
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

serial: imx: change SERIAL_IMX_CONSOLE to bool [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
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 <rdunlap@infradead.org>
    Link: https://patch.msgid.link/20260110232643.3533351-2-rdunlap@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

serial: SH_SCI: improve "DMA support" prompt [+ + +]
Author: Randy Dunlap <rdunlap@infradead.org>
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 <rdunlap@infradead.org>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://patch.msgid.link/20260110232643.3533351-5-rdunlap@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smack: /smack/doi must be > 0 [+ + +]
Author: Konstantin Andreev <andreev@swemel.ru>
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 <andreev@swemel.ru>
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smack: /smack/doi: accept previously used values [+ + +]
Author: Konstantin Andreev <andreev@swemel.ru>
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 <andreev@swemel.ru>
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
soc: qcom: cmd-db: Use devm_memremap() to fix memory leak in cmd_db_dev_probe [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
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 <dmitry.baryshkov@oss.qualcomm.com>
    Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20251216013933.773-1-vulab@iscas.ac.cn
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

soc: ti: k3-socinfo: Fix regmap leak on probe failure [+ + +]
Author: Johan Hovold <johan@kernel.org>
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: stable@vger.kernel.org      # 6.15
    Cc: Andrew Davis <afd@ti.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Andrew Davis <afd@ti.com>
    Link: https://patch.msgid.link/20251127134942.2121-1-johan@kernel.org
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

soc: ti: pruss: Fix double free in pruss_clk_mux_setup() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
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: stable@vger.kernel.org
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Link: https://patch.msgid.link/20260113014716.2464741-1-vulab@iscas.ac.cn
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sparc: don't reference obsolete termio struct for TC* constants [+ + +]
Author: Sam James <sam@gentoo.org>
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 <sam@gentoo.org>
    Reviewed-by: Andreas Larsson <andreas@gaisler.com>
    Signed-off-by: Andreas Larsson <andreas@gaisler.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sparc: Synchronize user stack on fork and clone [+ + +]
Author: Andreas Larsson <andreas@gaisler.com>
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 <andreas@gaisler.com>
    Signed-off-by: Ludwig Rydberg <ludwig.rydberg@gaisler.com>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Link: https://lore.kernel.org/r/20260119144753.27945-2-ludwig.rydberg@gaisler.com
    Signed-off-by: Andreas Larsson <andreas@gaisler.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
spi: spi-mem: Protect dirmap_create() with spi_mem_access_start/end [+ + +]
Author: Chin-Ting Kuo <chin-ting_kuo@aspeedtech.com>
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 <chin-ting_kuo@aspeedtech.com>
    Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Link: https://patch.msgid.link/20260120123005.1392071-2-chin-ting_kuo@aspeedtech.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: tools: Add include folder to .gitignore [+ + +]
Author: Francesco Lavra <flavra@baylibre.com>
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 <flavra@baylibre.com>
    Link: https://patch.msgid.link/20260209095001.556495-1-flavra@baylibre.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
staging: greybus: lights: avoid NULL deref [+ + +]
Author: Chaitanya Mishra <chaitanyamishra.ai@gmail.com>
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/20260108103700.15384-1-chaitanyamishra.ai@gmail.com/
    Reviewed-by: Rui Miguel Silva <rui.silva@linaro.org>
    Signed-off-by: Chaitanya Mishra <chaitanyamishra.ai@gmail.com>
    Link: https://patch.msgid.link/20260108151254.81553-1-chaitanyamishra.ai@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
SUNRPC: auth_gss: fix memory leaks in XDR decoding error paths [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
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 <micro6947@gmail.com>
    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: stable@vger.kernel.org
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

SUNRPC: fix gss_auth kref leak in gss_alloc_msg error path [+ + +]
Author: Daniel Hodges <git@danielhodges.dev>
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: stable@vger.kernel.org
    Signed-off-by: Daniel Hodges <git@danielhodges.dev>
    Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
svcrdma: Add a batch Receive posting mechanism [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Mar 11 13:54:34 2021 -0500

    svcrdma: Add a batch Receive posting mechanism
    
    [ Upstream commit 77f0a2aa5cdde0524eab745f7a117706d3e3014f ]
    
    Introduce a server-side mechanism similar to commit e340c2d6ef2a
    ("xprtrdma: Reduce the doorbell rate (Receive)") to post Receive
    WRs in batch. Its first consumer is svc_rdma_post_recvs(), which
    posts the initial set of Receive WRs.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

svcrdma: Clean up comment in svc_rdma_accept() [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
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 <chuck.lever@oracle.com>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

svcrdma: Increase the per-transport rw_ctx count [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
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 <chuck.lever@oracle.com>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

svcrdma: Maintain a Receive water mark [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Mar 11 18:32:30 2021 -0500

    svcrdma: Maintain a Receive water mark
    
    [ Upstream commit c558d47596867ff1082fd7475b63670f63f7f5cf ]
    
    Post more Receives when the number of pending Receives drops below
    a water mark. The batch mechanism is disabled if the underlying
    device cannot support a reasonably-sized Receive Queue.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

svcrdma: Reduce the number of rdma_rw contexts per-QP [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
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 <neil@brown.name>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

svcrdma: Remove queue-shortening warnings [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
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 <chuck.lever@oracle.com>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

svcrdma: Use svc_rdma_refresh_recvs() in wc_receive [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Mar 11 16:15:22 2021 -0500

    svcrdma: Use svc_rdma_refresh_recvs() in wc_receive
    
    [ Upstream commit 7b748c30cc046056a24c459de415844a856ea54b ]
    
    Replace svc_rdma_post_recv() with the new batch receive mechanism.
    For the moment it is posting just a single Receive WR at a time,
    so no change in behavior is expected.
    
    Since svc_rdma_wc_receive() was the last call site for
    svc_rdma_post_recv(), it is removed.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: afcae7d7b8a2 ("RDMA/core: add rdma_rw_max_sge() helper for SQ sizing")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tcp: tcp_tx_timestamp() must look at the rtx queue [+ + +]
Author: Eric Dumazet <edumazet@google.com>
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 <edumazet@google.com>
    Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
    Link: https://patch.msgid.link/20260127123828.4098577-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tipc: fix RCU dereference race in tipc_aead_users_dec() [+ + +]
Author: Daniel Hodges <hodgesd@meta.com>
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: stable@vger.kernel.org
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Daniel Hodges <hodgesd@meta.com>
    Link: https://patch.msgid.link/20260203145621.17399-1-git@danielhodges.dev
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools/power cpupower: Reset errno before strtoull() [+ + +]
Author: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
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/20251201121745.3776703-1-kaushlendra.kumar@intel.com
    Signed-off-by: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tpm: st33zp24: Fix missing cleanup on get_burstcount() error [+ + +]
Author: Alper Ak <alperyasinak1@gmail.com>
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 <alperyasinak1@gmail.com>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tpm: tpm_i2c_infineon: Fix locality leak on get_burstcount() failure [+ + +]
Author: Alper Ak <alperyasinak1@gmail.com>
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 <alperyasinak1@gmail.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing: Remove duplicate ENABLE_EVENT_STR and DISABLE_EVENT_STR macros [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
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 <mhiramat@kernel.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Tom Zanussi <zanussi@kernel.org>
    Link: https://patch.msgid.link/20260126130037.4ba201f9@gandalf.local.home
    Fixes: d0bad49bb0a09 ("tracing: Add enable_hist/disable_hist triggers")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ucount: check for CAP_SYS_RESOURCE using ns_capable_noaudit() [+ + +]
Author: Ondrej Mosnacek <omosnace@redhat.com>
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/20260122140745.239428-1-omosnace@redhat.com
    Fixes: dbec28460a89 ("userns: Add per user namespace sysctls.")
    Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
    Reviewed-by: Paul Moore <paul@paul-moore.com>
    Acked-by: Serge Hallyn <serge@hallyn.com>
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: Alexey Gladkov <legion@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: bdc: fix sleep during atomic [+ + +]
Author: Justin Chen <justin.chen@broadcom.com>
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 <justin.chen@broadcom.com>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20260120200754.2488765-1-justin.chen@broadcom.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: dwc2: fix resume failure if dr_mode is host [+ + +]
Author: Jisheng Zhang <jszhang@kernel.org>
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 <stable@kernel.org>
    Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
    Link: https://patch.msgid.link/20260129021534.10411-1-jszhang@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: gadget: tegra-xudc: Add handling for BLCG_COREPLL_PWRDN [+ + +]
Author: Haotien Hsu <haotienh@nvidia.com>
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 <stable@kernel.org>
    Signed-off-by: Haotien Hsu <haotienh@nvidia.com>
    Signed-off-by: Wayne Chang <waynec@nvidia.com>
    Link: https://patch.msgid.link/20260123173121.4093902-1-waynec@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usbb: catc: use correct API for MAC addresses [+ + +]
Author: Oliver Neukum <oneukum@suse.com>
Date:   Mon Oct 25 16:11:21 2021 +0200

    usbb: catc: use correct API for MAC addresses
    
    [ Upstream commit 7ce9a701ac8f44798e46dede02b924504dc65a5c ]
    
    Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
    of VLANs...") introduced a rbtree for faster Ethernet address look
    up. To maintain netdev->dev_addr in this tree we need to make all
    the writes to it got through appropriate helpers.
    
    In the case of catc we need a new temporary buffer to conform
    to the rules for DMA coherency. That in turn necessitates
    a reworking of error handling in probe().
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: 9e7021d2aeae ("net: usb: catc: enable basic endpoint checking")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
virt: vbox: uapi: Mark inner unions in packed structs as packed [+ + +]
Author: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
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 <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202512140314.DzDxpIVn-lkp@intel.com/
    Reported-by: Nathan Chancellor <nathan@kernel.org>
    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 <arnd@arndb.de>
    Link: https://lore.kernel.org/linux-kbuild/29b2e736-d462-45b7-a0a9-85f8d8a3de56@app.fastmail.com/
    Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Tested-by: Nicolas Schier <nsc@kernel.org>
    Reviewed-by: Nicolas Schier <nsc@kernel.org>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://patch.msgid.link/20260115-kbuild-alignment-vbox-v1-2-076aed1623ff@linutronix.de
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vmw_vsock: bypass false-positive Wnonnull warning with gcc-16 [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
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 <arnd@arndb.de>
    Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: Bryan Tan <bryan-bt.tan@broadcom.com>
    Link: https://patch.msgid.link/20260203163406.2636463-1-arnd@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: ath10k: fix lock protection in ath10k_wmi_event_peer_sta_ps_state_chg() [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
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 <n7l8m4@u.northwestern.edu>
    Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
    Link: https://patch.msgid.link/20260123175611.767731-1-n7l8m4@u.northwestern.edu
    [removed excess blank line]
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath10k: sdio: add missing lock protection in ath10k_sdio_fw_crashed_dump() [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
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 <n7l8m4@u.northwestern.edu>
    Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
    Link: https://patch.msgid.link/20260123045822.2221549-1-n7l8m4@u.northwestern.edu
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: stop NAN and P2P in cfg80211_leave [+ + +]
Author: Miri Korenblit <miriam.rachel.korenblit@intel.com>
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 <johannes.berg@intel.com>
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20260107140430.dab142cbef0b.I290cc47836d56dd7e35012ce06bec36c6da688cd@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: wext: fix IGTK key ID off-by-one [+ + +]
Author: Johannes Berg <johannes.berg@intel.com>
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 <j@w1.fi>
    Fixes: 08645126dd24 ("cfg80211: implement wext key handling")
    Link: https://patch.msgid.link/20260209181220.362205-2-johannes@sipsolutions.net
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlegacy: add missing mutex protection in il3945_store_measurement() [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
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 <n7l8m4@u.northwestern.edu>
    Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
    Link: https://patch.msgid.link/20260125193005.1090429-1-n7l8m4@u.northwestern.edu
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: iwlegacy: add missing mutex protection in il4965_store_tx_power() [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
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 <n7l8m4@u.northwestern.edu>
    Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
    Link: https://patch.msgid.link/20260125194039.1196488-1-n7l8m4@u.northwestern.edu
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: libertas: fix WARNING in usb_tx_block [+ + +]
Author: Szymon Wilczek <swilczek.lx@gmail.com>
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: syzbot+67969ab6a2551c27f71b@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=67969ab6a2551c27f71b
    Signed-off-by: Szymon Wilczek <swilczek.lx@gmail.com>
    Link: https://patch.msgid.link/20251221155806.23925-1-swilczek.lx@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/xen/pvh: Enable PAE mode for 32-bit guest only when CONFIG_X86_PAE is set [+ + +]
Author: Hou Wenlong <houwenlong.hwl@antgroup.com>
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 <houwenlong.hwl@antgroup.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Message-ID: <d09ce9a134eb9cbc16928a5b316969f8ba606b81.1768017442.git.houwenlong.hwl@antgroup.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xen-netback: reject zero-queue configuration from guest [+ + +]
Author: Ziyi Guo <n7l8m4@u.northwestern.edu>
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 <n7l8m4@u.northwestern.edu>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://patch.msgid.link/20260212224040.86674-1-n7l8m4@u.northwestern.edu
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xenbus: Use .freeze/.thaw to handle xenbus devices [+ + +]
Author: Jason Andryuk <jason.andryuk@amd.com>
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 <jason.andryuk@amd.com>
    Acked-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Message-ID: <20251119224731.61497-2-jason.andryuk@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfrm6: fix uninitialized saddr in xfrm6_get_saddr() [+ + +]
Author: Jiayuan Chen <jiayuan.chen@shopee.com>
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: syzbot+e136d86d34b42399a8b1@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/68bf1024.a70a0220.7a912.02c2.GAE@google.com/T/
    Signed-off-by: Jiayuan Chen <jiayuan.chen@shopee.com>
    Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfs: delete attr leaf freemap entries when empty [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
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: <stable@vger.kernel.org> # v2.6.12
    Fixes: 1da177e4c3f415 ("Linux-2.6.12-rc2")
    Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfs: fix freemap adjustments when adding xattrs to leaf blocks [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
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: <stable@vger.kernel.org> # v2.6.12
    Fixes: 1da177e4c3f415 ("Linux-2.6.12-rc2")
    Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfs: fix remote xattr valuelblk check [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
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: <stable@vger.kernel.org> # v4.15
    Fixes: 13791d3b833428 ("xfs: scrub extended attribute leaf space")
    Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfs: mark data structures corrupt on EIO and ENODATA [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
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: stable@vger.kernel.org # v4.15
    Fixes: 4700d22980d459 ("xfs: create helpers to record and deal with scrub problems")
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Carlos Maiolino <cem@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>