Changelog in Linux kernel 5.10.251

 
ALSA: hda/realtek: Fix headset mic for TongFang X6AR55xU [+ + +]
Author: Tim Guttzeit <t.guttzeit@tuxedocomputers.com>
Date:   Mon Jan 19 16:15:55 2026 +0100

    ALSA: hda/realtek: Fix headset mic for TongFang X6AR55xU
    
    [ Upstream commit b48fe9af1e60360baf09ca6b7a3cd6541f16e611 ]
    
    Add a PCI quirk to enable microphone detection on the headphone jack of
    TongFang X6AR55xU devices.
    
    Signed-off-by: Tim Guttzeit <t.guttzeit@tuxedocomputers.com>
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Link: https://patch.msgid.link/20260119151626.35481-1-wse@tuxedocomputers.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: octeontx - Fix length check to avoid truncation in ucode_load_store [+ + +]
Author: Thorsten Blum <thorsten.blum@linux.dev>
Date:   Wed Nov 26 10:46:13 2025 +0100

    crypto: octeontx - Fix length check to avoid truncation in ucode_load_store
    
    commit 5565a72b24fa7935a9f30af386e92c8c9dfb23b9 upstream.
    
    OTX_CPT_UCODE_NAME_LENGTH limits the microcode name to 64 bytes. If a
    user writes a string of exactly 64 characters, the original code used
    'strlen(buf) > 64' to check the length, but then strscpy() copies only
    63 characters before adding a NUL terminator, silently truncating the
    copied string.
    
    Fix this off-by-one error by using 'count' directly for the length check
    to ensure long names are rejected early and copied without truncation.
    
    Cc: stable@vger.kernel.org
    Fixes: d9110b0b01ff ("crypto: marvell - add support for OCTEON TX CPT engine")
    Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
crypto: omap - Allocate OMAP_CRYPTO_FORCE_COPY scatterlists correctly [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Feb 6 19:49:54 2026 -0800

    crypto: omap - Allocate OMAP_CRYPTO_FORCE_COPY scatterlists correctly
    
    commit 1562b1fb7e17c1b3addb15e125c718b2be7f5512 upstream.
    
    The existing allocation of scatterlists in omap_crypto_copy_sg_lists()
    was allocating an array of scatterlist pointers, not scatterlist objects,
    resulting in a 4x too small allocation.
    
    Use sizeof(*new_sg) to get the correct object size.
    
    Fixes: 74ed87e7e7f7 ("crypto: omap - add base support library for common routines")
    Signed-off-by: Kees Cook <kees@kernel.org>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: virtio - Add spinlock protection with virtqueue notification [+ + +]
Author: Bibo Mao <maobibo@loongson.cn>
Date:   Tue Jan 13 11:05:54 2026 +0800

    crypto: virtio - Add spinlock protection with virtqueue notification
    
    commit b505047ffc8057555900d2d3a005d033e6967382 upstream.
    
    When VM boots with one virtio-crypto PCI device and builtin backend,
    run openssl benchmark command with multiple processes, such as
      openssl speed -evp aes-128-cbc -engine afalg  -seconds 10 -multi 32
    
    openssl processes will hangup and there is error reported like this:
     virtio_crypto virtio0: dataq.0:id 3 is not a head!
    
    It seems that the data virtqueue need protection when it is handled
    for virtio done notification. If the spinlock protection is added
    in virtcrypto_done_task(), openssl benchmark with multiple processes
    works well.
    
    Fixes: fed93fb62e05 ("crypto: virtio - Handle dataq logic with tasklet")
    Cc: stable@vger.kernel.org
    Signed-off-by: Bibo Mao <maobibo@loongson.cn>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: virtio - Remove duplicated virtqueue_kick in virtio_crypto_skcipher_crypt_req [+ + +]
Author: Bibo Mao <maobibo@loongson.cn>
Date:   Fri Feb 13 09:33:54 2026 -0500

    crypto: virtio - Remove duplicated virtqueue_kick in virtio_crypto_skcipher_crypt_req
    
    [ Upstream commit 14f86a1155cca1176abf55987b2fce7f7fcb2455 ]
    
    With function virtio_crypto_skcipher_crypt_req(), there is already
    virtqueue_kick() call with spinlock held in function
    __virtio_crypto_skcipher_do_req(). Remove duplicated virtqueue_kick()
    function call here.
    
    Fixes: d79b5d0bbf2e ("crypto: virtio - support crypto engine framework")
    Cc: stable@vger.kernel.org
    Signed-off-by: Bibo Mao <maobibo@loongson.cn>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/tegra: hdmi: sor: Fix error: variable ‘j’ set but not used [+ + +]
Author: Brahmajit Das <listout@listout.xyz>
Date:   Tue Sep 2 02:50:20 2025 +0530

    drm/tegra: hdmi: sor: Fix error: variable ‘j’ set but not used
    
    [ Upstream commit 1beee8d0c263b3e239c8d6616e4f8bb700bed658 ]
    
    The variable j is set, however never used in or outside the loop, thus
    resulting in dead code.
    Building with GCC 16 results in a build error due to
    -Werror=unused-but-set-variable= enabled by default.
    This patch clean up the dead code and fixes the build error.
    
    Example build log:
    drivers/gpu/drm/tegra/sor.c:1867:19: error: variable ‘j’ set but not used [-Werror=unused-but-set-variable=]
     1867 |         size_t i, j;
          |                   ^
    
    Signed-off-by: Brahmajit Das <listout@listout.xyz>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://lore.kernel.org/r/20250901212020.3757519-1-listout@listout.xyz
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
f2fs: fix out-of-bounds access in sysfs attribute read/write [+ + +]
Author: Yongpeng Yang <yangyongpeng@xiaomi.com>
Date:   Tue Feb 17 11:24:58 2026 -0500

    f2fs: fix out-of-bounds access in sysfs attribute read/write
    
    [ Upstream commit 98ea0039dbfdd00e5cc1b9a8afa40434476c0955 ]
    
    Some f2fs sysfs attributes suffer from out-of-bounds memory access and
    incorrect handling of integer values whose size is not 4 bytes.
    
    For example:
    vm:~# echo 65537 > /sys/fs/f2fs/vde/carve_out
    vm:~# cat /sys/fs/f2fs/vde/carve_out
    65537
    vm:~# echo 4294967297 > /sys/fs/f2fs/vde/atgc_age_threshold
    vm:~# cat /sys/fs/f2fs/vde/atgc_age_threshold
    1
    
    carve_out maps to {struct f2fs_sb_info}->carve_out, which is a 8-bit
    integer. However, the sysfs interface allows setting it to a value
    larger than 255, resulting in an out-of-range update.
    
    atgc_age_threshold maps to {struct atgc_management}->age_threshold,
    which is a 64-bit integer, but its sysfs interface cannot correctly set
    values larger than UINT_MAX.
    
    The root causes are:
    1. __sbi_store() treats all default values as unsigned int, which
    prevents updating integers larger than 4 bytes and causes out-of-bounds
    writes for integers smaller than 4 bytes.
    
    2. f2fs_sbi_show() also assumes all default values are unsigned int,
    leading to out-of-bounds reads and incorrect access to integers larger
    than 4 bytes.
    
    This patch introduces {struct f2fs_attr}->size to record the actual size
    of the integer associated with each sysfs attribute. With this
    information, sysfs read and write operations can correctly access and
    update values according to their real data size, avoiding memory
    corruption and truncation.
    
    Fixes: b59d0bae6ca3 ("f2fs: add sysfs support for controlling the gc_thread")
    Cc: stable@kernel.org
    Signed-off-by: Jinbao Liu <liujinbao1@xiaomi.com>
    Signed-off-by: Yongpeng Yang <yangyongpeng@xiaomi.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [ f2fs_sbi_show() changes + .size for F2FS_STAT_ATTR ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

f2fs: fix to avoid UAF in f2fs_write_end_io() [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Tue Feb 17 11:18:33 2026 -0500

    f2fs: fix to avoid UAF in f2fs_write_end_io()
    
    [ Upstream commit ce2739e482bce8d2c014d76c4531c877f382aa54 ]
    
    As syzbot reported an use-after-free issue in f2fs_write_end_io().
    
    It is caused by below race condition:
    
    loop device                             umount
    - worker_thread
     - loop_process_work
      - do_req_filebacked
       - lo_rw_aio
        - lo_rw_aio_complete
         - blk_mq_end_request
          - blk_update_request
           - f2fs_write_end_io
            - dec_page_count
            - folio_end_writeback
                                            - kill_f2fs_super
                                             - kill_block_super
                                              - f2fs_put_super
                                             : free(sbi)
           : get_pages(, F2FS_WB_CP_DATA)
             accessed sbi which is freed
    
    In kill_f2fs_super(), we will drop all page caches of f2fs inodes before
    call free(sbi), it guarantee that all folios should end its writeback, so
    it should be safe to access sbi before last folio_end_writeback().
    
    Let's relocate ckpt thread wakeup flow before folio_end_writeback() to
    resolve this issue.
    
    Cc: stable@kernel.org
    Fixes: e234088758fc ("f2fs: avoid wait if IO end up when do_checkpoint for better performance")
    Reported-by: syzbot+b4444e3c972a7a124187@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=b4444e3c972a7a124187
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [ folio => page ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fbdev: rivafb: fix divide error in nv3_arb() [+ + +]
Author: Guangshuo Li <lgs201920130244@gmail.com>
Date:   Sun Dec 7 15:25:32 2025 +0800

    fbdev: rivafb: fix divide error in nv3_arb()
    
    commit 0209e21e3c372fa2da04c39214bec0b64e4eb5f4 upstream.
    
    A userspace program can trigger the RIVA NV3 arbitration code by calling
    the FBIOPUT_VSCREENINFO ioctl on /dev/fb*. When doing so, the driver
    recomputes FIFO arbitration parameters in nv3_arb(), using state->mclk_khz
    (derived from the PRAMDAC MCLK PLL) as a divisor without validating it
    first.
    
    In a normal setup, state->mclk_khz is provided by the real hardware and is
    non-zero. However, an attacker can construct a malicious or misconfigured
    device (e.g. a crafted/emulated PCI device) that exposes a bogus PLL
    configuration, causing state->mclk_khz to become zero.  Once
    nv3_get_param() calls nv3_arb(), the division by state->mclk_khz in the gns
    calculation causes a divide error and crashes the kernel.
    
    Fix this by checking whether state->mclk_khz is zero and bailing out before
    doing the division.
    
    The following log reveals it:
    
    rivafb: setting virtual Y resolution to 2184
    divide error: 0000 [#1] PREEMPT SMP KASAN PTI
    CPU: 0 PID: 2187 Comm: syz-executor.0 Not tainted 5.18.0-rc1+ #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    RIP: 0010:nv3_arb drivers/video/fbdev/riva/riva_hw.c:439 [inline]
    RIP: 0010:nv3_get_param+0x3ab/0x13b0 drivers/video/fbdev/riva/riva_hw.c:546
    Call Trace:
      nv3CalcArbitration.constprop.0+0x255/0x460 drivers/video/fbdev/riva/riva_hw.c:603
      nv3UpdateArbitrationSettings drivers/video/fbdev/riva/riva_hw.c:637 [inline]
      CalcStateExt+0x447/0x1b90 drivers/video/fbdev/riva/riva_hw.c:1246
      riva_load_video_mode+0x8a9/0xea0 drivers/video/fbdev/riva/fbdev.c:779
      rivafb_set_par+0xc0/0x5f0 drivers/video/fbdev/riva/fbdev.c:1196
      fb_set_var+0x604/0xeb0 drivers/video/fbdev/core/fbmem.c:1033
      do_fb_ioctl+0x234/0x670 drivers/video/fbdev/core/fbmem.c:1109
      fb_ioctl+0xdd/0x130 drivers/video/fbdev/core/fbmem.c:1188
      __x64_sys_ioctl+0x122/0x190 fs/ioctl.c:856
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org
    Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

fbdev: smscufx: properly copy ioctl memory to kernelspace [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Dec 28 14:17:03 2025 +0100

    fbdev: smscufx: properly copy ioctl memory to kernelspace
    
    commit 120adae7b42faa641179270c067864544a50ab69 upstream.
    
    The UFX_IOCTL_REPORT_DAMAGE ioctl does not properly copy data from
    userspace to kernelspace, and instead directly references the memory,
    which can cause problems if invalid data is passed from userspace.  Fix
    this all up by correctly copying the memory before accessing it within
    the kernel.
    
    Reported-by: Tianchu Chen <flynnnchen@tencent.com>
    Cc: stable <stable@kernel.org>
    Cc: Steve Glendinning <steve.glendinning@shawell.net>
    Cc: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs: dlm: fix invalid derefence of sb_lvbptr [+ + +]
Author: Alexander Aring <aahringo@redhat.com>
Date:   Thu Feb 12 10:51:12 2026 +0000

    fs: dlm: fix invalid derefence of sb_lvbptr
    
    [ Upstream commit 7175e131ebba47afef47e6ac4d5bab474d1e6e49 ]
    
    I experience issues when putting a lkbsb on the stack and have sb_lvbptr
    field to a dangled pointer while not using DLM_LKF_VALBLK. It will crash
    with the following kernel message, the dangled pointer is here
    0xdeadbeef as example:
    
    [  102.749317] BUG: unable to handle page fault for address: 00000000deadbeef
    [  102.749320] #PF: supervisor read access in kernel mode
    [  102.749323] #PF: error_code(0x0000) - not-present page
    [  102.749325] PGD 0 P4D 0
    [  102.749332] Oops: 0000 [#1] PREEMPT SMP PTI
    [  102.749336] CPU: 0 PID: 1567 Comm: lock_torture_wr Tainted: G        W         5.19.0-rc3+ #1565
    [  102.749343] Hardware name: Red Hat KVM/RHEL-AV, BIOS 1.16.0-2.module+el8.7.0+15506+033991b0 04/01/2014
    [  102.749344] RIP: 0010:memcpy_erms+0x6/0x10
    [  102.749353] Code: cc cc cc cc eb 1e 0f 1f 00 48 89 f8 48 89 d1 48 c1 e9 03 83 e2 07 f3 48 a5 89 d1 f3 a4 c3 66 0f 1f 44 00 00 48 89 f8 48 89 d1 <f3> a4 c3 0f 1f 80 00 00 00 00 48 89 f8 48 83 fa 20 72 7e 40 38 fe
    [  102.749355] RSP: 0018:ffff97a58145fd08 EFLAGS: 00010202
    [  102.749358] RAX: ffff901778b77070 RBX: 0000000000000000 RCX: 0000000000000040
    [  102.749360] RDX: 0000000000000040 RSI: 00000000deadbeef RDI: ffff901778b77070
    [  102.749362] RBP: ffff97a58145fd10 R08: ffff901760b67a70 R09: 0000000000000001
    [  102.749364] R10: ffff9017008e2cb8 R11: 0000000000000001 R12: ffff901760b67a70
    [  102.749366] R13: ffff901760b78f00 R14: 0000000000000003 R15: 0000000000000001
    [  102.749368] FS:  0000000000000000(0000) GS:ffff901876e00000(0000) knlGS:0000000000000000
    [  102.749372] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  102.749374] CR2: 00000000deadbeef CR3: 000000017c49a004 CR4: 0000000000770ef0
    [  102.749376] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  102.749378] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  102.749379] PKRU: 55555554
    [  102.749381] Call Trace:
    [  102.749382]  <TASK>
    [  102.749383]  ? send_args+0xb2/0xd0
    [  102.749389]  send_common+0xb7/0xd0
    [  102.749395]  _unlock_lock+0x2c/0x90
    [  102.749400]  unlock_lock.isra.56+0x62/0xa0
    [  102.749405]  dlm_unlock+0x21e/0x330
    [  102.749411]  ? lock_torture_stats+0x80/0x80 [dlm_locktorture]
    [  102.749416]  torture_unlock+0x5a/0x90 [dlm_locktorture]
    [  102.749419]  ? preempt_count_sub+0xba/0x100
    [  102.749427]  lock_torture_writer+0xbd/0x150 [dlm_locktorture]
    [  102.786186]  kthread+0x10a/0x130
    [  102.786581]  ? kthread_complete_and_exit+0x20/0x20
    [  102.787156]  ret_from_fork+0x22/0x30
    [  102.787588]  </TASK>
    [  102.787855] Modules linked in: dlm_locktorture torture rpcsec_gss_krb5 intel_rapl_msr intel_rapl_common kvm_intel iTCO_wdt iTCO_vendor_support kvm vmw_vsock_virtio_transport qxl irqbypass vmw_vsock_virtio_transport_common drm_ttm_helper crc32_pclmul joydev crc32c_intel ttm vsock virtio_scsi virtio_balloon snd_pcm drm_kms_helper virtio_console snd_timer snd drm soundcore syscopyarea i2c_i801 sysfillrect sysimgblt i2c_smbus pcspkr fb_sys_fops lpc_ich serio_raw
    [  102.792536] CR2: 00000000deadbeef
    [  102.792930] ---[ end trace 0000000000000000 ]---
    
    This patch fixes the issue by checking also on DLM_LKF_VALBLK on exflags
    is set when copying the lvbptr array instead of if it's just null which
    fixes for me the issue.
    
    I think this patch can fix other dlm users as well, depending how they
    handle the init, freeing memory handling of sb_lvbptr and don't set
    DLM_LKF_VALBLK for some dlm_lock() calls. It might a there could be a
    hidden issue all the time. However with checking on DLM_LKF_VALBLK the
    user always need to provide a sb_lvbptr non-null value. There might be
    more intelligent handling between per ls lvblen, DLM_LKF_VALBLK and
    non-null to report the user the way how DLM API is used is wrong but can
    be added for later, this will only fix the current behaviour.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: David Teigland <teigland@redhat.com>
    [ Adjust context ]
    Signed-off-by: Bin Lan <lanbincn@139.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gpio: omap: do not register driver in probe() [+ + +]
Author: Danilo Krummrich <dakr@kernel.org>
Date:   Tue Jan 27 21:17:12 2026 +0100

    gpio: omap: do not register driver in probe()
    
    commit 730e5ebff40c852e3ea57b71bf02a4b89c69435f upstream.
    
    Commit 11a78b794496 ("ARM: OMAP: MPUIO wake updates") registers the
    omap_mpuio_driver from omap_mpuio_init(), which is called from
    omap_gpio_probe().
    
    However, it neither makes sense to register drivers from probe()
    callbacks of other drivers, nor does the driver core allow registering
    drivers with a device lock already being held.
    
    The latter was revealed by commit dc23806a7c47 ("driver core: enforce
    device_lock for driver_match_device()") leading to a potential deadlock
    condition described in [1].
    
    Additionally, the omap_mpuio_driver is never unregistered from the
    driver core, even if the module is unloaded.
    
    Hence, register the omap_mpuio_driver from the module initcall and
    unregister it in module_exit().
    
    Link: https://lore.kernel.org/lkml/DFU7CEPUSG9A.1KKGVW4HIPMSH@kernel.org/ [1]
    Fixes: dc23806a7c47 ("driver core: enforce device_lock for driver_match_device()")
    Fixes: 11a78b794496 ("ARM: OMAP: MPUIO wake updates")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Danilo Krummrich <dakr@kernel.org>
    Reviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
    Link: https://patch.msgid.link/20260127201725.35883-1-dakr@kernel.org
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: sprd: Change sprd_gpio lock to raw_spin_lock [+ + +]
Author: Xuewen Yan <xuewen.yan@unisoc.com>
Date:   Mon Jan 26 17:42:09 2026 +0800

    gpio: sprd: Change sprd_gpio lock to raw_spin_lock
    
    [ Upstream commit 96313fcc1f062ba239f4832c9eff685da6c51c99 ]
    
    There was a lockdep warning in sprd_gpio:
    
    [    6.258269][T329@C6] [ BUG: Invalid wait context ]
    [    6.258270][T329@C6] 6.18.0-android17-0-g30527ad7aaae-ab00009-4k #1 Tainted: G        W  OE
    [    6.258272][T329@C6] -----------------------------
    [    6.258273][T329@C6] modprobe/329 is trying to lock:
    [    6.258275][T329@C6] ffffff8081c91690 (&sprd_gpio->lock){....}-{3:3}, at: sprd_gpio_irq_unmask+0x4c/0xa4 [gpio_sprd]
    [    6.258282][T329@C6] other info that might help us debug this:
    [    6.258283][T329@C6] context-{5:5}
    [    6.258285][T329@C6] 3 locks held by modprobe/329:
    [    6.258286][T329@C6]  #0: ffffff808baca108 (&dev->mutex){....}-{4:4}, at: __driver_attach+0xc4/0x204
    [    6.258295][T329@C6]  #1: ffffff80965e7240 (request_class#4){+.+.}-{4:4}, at: __setup_irq+0x1cc/0x82c
    [    6.258304][T329@C6]  #2: ffffff80965e70c8 (lock_class#4){....}-{2:2}, at: __setup_irq+0x21c/0x82c
    [    6.258313][T329@C6] stack backtrace:
    [    6.258314][T329@C6] CPU: 6 UID: 0 PID: 329 Comm: modprobe Tainted: G        W  OE       6.18.0-android17-0-g30527ad7aaae-ab00009-4k #1 PREEMPT  3ad5b0f45741a16e5838da790706e16ceb6717df
    [    6.258316][T329@C6] Tainted: [W]=WARN, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    [    6.258317][T329@C6] Hardware name: Unisoc UMS9632-base Board (DT)
    [    6.258318][T329@C6] Call trace:
    [    6.258318][T329@C6]  show_stack+0x20/0x30 (C)
    [    6.258321][T329@C6]  __dump_stack+0x28/0x3c
    [    6.258324][T329@C6]  dump_stack_lvl+0xac/0xf0
    [    6.258326][T329@C6]  dump_stack+0x18/0x3c
    [    6.258329][T329@C6]  __lock_acquire+0x824/0x2c28
    [    6.258331][T329@C6]  lock_acquire+0x148/0x2cc
    [    6.258333][T329@C6]  _raw_spin_lock_irqsave+0x6c/0xb4
    [    6.258334][T329@C6]  sprd_gpio_irq_unmask+0x4c/0xa4 [gpio_sprd 814535e93c6d8e0853c45c02eab0fa88a9da6487]
    [    6.258337][T329@C6]  irq_startup+0x238/0x350
    [    6.258340][T329@C6]  __setup_irq+0x504/0x82c
    [    6.258342][T329@C6]  request_threaded_irq+0x118/0x184
    [    6.258344][T329@C6]  devm_request_threaded_irq+0x94/0x120
    [    6.258347][T329@C6]  sc8546_init_irq+0x114/0x170 [sc8546_charger 223586ccafc27439f7db4f95b0c8e6e882349a99]
    [    6.258352][T329@C6]  sc8546_charger_probe+0x53c/0x5a0 [sc8546_charger 223586ccafc27439f7db4f95b0c8e6e882349a99]
    [    6.258358][T329@C6]  i2c_device_probe+0x2c8/0x350
    [    6.258361][T329@C6]  really_probe+0x1a8/0x46c
    [    6.258363][T329@C6]  __driver_probe_device+0xa4/0x10c
    [    6.258366][T329@C6]  driver_probe_device+0x44/0x1b4
    [    6.258369][T329@C6]  __driver_attach+0xd0/0x204
    [    6.258371][T329@C6]  bus_for_each_dev+0x10c/0x168
    [    6.258373][T329@C6]  driver_attach+0x2c/0x3c
    [    6.258376][T329@C6]  bus_add_driver+0x154/0x29c
    [    6.258378][T329@C6]  driver_register+0x70/0x10c
    [    6.258381][T329@C6]  i2c_register_driver+0x48/0xc8
    [    6.258384][T329@C6]  init_module+0x28/0xfd8 [sc8546_charger 223586ccafc27439f7db4f95b0c8e6e882349a99]
    [    6.258389][T329@C6]  do_one_initcall+0x128/0x42c
    [    6.258392][T329@C6]  do_init_module+0x60/0x254
    [    6.258395][T329@C6]  load_module+0x1054/0x1220
    [    6.258397][T329@C6]  __arm64_sys_finit_module+0x240/0x35c
    [    6.258400][T329@C6]  invoke_syscall+0x60/0xec
    [    6.258402][T329@C6]  el0_svc_common+0xb0/0xe4
    [    6.258405][T329@C6]  do_el0_svc+0x24/0x30
    [    6.258407][T329@C6]  el0_svc+0x54/0x1c4
    [    6.258409][T329@C6]  el0t_64_sync_handler+0x68/0xdc
    [    6.258411][T329@C6]  el0t_64_sync+0x1c4/0x1c8
    
    This is because the spin_lock would change to rt_mutex in PREEMPT_RT,
    however the sprd_gpio->lock would use in hard-irq, this is unsafe.
    
    So change the spin_lock_t to raw_spin_lock_t to use the spinlock
    in hard-irq.
    
    Signed-off-by: Xuewen Yan <xuewen.yan@unisoc.com>
    Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
    Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/20260126094209.9855-1-xuewen.yan@unisoc.com
    [Bartosz: tweaked the commit message]
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpiolib: acpi: Fix gpio count with string references [+ + +]
Author: Alban Bedel <alban.bedel@lht.dlh.de>
Date:   Thu Jan 29 15:59:44 2026 +0100

    gpiolib: acpi: Fix gpio count with string references
    
    [ Upstream commit c62e0658d458d8f100445445c3ddb106f3824a45 ]
    
    Since commit 9880702d123f2 ("ACPI: property: Support using strings in
    reference properties") it is possible to use strings instead of local
    references. This work fine with single GPIO but not with arrays as
    acpi_gpio_package_count() didn't handle this case. Update it to handle
    strings like local references to cover this case as well.
    
    Signed-off-by: Alban Bedel <alban.bedel@lht.dlh.de>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://patch.msgid.link/20260129145944.3372777-1-alban.bedel@lht.dlh.de
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 5.10.251 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Feb 19 16:20:27 2026 +0100

    Linux 5.10.251
    
    Link: https://lore.kernel.org/r/20260217200000.708219618@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Woody Suwalski <terraluna977@gmail.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Pavel Machek (CIP) <pavel@nabladev.com>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Barry K. Nathan <barryn@pobox.com>
    Tested-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nilfs2: Fix potential block overflow that cause system hang [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Sat Dec 20 03:04:25 2025 +0900

    nilfs2: Fix potential block overflow that cause system hang
    
    commit ed527ef0c264e4bed6c7b2a158ddf516b17f5f66 upstream.
    
    When a user executes the FITRIM command, an underflow can occur when
    calculating nblocks if end_block is too small. Since nblocks is of
    type sector_t, which is u64, a negative nblocks value will become a
    very large positive integer. This ultimately leads to the block layer
    function __blkdev_issue_discard() taking an excessively long time to
    process the bio chain, and the ns_segctor_sem lock remains held for a
    long period. This prevents other tasks from acquiring the ns_segctor_sem
    lock, resulting in the hang reported by syzbot in [1].
    
    If the ending block is too small, typically if it is smaller than 4KiB
    range, depending on the usage of the segment 0, it may be possible to
    attempt a discard request beyond the device size causing the hang.
    
    Exiting successfully and assign the discarded size (0 in this case)
    to range->len.
    
    Although the start and len values in the user input range are too small,
    a conservative strategy is adopted here to safely ignore them, which is
    equivalent to a no-op; it will not perform any trimming and will not
    throw an error.
    
    [1]
    task:segctord state:D stack:28968 pid:6093 tgid:6093  ppid:2 task_flags:0x200040 flags:0x00080000
    Call Trace:
     rwbase_write_lock+0x3dd/0x750 kernel/locking/rwbase_rt.c:272
     nilfs_transaction_lock+0x253/0x4c0 fs/nilfs2/segment.c:357
     nilfs_segctor_thread_construct fs/nilfs2/segment.c:2569 [inline]
     nilfs_segctor_thread+0x6ec/0xe00 fs/nilfs2/segment.c:2684
    
    [ryusuke: corrected part of the commit message about the consequences]
    
    Fixes: 82e11e857be3 ("nilfs2: add nilfs_sufile_trim_fs to trim clean segs")
    Reported-by: syzbot+7eedce5eb281acd832f0@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=7eedce5eb281acd832f0
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86: classmate-laptop: Add missing NULL pointer checks [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Mon Jan 26 21:02:40 2026 +0100

    platform/x86: classmate-laptop: Add missing NULL pointer checks
    
    [ Upstream commit fe747d7112283f47169e9c16e751179a9b38611e ]
    
    In a few places in the Classmate laptop driver, code using the accel
    object may run before that object's address is stored in the driver
    data of the input device using it.
    
    For example, cmpc_accel_sensitivity_store_v4() is the "show" method
    of cmpc_accel_sensitivity_attr_v4 which is added in cmpc_accel_add_v4(),
    before calling dev_set_drvdata() for inputdev->dev.  If the sysfs
    attribute is accessed prematurely, the dev_get_drvdata(&inputdev->dev)
    call in in cmpc_accel_sensitivity_store_v4() returns NULL which
    leads to a NULL pointer dereference going forward.
    
    Moreover, sysfs attributes using the input device are added before
    initializing that device by cmpc_add_acpi_notify_device() and if one
    of them is accessed before running that function, a NULL pointer
    dereference will occur.
    
    For example, cmpc_accel_sensitivity_attr_v4 is added before calling
    cmpc_add_acpi_notify_device() and if it is read prematurely, the
    dev_get_drvdata(&acpi->dev) call in cmpc_accel_sensitivity_show_v4()
    returns NULL which leads to a NULL pointer dereference going forward.
    
    Fix this by adding NULL pointer checks in all of the relevant places.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/12825381.O9o76ZdvQC@rafael.j.wysocki
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
romfs: check sb_set_blocksize() return value [+ + +]
Author: Deepanshu Kartikey <kartikey406@gmail.com>
Date:   Tue Jan 13 14:10:37 2026 +0530

    romfs: check sb_set_blocksize() return value
    
    [ Upstream commit ab7ad7abb3660c58ffffdf07ff3bb976e7e0afa0 ]
    
    romfs_fill_super() ignores the return value of sb_set_blocksize(), which
    can fail if the requested block size is incompatible with the block
    device's configuration.
    
    This can be triggered by setting a loop device's block size larger than
    PAGE_SIZE using ioctl(LOOP_SET_BLOCK_SIZE, 32768), then mounting a romfs
    filesystem on that device.
    
    When sb_set_blocksize(sb, ROMBSIZE) is called with ROMBSIZE=4096 but the
    device has logical_block_size=32768, bdev_validate_blocksize() fails
    because the requested size is smaller than the device's logical block
    size. sb_set_blocksize() returns 0 (failure), but romfs ignores this and
    continues mounting.
    
    The superblock's block size remains at the device's logical block size
    (32768). Later, when sb_bread() attempts I/O with this oversized block
    size, it triggers a kernel BUG in folio_set_bh():
    
        kernel BUG at fs/buffer.c:1582!
        BUG_ON(size > PAGE_SIZE);
    
    Fix by checking the return value of sb_set_blocksize() and failing the
    mount with -EINVAL if it returns 0.
    
    Reported-by: syzbot+9c4e33e12283d9437c25@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=9c4e33e12283d9437c25
    Signed-off-by: Deepanshu Kartikey <kartikey406@gmail.com>
    Link: https://patch.msgid.link/20260113084037.1167887-1-kartikey406@gmail.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: qla2xxx: Delay module unload while fabric scan in progress [+ + +]
Author: Anil Gurumurthy <agurumurthy@marvell.com>
Date:   Wed Dec 10 15:45:59 2025 +0530

    scsi: qla2xxx: Delay module unload while fabric scan in progress
    
    commit 8890bf450e0b6b283f48ac619fca5ac2f14ddd62 upstream.
    
    System crash seen during load/unload test in a loop.
    
    [105954.384919] RBP: ffff914589838dc0 R08: 0000000000000000 R09: 0000000000000086
    [105954.384920] R10: 000000000000000f R11: ffffa31240904be5 R12: ffff914605f868e0
    [105954.384921] R13: ffff914605f86910 R14: 0000000000008010 R15: 00000000ddb7c000
    [105954.384923] FS:  0000000000000000(0000) GS:ffff9163fec40000(0000) knlGS:0000000000000000
    [105954.384925] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [105954.384926] CR2: 000055d31ce1d6a0 CR3: 0000000119f5e001 CR4: 0000000000770ee0
    [105954.384928] PKRU: 55555554
    [105954.384929] Call Trace:
    [105954.384931]  <IRQ>
    [105954.384934]  qla24xx_sp_unmap+0x1f3/0x2a0 [qla2xxx]
    [105954.384962]  ? qla_async_scan_sp_done+0x114/0x1f0 [qla2xxx]
    [105954.384980]  ? qla24xx_els_ct_entry+0x4de/0x760 [qla2xxx]
    [105954.384999]  ? __wake_up_common+0x80/0x190
    [105954.385004]  ? qla24xx_process_response_queue+0xc2/0xaa0 [qla2xxx]
    [105954.385023]  ? qla24xx_msix_rsp_q+0x44/0xb0 [qla2xxx]
    [105954.385040]  ? __handle_irq_event_percpu+0x3d/0x190
    [105954.385044]  ? handle_irq_event+0x58/0xb0
    [105954.385046]  ? handle_edge_irq+0x93/0x240
    [105954.385050]  ? __common_interrupt+0x41/0xa0
    [105954.385055]  ? common_interrupt+0x3e/0xa0
    [105954.385060]  ? asm_common_interrupt+0x22/0x40
    
    The root cause of this was that there was a free (dma_free_attrs) in the
    interrupt context.  There was a device discovery/fabric scan in
    progress.  A module unload was issued which set the UNLOADING flag.  As
    part of the discovery, after receiving an interrupt a work queue was
    scheduled (which involved a work to be queued).  Since the UNLOADING
    flag is set, the work item was not allocated and the mapped memory had
    to be freed.  The free occurred in interrupt context leading to system
    crash.  Delay the driver unload until the fabric scan is complete to
    avoid the crash.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/all/202512090414.07Waorz0-lkp@intel.com/
    Fixes: 783e0dc4f66a ("qla2xxx: Check for device state before unloading the driver.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Anil Gurumurthy <agurumurthy@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Reviewed-by: Himanshu Madhani <hmadhani2024@gmail.com>
    Link: https://patch.msgid.link/20251210101604.431868-8-njavali@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: qla2xxx: Fix bsg_done() causing double free [+ + +]
Author: Anil Gurumurthy <agurumurthy@marvell.com>
Date:   Sat Feb 14 12:26:46 2026 -0500

    scsi: qla2xxx: Fix bsg_done() causing double free
    
    [ Upstream commit c2c68225b1456f4d0d393b5a8778d51bb0d5b1d0 ]
    
    Kernel panic observed on system,
    
    [5353358.825191] BUG: unable to handle page fault for address: ff5f5e897b024000
    [5353358.825194] #PF: supervisor write access in kernel mode
    [5353358.825195] #PF: error_code(0x0002) - not-present page
    [5353358.825196] PGD 100006067 P4D 0
    [5353358.825198] Oops: 0002 [#1] PREEMPT SMP NOPTI
    [5353358.825200] CPU: 5 PID: 2132085 Comm: qlafwupdate.sub Kdump: loaded Tainted: G        W    L    -------  ---  5.14.0-503.34.1.el9_5.x86_64 #1
    [5353358.825203] Hardware name: HPE ProLiant DL360 Gen11/ProLiant DL360 Gen11, BIOS 2.44 01/17/2025
    [5353358.825204] RIP: 0010:memcpy_erms+0x6/0x10
    [5353358.825211] RSP: 0018:ff591da8f4f6b710 EFLAGS: 00010246
    [5353358.825212] RAX: ff5f5e897b024000 RBX: 0000000000007090 RCX: 0000000000001000
    [5353358.825213] RDX: 0000000000001000 RSI: ff591da8f4fed090 RDI: ff5f5e897b024000
    [5353358.825214] RBP: 0000000000010000 R08: ff5f5e897b024000 R09: 0000000000000000
    [5353358.825215] R10: ff46cf8c40517000 R11: 0000000000000001 R12: 0000000000008090
    [5353358.825216] R13: ff591da8f4f6b720 R14: 0000000000001000 R15: 0000000000000000
    [5353358.825218] FS:  00007f1e88d47740(0000) GS:ff46cf935f940000(0000) knlGS:0000000000000000
    [5353358.825219] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [5353358.825220] CR2: ff5f5e897b024000 CR3: 0000000231532004 CR4: 0000000000771ef0
    [5353358.825221] PKRU: 55555554
    [5353358.825222] Call Trace:
    [5353358.825223]  <TASK>
    [5353358.825224]  ? show_trace_log_lvl+0x1c4/0x2df
    [5353358.825229]  ? show_trace_log_lvl+0x1c4/0x2df
    [5353358.825232]  ? sg_copy_buffer+0xc8/0x110
    [5353358.825236]  ? __die_body.cold+0x8/0xd
    [5353358.825238]  ? page_fault_oops+0x134/0x170
    [5353358.825242]  ? kernelmode_fixup_or_oops+0x84/0x110
    [5353358.825244]  ? exc_page_fault+0xa8/0x150
    [5353358.825247]  ? asm_exc_page_fault+0x22/0x30
    [5353358.825252]  ? memcpy_erms+0x6/0x10
    [5353358.825253]  sg_copy_buffer+0xc8/0x110
    [5353358.825259]  qla2x00_process_vendor_specific+0x652/0x1320 [qla2xxx]
    [5353358.825317]  qla24xx_bsg_request+0x1b2/0x2d0 [qla2xxx]
    
    Most routines in qla_bsg.c call bsg_done() only for success cases.
    However a few invoke it for failure case as well leading to a double
    free. Validate before calling bsg_done().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Anil Gurumurthy <agurumurthy@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Reviewed-by: Himanshu Madhani <hmadhani2024@gmail.com>
    Link: https://patch.msgid.link/20251210101604.431868-12-njavali@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [ applied only to qla2x00_update_optrom() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: qla2xxx: Free sp in error path to fix system crash [+ + +]
Author: Anil Gurumurthy <agurumurthy@marvell.com>
Date:   Fri Feb 13 19:54:58 2026 -0500

    scsi: qla2xxx: Free sp in error path to fix system crash
    
    [ Upstream commit 7adbd2b7809066c75f0433e5e2a8e114b429f30f ]
    
    System crash seen during load/unload test in a loop,
    
    [61110.449331] qla2xxx [0000:27:00.0]-0042:0: Disabled MSI-X.
    [61110.467494] =============================================================================
    [61110.467498] BUG qla2xxx_srbs (Tainted: G           OE    --------  --- ): Objects remaining in qla2xxx_srbs on __kmem_cache_shutdown()
    [61110.467501] -----------------------------------------------------------------------------
    
    [61110.467502] Slab 0x000000000ffc8162 objects=51 used=1 fp=0x00000000e25d3d85 flags=0x57ffffc0010200(slab|head|node=1|zone=2|lastcpupid=0x1fffff)
    [61110.467509] CPU: 53 PID: 455206 Comm: rmmod Kdump: loaded Tainted: G           OE    --------  ---  5.14.0-284.11.1.el9_2.x86_64 #1
    [61110.467513] Hardware name: HPE ProLiant DL385 Gen10 Plus v2/ProLiant DL385 Gen10 Plus v2, BIOS A42 08/17/2023
    [61110.467515] Call Trace:
    [61110.467516]  <TASK>
    [61110.467519]  dump_stack_lvl+0x34/0x48
    [61110.467526]  slab_err.cold+0x53/0x67
    [61110.467534]  __kmem_cache_shutdown+0x16e/0x320
    [61110.467540]  kmem_cache_destroy+0x51/0x160
    [61110.467544]  qla2x00_module_exit+0x93/0x99 [qla2xxx]
    [61110.467607]  ? __do_sys_delete_module.constprop.0+0x178/0x280
    [61110.467613]  ? syscall_trace_enter.constprop.0+0x145/0x1d0
    [61110.467616]  ? do_syscall_64+0x5c/0x90
    [61110.467619]  ? exc_page_fault+0x62/0x150
    [61110.467622]  ? entry_SYSCALL_64_after_hwframe+0x63/0xcd
    [61110.467626]  </TASK>
    [61110.467627] Disabling lock debugging due to kernel taint
    [61110.467635] Object 0x0000000026f7e6e6 @offset=16000
    [61110.467639] ------------[ cut here ]------------
    [61110.467639] kmem_cache_destroy qla2xxx_srbs: Slab cache still has objects when called from qla2x00_module_exit+0x93/0x99 [qla2xxx]
    [61110.467659] WARNING: CPU: 53 PID: 455206 at mm/slab_common.c:520 kmem_cache_destroy+0x14d/0x160
    [61110.467718] CPU: 53 PID: 455206 Comm: rmmod Kdump: loaded Tainted: G    B      OE    --------  ---  5.14.0-284.11.1.el9_2.x86_64 #1
    [61110.467720] Hardware name: HPE ProLiant DL385 Gen10 Plus v2/ProLiant DL385 Gen10 Plus v2, BIOS A42 08/17/2023
    [61110.467721] RIP: 0010:kmem_cache_destroy+0x14d/0x160
    [61110.467724] Code: 99 7d 07 00 48 89 ef e8 e1 6a 07 00 eb b3 48 8b 55 60 48 8b 4c 24 20 48 c7 c6 70 fc 66 90 48 c7 c7 f8 ef a1 90 e8 e1 ed 7c 00 <0f> 0b eb 93 c3 cc cc cc cc 66 2e 0f 1f 84 00 00 00 00 00 55 48 89
    [61110.467725] RSP: 0018:ffffa304e489fe80 EFLAGS: 00010282
    [61110.467727] RAX: 0000000000000000 RBX: ffffffffc0d9a860 RCX: 0000000000000027
    [61110.467729] RDX: ffff8fd5ff9598a8 RSI: 0000000000000001 RDI: ffff8fd5ff9598a0
    [61110.467730] RBP: ffff8fb6aaf78700 R08: 0000000000000000 R09: 0000000100d863b7
    [61110.467731] R10: ffffa304e489fd20 R11: ffffffff913bef48 R12: 0000000040002000
    [61110.467731] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [61110.467733] FS:  00007f64c89fb740(0000) GS:ffff8fd5ff940000(0000) knlGS:0000000000000000
    [61110.467734] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [61110.467735] CR2: 00007f0f02bfe000 CR3: 00000020ad6dc005 CR4: 0000000000770ee0
    [61110.467736] PKRU: 55555554
    [61110.467737] Call Trace:
    [61110.467738]  <TASK>
    [61110.467739]  qla2x00_module_exit+0x93/0x99 [qla2xxx]
    [61110.467755]  ? __do_sys_delete_module.constprop.0+0x178/0x280
    
    Free sp in the error path to fix the crash.
    
    Fixes: f352eeb75419 ("scsi: qla2xxx: Add ability to use GPNFT/GNNFT for RSCN handling")
    Cc: stable@vger.kernel.org
    Signed-off-by: Anil Gurumurthy <agurumurthy@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Reviewed-by: Himanshu Madhani <hmadhani2024@gmail.com>
    Link: https://patch.msgid.link/20251210101604.431868-9-njavali@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [ Context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: qla2xxx: Query FW again before proceeding with login [+ + +]
Author: Anil Gurumurthy <agurumurthy@marvell.com>
Date:   Wed Dec 10 15:46:02 2025 +0530

    scsi: qla2xxx: Query FW again before proceeding with login
    
    commit 42b2dab4340d39b71334151e10c6d7d9b0040ffa upstream.
    
    Issue occurred during a continuous reboot test of several thousand
    iterations specific to a fabric topo with dual mode target where it
    sends a PLOGI/PRLI and then sends a LOGO. The initiator was also in the
    process of discovery and sent a PLOGI to the switch. It then queried a
    list of ports logged in via mbx 75h and the GPDB response indicated that
    the target was logged in. This caused a mismatch in the states between
    the driver and FW.  Requery the FW for the state and proceed with the
    rest of discovery process.
    
    Fixes: a4239945b8ad ("scsi: qla2xxx: Add switch command to simplify fabric discovery")
    Cc: stable@vger.kernel.org
    Signed-off-by: Anil Gurumurthy <agurumurthy@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Reviewed-by: Himanshu Madhani <hmadhani2024@gmail.com>
    Link: https://patch.msgid.link/20251210101604.431868-11-njavali@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: qla2xxx: Validate sp before freeing associated memory [+ + +]
Author: Anil Gurumurthy <agurumurthy@marvell.com>
Date:   Fri Feb 13 10:44:30 2026 -0500

    scsi: qla2xxx: Validate sp before freeing associated memory
    
    [ Upstream commit b6df15aec8c3441357d4da0eaf4339eb20f5999f ]
    
    System crash with the following signature
    [154563.214890] nvme nvme2: NVME-FC{1}: controller connect complete
    [154564.169363] qla2xxx [0000:b0:00.1]-3002:2: nvme: Sched: Set ZIO exchange threshold to 3.
    [154564.169405] qla2xxx [0000:b0:00.1]-ffffff:2: SET ZIO Activity exchange threshold to 5.
    [154565.539974] qla2xxx [0000:b0:00.1]-5013:2: RSCN database changed – 0078 0080 0000.
    [154565.545744] qla2xxx [0000:b0:00.1]-5013:2: RSCN database changed – 0078 00a0 0000.
    [154565.545857] qla2xxx [0000:b0:00.1]-11a2:2: FEC=enabled (data rate).
    [154565.552760] qla2xxx [0000:b0:00.1]-11a2:2: FEC=enabled (data rate).
    [154565.553079] BUG: kernel NULL pointer dereference, address: 00000000000000f8
    [154565.553080] #PF: supervisor read access in kernel mode
    [154565.553082] #PF: error_code(0x0000) - not-present page
    [154565.553084] PGD 80000010488ab067 P4D 80000010488ab067 PUD 104978a067 PMD 0
    [154565.553089] Oops: 0000 1 PREEMPT SMP PTI
    [154565.553092] CPU: 10 PID: 858 Comm: qla2xxx_2_dpc Kdump: loaded Tainted: G           OE     -------  ---  5.14.0-503.11.1.el9_5.x86_64 #1
    [154565.553096] Hardware name: HPE Synergy 660 Gen10/Synergy 660 Gen10 Compute Module, BIOS I43 09/30/2024
    [154565.553097] RIP: 0010:qla_fab_async_scan.part.0+0x40b/0x870 [qla2xxx]
    [154565.553141] Code: 00 00 e8 58 a3 ec d4 49 89 e9 ba 12 20 00 00 4c 89 e6 49 c7 c0 00 ee a8 c0 48 c7 c1 66 c0 a9 c0 bf 00 80 00 10 e8 15 69 00 00 <4c> 8b 8d f8 00 00 00 4d 85 c9 74 35 49 8b 84 24 00 19 00 00 48 8b
    [154565.553143] RSP: 0018:ffffb4dbc8aebdd0 EFLAGS: 00010286
    [154565.553145] RAX: 0000000000000000 RBX: ffff8ec2cf0908d0 RCX: 0000000000000002
    [154565.553147] RDX: 0000000000000000 RSI: ffffffffc0a9c896 RDI: ffffb4dbc8aebd47
    [154565.553148] RBP: 0000000000000000 R08: ffffb4dbc8aebd45 R09: 0000000000ffff0a
    [154565.553150] R10: 0000000000000000 R11: 000000000000000f R12: ffff8ec2cf0908d0
    [154565.553151] R13: ffff8ec2cf090900 R14: 0000000000000102 R15: ffff8ec2cf084000
    [154565.553152] FS:  0000000000000000(0000) GS:ffff8ed27f800000(0000) knlGS:0000000000000000
    [154565.553154] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [154565.553155] CR2: 00000000000000f8 CR3: 000000113ae0a005 CR4: 00000000007706f0
    [154565.553157] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [154565.553158] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [154565.553159] PKRU: 55555554
    [154565.553160] Call Trace:
    [154565.553162]  <TASK>
    [154565.553165]  ? show_trace_log_lvl+0x1c4/0x2df
    [154565.553172]  ? show_trace_log_lvl+0x1c4/0x2df
    [154565.553177]  ? qla_fab_async_scan.part.0+0x40b/0x870 [qla2xxx]
    [154565.553215]  ? __die_body.cold+0x8/0xd
    [154565.553218]  ? page_fault_oops+0x134/0x170
    [154565.553223]  ? snprintf+0x49/0x70
    [154565.553229]  ? exc_page_fault+0x62/0x150
    [154565.553238]  ? asm_exc_page_fault+0x22/0x30
    
    Check for sp being non NULL before freeing any associated memory
    
    Fixes: a4239945b8ad ("scsi: qla2xxx: Add switch command to simplify fabric discovery")
    Cc: stable@vger.kernel.org
    Signed-off-by: Anil Gurumurthy <agurumurthy@marvell.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Reviewed-by: Himanshu Madhani <hmadhani2024@gmail.com>
    Link: https://patch.msgid.link/20251210101604.431868-10-njavali@marvell.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [ adapted kref_put() srb free mechanism to older sp->free(sp) ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests: mptcp: pm: ensure unknown flags are ignored [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Thu Feb 12 12:50:57 2026 +0100

    selftests: mptcp: pm: ensure unknown flags are ignored
    
    commit 29f4801e9c8dfd12bdcb33b61a6ac479c7162bd7 upstream.
    
    This validates the previous commit: the userspace can set unknown flags
    -- the 7th bit is currently unused -- without errors, but only the
    supported ones are printed in the endpoints dumps.
    
    The 'Fixes' tag here below is the same as the one from the previous
    commit: this patch here is not fixing anything wrong in the selftests,
    but it validates the previous fix for an issue introduced by this commit
    ID.
    
    Fixes: 01cacb00b35c ("mptcp: add netlink-based PM")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251205-net-mptcp-misc-fixes-6-19-rc1-v1-2-9e4781a6c1b8@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [ Conflicts in pm_netlink.sh, because some refactoring have been done
      later on: commit 0d16ed0c2e74 ("selftests: mptcp: add
      {get,format}_endpoint(s) helpers") and commit c99d57d0007a
      ("selftests: mptcp: use pm_nl endpoint ops") are not in this version.
      The same operation can still be done at the same place, without using
      the new helpers.
      Also, commit 1dc88d241f92 ("selftests: mptcp: pm_nl_ctl: always look
      for errors") is not in this version, and create a conflict in the
      context which is not related to the modification here.
      In v5.10, endpoints couldn't be re-used directly, so the flag is
      tested before.
      Conflicts in pm_nl_ctl.c, because commit 69c6ce7b6eca ("selftests:
      mptcp: add implicit endpoint test case") and commit 371b90377e60
      ("selftests: mptcp: set and print the fullmesh flag") are not in this
      version, and caused a conflict in the context which is not related to
      the modification here. ]
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: serial: option: add Telit FN920C04 RNDIS compositions [+ + +]
Author: Fabio Porcedda <fabio.porcedda@gmail.com>
Date:   Fri Jan 23 16:19:16 2026 +0100

    USB: serial: option: add Telit FN920C04 RNDIS compositions
    
    commit 509f403f3ccec14188036212118651bf23599396 upstream.
    
    Add the following compositions:
    
    0x10a1: RNDIS + tty (AT/NMEA) + tty (AT) + tty (diag)
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  9 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10a1 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN920
    S:  SerialNumber=d128dba9
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10a6: RNDIS + tty (AT/NMEA) + tty (AT) + tty (diag)
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10a6 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN920
    S:  SerialNumber=d128dba9
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10ab: RNDIS + tty (AT) + tty (diag) + DPL (Data Packet Logging) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10ab Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN920
    S:  SerialNumber=d128dba9
    C:  #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>