Changelog in Linux kernel 6.12.69

 
ASoC: amd: yc: Add DMI quirk for Acer TravelMate P216-41-TCO [+ + +]
Author: Zhang Heng <zhangheng@kylinos.cn>
Date:   Mon Jan 26 09:49:52 2026 +0800

    ASoC: amd: yc: Add DMI quirk for Acer TravelMate P216-41-TCO
    
    commit 9502b7df5a3c7e174f74f20324ac1fe781fc5c2d upstream.
    
    Add a DMI quirk for the Acer TravelMate P216-41-TCO fixing the
    issue where the internal microphone was not detected.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220983
    Cc: stable@vger.kernel.org
    Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
    Link: https://patch.msgid.link/20260126014952.3674450-1-zhangheng@kylinos.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: fsl: imx-card: Do not force slot width to sample width [+ + +]
Author: Fabio Estevam <festevam@gmail.com>
Date:   Sun Jan 18 17:50:30 2026 -0300

    ASoC: fsl: imx-card: Do not force slot width to sample width
    
    commit 9210f5ff6318163835d9e42ee68006be4da0f531 upstream.
    
    imx-card currently sets the slot width to the physical sample width
    for I2S links. This breaks controllers that use fixed-width slots
    (e.g. 32-bit FIFO words), causing the unused bits in the slot to
    contain undefined data when playing 16-bit streams.
    
    Do not override the slot width in the machine driver and let the CPU
    DAI select an appropriate default instead. This matches the behavior
    of simple-audio-card and avoids embedding controller-specific policy
    in the machine driver.
    
    On an i.MX8MP-based board using SAI as the I2S master with 32-bit slots,
    playing 16-bit audio resulted in spurious frequencies and an incorrect
    SAI data waveform, as the slot width was forced to 16 bits. After this
    change, audio artifacts are eliminated and the 16-bit samples correctly
    occupy the first half of the 32-bit slot, with the remaining bits padded
    with zeroes.
    
    Cc: stable@vger.kernel.org
    Fixes: aa736700f42f ("ASoC: imx-card: Add imx-card machine driver")
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com>
    Link: https://patch.msgid.link/20260118205030.1532696-1-festevam@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: Intel: sof_es8336: fix headphone GPIO logic inversion [+ + +]
Author: Tagir Garaev <tgaraev653@gmail.com>
Date:   Wed Jan 21 18:24:35 2026 +0300

    ASoC: Intel: sof_es8336: fix headphone GPIO logic inversion
    
    [ Upstream commit 213c4e51267fd825cd21a08a055450cac7e0b7fb ]
    
    The headphone GPIO should be set to the inverse of speaker_en.
    When speakers are enabled, headphones should be disabled and vice versa.
    
    Currently both GPIOs are set to the same value (speaker_en), causing
    audio to play through both speakers and headphones simultaneously
    when headphones are plugged in.
    
    Tested on Huawei Matebook (BOD-WXX9) with ES8336 codec.
    
    Fixes: 6e1ff1459e00 ("ASoC: Intel: sof_es8336: support a separate gpio to control headphone")
    Signed-off-by: Tagir Garaev <tgaraev653@gmail.com>
    Link: https://patch.msgid.link/20260121152435.101698-1-tgaraev653@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bcache: fix I/O accounting leak in detached_dev_do_request [+ + +]
Author: Shida Zhang <zhangshida@kylinos.cn>
Date:   Tue Jan 27 16:21:12 2026 +0800

    bcache: fix I/O accounting leak in detached_dev_do_request
    
    [ Upstream commit 4da7c5c3ec34d839bba6e035c3d05c447a2f9d4f ]
    
    When a bcache device is detached, discard requests are completed
    immediately. However, the I/O accounting started in
    cached_dev_make_request() is not ended, leading to 100% disk
    utilization reports in iostat. Add the missing bio_end_io_acct() call.
    
    Fixes: cafe56359144 ("bcache: A block layer cache")
    Signed-off-by: Shida Zhang <zhangshida@kylinos.cn>
    Acked-by: Coly Li <colyli@fnnas.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bcache: fix improper use of bi_end_io [+ + +]
Author: Shida Zhang <zhangshida@kylinos.cn>
Date:   Tue Dec 9 17:01:56 2025 +0800

    bcache: fix improper use of bi_end_io
    
    [ Upstream commit 53280e398471f0bddbb17b798a63d41264651325 ]
    
    Don't call bio->bi_end_io() directly. Use the bio_endio() helper
    function instead, which handles completion more safely and uniformly.
    
    Suggested-by: Christoph Hellwig <hch@infradead.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Shida Zhang <zhangshida@kylinos.cn>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 4da7c5c3ec34 ("bcache: fix I/O accounting leak in detached_dev_do_request")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bcache: use bio cloning for detached device requests [+ + +]
Author: Shida Zhang <zhangshida@kylinos.cn>
Date:   Thu Jan 22 14:13:21 2026 +0800

    bcache: use bio cloning for detached device requests
    
    [ Upstream commit 3ef825dfd4e487d6f92b23ee2df2455814583ef4 ]
    
    Previously, bcache hijacked the bi_end_io and bi_private fields of
    the incoming bio when the backing device was in a detached state.
    This is fragile and breaks if the bio is needed to be processed by
    other layers.
    
    This patch transitions to using a cloned bio embedded within a private
    structure. This ensures the original bio's metadata remains untouched.
    
    Fixes: 53280e398471 ("bcache: fix improper use of bi_end_io")
    Co-developed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Shida Zhang <zhangshida@kylinos.cn>
    Acked-by: Coly Li <colyli@fnnas.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 4da7c5c3ec34 ("bcache: fix I/O accounting leak in detached_dev_do_request")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: hci_uart: fix null-ptr-deref in hci_uart_write_work [+ + +]
Author: Jia-Hong Su <s11242586@gmail.com>
Date:   Sun Jan 18 20:08:59 2026 +0800

    Bluetooth: hci_uart: fix null-ptr-deref in hci_uart_write_work
    
    [ Upstream commit 0c3cd7a0b862c37acbee6d9502107146cc944398 ]
    
    hci_uart_set_proto() sets HCI_UART_PROTO_INIT before calling
    hci_uart_register_dev(), which calls proto->open() to initialize
    hu->priv. However, if a TTY write wakeup occurs during this window,
    hci_uart_tx_wakeup() may schedule write_work before hu->priv is
    initialized, leading to a NULL pointer dereference in
    hci_uart_write_work() when proto->dequeue() accesses hu->priv.
    
    The race condition is:
    
      CPU0                              CPU1
      ----                              ----
      hci_uart_set_proto()
        set_bit(HCI_UART_PROTO_INIT)
        hci_uart_register_dev()
                                        tty write wakeup
                                          hci_uart_tty_wakeup()
                                            hci_uart_tx_wakeup()
                                              schedule_work(&hu->write_work)
          proto->open(hu)
            // initializes hu->priv
                                        hci_uart_write_work()
                                          hci_uart_dequeue()
                                            proto->dequeue(hu)
                                              // accesses hu->priv (NULL!)
    
    Fix this by moving set_bit(HCI_UART_PROTO_INIT) after proto->open()
    succeeds, ensuring hu->priv is initialized before any work can be
    scheduled.
    
    Fixes: 5df5dafc171b ("Bluetooth: hci_uart: Fix another race during initialization")
    Link: https://lore.kernel.org/linux-bluetooth/6969764f.170a0220.2b9fc4.35a7@mx.google.com/
    
    Signed-off-by: Jia-Hong Su <s11242586@gmail.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: MGMT: Fix memory leak in set_ssp_complete [+ + +]
Author: Jianpeng Chang <jianpeng.chang.cn@windriver.com>
Date:   Wed Jan 21 13:29:26 2026 +0800

    Bluetooth: MGMT: Fix memory leak in set_ssp_complete
    
    [ Upstream commit 1b9c17fd0a7fdcbe69ec5d6fe8e50bc5ed7f01f2 ]
    
    Fix memory leak in set_ssp_complete() where mgmt_pending_cmd structures
    are not freed after being removed from the pending list.
    
    Commit 302a1f674c00 ("Bluetooth: MGMT: Fix possible UAFs") replaced
    mgmt_pending_foreach() calls with individual command handling but missed
    adding mgmt_pending_free() calls in both error and success paths of
    set_ssp_complete(). Other completion functions like set_le_complete()
    were fixed correctly in the same commit.
    
    This causes a memory leak of the mgmt_pending_cmd structure and its
    associated parameter data for each SSP command that completes.
    
    Add the missing mgmt_pending_free(cmd) calls in both code paths to fix
    the memory leak. Also fix the same issue in set_advertising_complete().
    
    Fixes: 302a1f674c00 ("Bluetooth: MGMT: Fix possible UAFs")
    Signed-off-by: Jianpeng Chang <jianpeng.chang.cn@windriver.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bonding: annotate data-races around slave->last_rx [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jan 22 16:29:14 2026 +0000

    bonding: annotate data-races around slave->last_rx
    
    [ Upstream commit f6c3665b6dc53c3ab7d31b585446a953a74340ef ]
    
    slave->last_rx and slave->target_last_arp_rx[...] can be read and written
    locklessly. Add READ_ONCE() and WRITE_ONCE() annotations.
    
    syzbot reported:
    
    BUG: KCSAN: data-race in bond_rcv_validate / bond_rcv_validate
    
    write to 0xffff888149f0d428 of 8 bytes by interrupt on cpu 1:
      bond_rcv_validate+0x202/0x7a0 drivers/net/bonding/bond_main.c:3335
      bond_handle_frame+0xde/0x5e0 drivers/net/bonding/bond_main.c:1533
      __netif_receive_skb_core+0x5b1/0x1950 net/core/dev.c:6039
      __netif_receive_skb_one_core net/core/dev.c:6150 [inline]
      __netif_receive_skb+0x59/0x270 net/core/dev.c:6265
      netif_receive_skb_internal net/core/dev.c:6351 [inline]
      netif_receive_skb+0x4b/0x2d0 net/core/dev.c:6410
    ...
    
    write to 0xffff888149f0d428 of 8 bytes by interrupt on cpu 0:
      bond_rcv_validate+0x202/0x7a0 drivers/net/bonding/bond_main.c:3335
      bond_handle_frame+0xde/0x5e0 drivers/net/bonding/bond_main.c:1533
      __netif_receive_skb_core+0x5b1/0x1950 net/core/dev.c:6039
      __netif_receive_skb_one_core net/core/dev.c:6150 [inline]
      __netif_receive_skb+0x59/0x270 net/core/dev.c:6265
      netif_receive_skb_internal net/core/dev.c:6351 [inline]
      netif_receive_skb+0x4b/0x2d0 net/core/dev.c:6410
      br_netif_receive_skb net/bridge/br_input.c:30 [inline]
      NF_HOOK include/linux/netfilter.h:318 [inline]
    ...
    
    value changed: 0x0000000100005365 -> 0x0000000100005366
    
    Fixes: f5b2b966f032 ("[PATCH] bonding: Validate probe replies in ARP monitor")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://patch.msgid.link/20260122162914.2299312-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf/selftests: test_select_reuseport_kern: Remove unused header [+ + +]
Author: Alexis Lothoré (eBPF Foundation) <alexis.lothore@bootlin.com>
Date:   Thu Feb 27 15:08:23 2025 +0100

    bpf/selftests: test_select_reuseport_kern: Remove unused header
    
    commit 93cf4e537ed0c5bd9ba6cbdb2c33864547c1442f upstream.
    
    test_select_reuseport_kern.c is currently including <stdlib.h>, but it
    does not use any definition from there.
    
    Remove stdlib.h inclusion from test_select_reuseport_kern.c
    
    Signed-off-by: Alexis Lothoré (eBPF Foundation) <alexis.lothore@bootlin.com>
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Link: https://patch.msgid.link/20250227-remove_wrong_header-v1-1-bc94eb4e2f73@bootlin.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [shung-hsi.yu: Fix compilation error mentioned in footer of Alexis'
    patch with newer glibc header:
    
      [...]
        CLNG-BPF [test_progs-cpuv4] test_select_reuseport_kern.bpf.o
      In file included from progs/test_select_reuseport_kern.c:4:
      /usr/include/bits/floatn.h:83:52: error: unsupported machine mode
      '__TC__'
         83 | typedef _Complex float __cfloat128 __attribute__ ((__mode__
      (__TC__)));
            |                                                    ^
      /usr/include/bits/floatn.h:97:9: error: __float128 is not supported on
      this target
         97 | typedef __float128 _Float128;
    
    I'm not certain when the problem starts to occur, but I'm quite sure
    test_select_reuseport_kern.c were not meant to be using the C standard
    library in the first place.]
    Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
btrfs: prevent use-after-free on folio private data in btrfs_subpage_clear_uptodate() [+ + +]
Author: JP Kobryn <inwardvessel@gmail.com>
Date:   Sat Jan 31 23:13:46 2026 -0800

    btrfs: prevent use-after-free on folio private data in btrfs_subpage_clear_uptodate()
    
    This is a stable-only patch. The issue was inadvertently fixed in 6.17 [0]
    as part of a refactoring, but this patch serves as a minimal targeted fix
    for prior kernels.
    
    Users of filemap_lock_folio() need to guard against the situation where
    release_folio() has been invoked during reclaim but the folio was
    ultimately not removed from the page cache. This patch covers one location
    that was overlooked.
    
    After acquiring the folio, use set_folio_extent_mapped() to ensure the
    folio private state is valid. This is especially important in the subpage
    case, where the private field is an allocated struct containing bitmap and
    lock data.
    
    Without this protection, the race below is possible:
    
    [mm] page cache reclaim path        [fs] relocation in subpage mode
    shrink_folio_list()
      folio_trylock() /* lock acquired */
      filemap_release_folio()
        mapping->a_ops->release_folio()
          btrfs_release_folio()
            __btrfs_release_folio()
              clear_folio_extent_mapped()
                btrfs_detach_subpage()
                  subpage = folio_detach_private(folio)
                  btrfs_free_subpage(subpage)
                    kfree(subpage) /* point A */
    
                                       prealloc_file_extent_cluster()
                                         filemap_lock_folio()
                                           folio_try_get() /* inc refcount */
                                           folio_lock() /* wait for lock */
    
      if (...)
        ...
      else if (!mapping || !__remove_mapping(..))
        /*
         * __remove_mapping() returns zero when
         * folio_ref_freeze(folio, refcount) fails /* point B */
         */
        goto keep_locked /* folio remains in cache */
    
    keep_locked:
      folio_unlock(folio) /* lock released */
    
                                       /* lock acquired */
                                       btrfs_subpage_clear_uptodate()
                                         /* use-after-free */
                                         subpage = folio_get_private(folio)
    
    [0] 4e346baee95f ("btrfs: reloc: unconditionally invalidate the page cache for each cluster")
    
    Fixes: 9d9ea1e68a05 ("btrfs: subpage: fix relocation potentially overwriting last page data")
    Cc: stable@vger.kernel.org # 6.10-6.16
    Signed-off-by: JP Kobryn <inwardvessel@gmail.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
can: at91_can: Fix memory leak in at91_can_probe() [+ + +]
Author: Zilin Guan <zilin@seu.edu.cn>
Date:   Thu Jan 22 11:41:28 2026 +0000

    can: at91_can: Fix memory leak in at91_can_probe()
    
    [ Upstream commit 0baa4d3170d72a2a8dc93bf729d6d04ad113dc72 ]
    
    In at91_can_probe(), the dev structure is allocated via alloc_candev().
    However, if the subsequent call to devm_phy_optional_get() fails, the
    code jumps directly to exit_iounmap, missing the call to free_candev().
    This results in a memory leak of the allocated net_device structure.
    
    Fix this by jumping to the exit_free label instead, which ensures that
    free_candev() is called to properly release the memory.
    
    Compile tested only. Issue found using a prototype static analysis tool
    and code review.
    
    Fixes: 3ecc09856afb ("can: at91_can: add CAN transceiver support")
    Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
    Link: https://patch.msgid.link/20260122114128.643752-1-zilin@seu.edu.cn
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
can: gs_usb: gs_usb_receive_bulk_callback(): fix error message [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Jan 20 10:40:22 2026 +0100

    can: gs_usb: gs_usb_receive_bulk_callback(): fix error message
    
    [ Upstream commit 494fc029f662c331e06b7c2031deff3c64200eed ]
    
    Sinc commit 79a6d1bfe114 ("can: gs_usb: gs_usb_receive_bulk_callback():
    unanchor URL on usb_submit_urb() error") a failing resubmit URB will print
    an info message.
    
    In the case of a short read where netdev has not yet been assigned,
    initialize as NULL to avoid dereferencing an undefined value. Also report
    the error value of the failed resubmit.
    
    Fixes: 79a6d1bfe114 ("can: gs_usb: gs_usb_receive_bulk_callback(): unanchor URL on usb_submit_urb() error")
    Reported-by: Jakub Kicinski <kuba@kernel.org>
    Closes: https://lore.kernel.org/all/20260119181904.1209979-1-kuba@kernel.org/
    Link: https://patch.msgid.link/20260120-gs_usb-fix-error-message-v1-1-6be04de572bc@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cgroup: Fix kernfs_node UAF in css_free_rwork_fn [+ + +]
Author: T.J. Mercier <tjmercier@google.com>
Date:   Thu Jan 29 11:10:34 2026 -0800

    cgroup: Fix kernfs_node UAF in css_free_rwork_fn
    
    This fix patch is not upstream, and is applicable only to kernels 6.10
    (where the cgroup_rstat_lock tracepoint was added) through 6.15 after
    which commit 5da3bfa029d6 ("cgroup: use separate rstat trees for each
    subsystem") reordered cgroup_rstat_flush as part of a new feature
    addition and inadvertently fixed this UAF.
    
    css_free_rwork_fn first releases the last reference on the cgroup's
    kernfs_node, and then calls cgroup_rstat_exit which attempts to use it
    in the cgroup_rstat_lock tracepoint:
    
    kernfs_put(cgrp->kn);
    cgroup_rstat_exit
      cgroup_rstat_flush
        __cgroup_rstat_lock
          trace_cgroup_rstat_locked:
            TP_fast_assign(
              __entry->root = cgrp->root->hierarchy_id;
              __entry->id = cgroup_id(cgrp);
    
    Where cgroup_id is:
    static inline u64 cgroup_id(const struct cgroup *cgrp)
    {
            return cgrp->kn->id;
    }
    
    Fix this by reordering the kernfs_put after cgroup_rstat_exit.
    
    [78782.605161][ T9861] BUG: KASAN: slab-use-after-free in trace_event_raw_event_cgroup_rstat+0x110/0x1dc
    [78782.605182][ T9861] Read of size 8 at addr ffffff890270e610 by task kworker/6:1/9861
    [78782.605199][ T9861] CPU: 6 UID: 0 PID: 9861 Comm: kworker/6:1 Tainted: G        W  OE      6.12.23-android16-5-gabaf21382e8f-4k #1 0308449da8ad70d2d3649ae989c1d02f0fbf562c
    [78782.605220][ T9861] Tainted: [W]=WARN, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    [78782.605226][ T9861] Hardware name: Qualcomm Technologies, Inc. Alor QRD + WCN7750 WLAN + Kundu PD2536F_EX (DT)
    [78782.605235][ T9861] Workqueue: cgroup_destroy css_free_rwork_fn
    [78782.605251][ T9861] Call trace:
    [78782.605254][ T9861]  dump_backtrace+0x120/0x170
    [78782.605267][ T9861]  show_stack+0x2c/0x40
    [78782.605276][ T9861]  dump_stack_lvl+0x84/0xb4
    [78782.605286][ T9861]  print_report+0x144/0x7a4
    [78782.605301][ T9861]  kasan_report+0xe0/0x140
    [78782.605315][ T9861]  __asan_load8+0x98/0xa0
    [78782.605329][ T9861]  trace_event_raw_event_cgroup_rstat+0x110/0x1dc
    [78782.605339][ T9861]  __traceiter_cgroup_rstat_locked+0x78/0xc4
    [78782.605355][ T9861]  __cgroup_rstat_lock+0xe8/0x1dc
    [78782.605368][ T9861]  cgroup_rstat_flush_locked+0x7dc/0xaec
    [78782.605383][ T9861]  cgroup_rstat_flush+0x34/0x108
    [78782.605396][ T9861]  cgroup_rstat_exit+0x2c/0x120
    [78782.605409][ T9861]  css_free_rwork_fn+0x504/0xa18
    [78782.605421][ T9861]  process_scheduled_works+0x378/0x8e0
    [78782.605435][ T9861]  worker_thread+0x5a8/0x77c
    [78782.605446][ T9861]  kthread+0x1c4/0x270
    [78782.605455][ T9861]  ret_from_fork+0x10/0x20
    [78782.605470][ T9861] Allocated by task 2864 on cpu 7 at 78781.564561s:
    [78782.605467][    C5] ENHANCE: rpm_suspend+0x93c/0xafc: 0:0:0:0 ret=0
    [78782.605481][ T9861]  kasan_save_track+0x44/0x9c
    [78782.605497][ T9861]  kasan_save_alloc_info+0x40/0x54
    [78782.605507][ T9861]  __kasan_slab_alloc+0x70/0x8c
    [78782.605521][ T9861]  kmem_cache_alloc_noprof+0x1a0/0x428
    [78782.605534][ T9861]  __kernfs_new_node+0xd4/0x3e4
    [78782.605545][ T9861]  kernfs_new_node+0xbc/0x168
    [78782.605554][ T9861]  kernfs_create_dir_ns+0x58/0xe8
    [78782.605565][ T9861]  cgroup_mkdir+0x25c/0xc9c
    [78782.605576][ T9861]  kernfs_iop_mkdir+0x130/0x214
    [78782.605586][ T9861]  vfs_mkdir+0x290/0x388
    [78782.605599][ T9861]  do_mkdirat+0xfc/0x27c
    [78782.605612][ T9861]  __arm64_sys_mkdirat+0x5c/0x78
    [78782.605625][ T9861]  invoke_syscall+0x90/0x1e8
    [78782.605634][ T9861]  el0_svc_common+0x134/0x168
    [78782.605643][ T9861]  do_el0_svc+0x34/0x44
    [78782.605652][ T9861]  el0_svc+0x38/0x84
    [78782.605667][ T9861]  el0t_64_sync_handler+0x70/0xbc
    [78782.605681][ T9861]  el0t_64_sync+0x19c/0x1a0
    [78782.605695][ T9861] Freed by task 69 on cpu 1 at 78782.573275s:
    [78782.605705][ T9861]  kasan_save_track+0x44/0x9c
    [78782.605719][ T9861]  kasan_save_free_info+0x54/0x70
    [78782.605729][ T9861]  __kasan_slab_free+0x68/0x8c
    [78782.605743][ T9861]  kmem_cache_free+0x118/0x488
    [78782.605755][ T9861]  kernfs_free_rcu+0xa0/0xb8
    [78782.605765][ T9861]  rcu_do_batch+0x324/0xaa0
    [78782.605775][ T9861]  rcu_nocb_cb_kthread+0x388/0x690
    [78782.605785][ T9861]  kthread+0x1c4/0x270
    [78782.605794][ T9861]  ret_from_fork+0x10/0x20
    [78782.605809][ T9861] Last potentially related work creation:
    [78782.605814][ T9861]  kasan_save_stack+0x40/0x70
    [78782.605829][ T9861]  __kasan_record_aux_stack+0xb0/0xcc
    [78782.605839][ T9861]  kasan_record_aux_stack_noalloc+0x14/0x24
    [78782.605849][ T9861]  __call_rcu_common+0x54/0x390
    [78782.605863][ T9861]  call_rcu+0x18/0x28
    [78782.605875][ T9861]  kernfs_put+0x17c/0x28c
    [78782.605884][ T9861]  css_free_rwork_fn+0x4f4/0xa18
    [78782.605897][ T9861]  process_scheduled_works+0x378/0x8e0
    [78782.605910][ T9861]  worker_thread+0x5a8/0x77c
    [78782.605923][ T9861]  kthread+0x1c4/0x270
    [78782.605932][ T9861]  ret_from_fork+0x10/0x20
    [78782.605947][ T9861] The buggy address belongs to the object at ffffff890270e5b0
    [78782.605947][ T9861]  which belongs to the cache kernfs_node_cache of size 144
    [78782.605957][ T9861] The buggy address is located 96 bytes inside of
    [78782.605957][ T9861]  freed 144-byte region [ffffff890270e5b0, ffffff890270e640)
    
    Fixes: fc29e04ae1ad ("cgroup/rstat: add cgroup_rstat_lock helpers and tracepoints")
    Signed-off-by: T.J. Mercier <tjmercier@google.com>
    Acked-by: Michal Koutný <mkoutny@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dma/pool: distinguish between missing and exhausted atomic pools [+ + +]
Author: Sai Sree Kartheek Adivi <s-adivi@ti.com>
Date:   Wed Jan 28 19:05:54 2026 +0530

    dma/pool: distinguish between missing and exhausted atomic pools
    
    [ Upstream commit 56c430c7f06d838fe3b2077dbbc4cc0bf992312b ]
    
    Currently, dma_alloc_from_pool() unconditionally warns and dumps a stack
    trace when an allocation fails, with the message "Failed to get suitable
    pool".
    
    This conflates two distinct failure modes:
    1. Configuration error: No atomic pool is available for the requested
       DMA mask (a fundamental system setup issue)
    2. Resource Exhaustion: A suitable pool exists but is currently full (a
       recoverable runtime state)
    
    This lack of distinction prevents drivers from using __GFP_NOWARN to
    suppress error messages during temporary pressure spikes, such as when
    awaiting synchronous reclaim of descriptors.
    
    Refactor the error handling to distinguish these cases:
    - If no suitable pool is found, keep the unconditional WARN regarding
      the missing pool.
    - If a pool was found but is exhausted, respect __GFP_NOWARN and update
      the warning message to explicitly state "DMA pool exhausted".
    
    Fixes: 9420139f516d ("dma-pool: fix coherent pool allocations for IOMMU mappings")
    Signed-off-by: Sai Sree Kartheek Adivi <s-adivi@ti.com>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Link: https://lore.kernel.org/r/20260128133554.3056582-1-s-adivi@ti.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu/gfx10: fix wptr reset in KGQ init [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jan 28 20:51:08 2026 -0500

    drm/amdgpu/gfx10: fix wptr reset in KGQ init
    
    commit cc4f433b14e05eaa4a98fd677b836e9229422387 upstream.
    
    wptr is a 64 bit value and we need to update the
    full value, not just 32 bits. Align with what we
    already do for KCQs.
    
    Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
    Reviewed-by: Jesse Zhang <jesse.zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit e80b1d1aa1073230b6c25a1a72e88f37e425ccda)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu/gfx11: adjust KGQ reset sequence [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Feb 3 19:39:21 2026 -0500

    drm/amdgpu/gfx11: adjust KGQ reset sequence
    
    [ Upstream commit 3eb46fbb601f9a0b4df8eba79252a0a85e983044 ]
    
    Kernel gfx queues do not need to be reinitialized or
    remapped after a reset.  This fixes queue reset failures
    on APUs.
    
    v2: preserve init and remap for MMIO case.
    
    Fixes: b3e9bfd86658 ("drm/amdgpu/gfx11: add ring reset callbacks")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4789
    Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit b340ff216fdabfe71ba0cdd47e9835a141d08e10)
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu/gfx11: fix wptr reset in KGQ init [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jan 28 18:09:03 2026 -0500

    drm/amdgpu/gfx11: fix wptr reset in KGQ init
    
    commit b1f810471c6a6bd349f7f9f2f2fed96082056d46 upstream.
    
    wptr is a 64 bit value and we need to update the
    full value, not just 32 bits. Align with what we
    already do for KCQs.
    
    Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
    Reviewed-by: Jesse Zhang <jesse.zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 1f16866bdb1daed7a80ca79ae2837a9832a74fbc)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu/gfx12: fix wptr reset in KGQ init [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jan 28 18:13:16 2026 -0500

    drm/amdgpu/gfx12: fix wptr reset in KGQ init
    
    commit 9077d32a4b570fa20500aa26e149981c366c965d upstream.
    
    wptr is a 64 bit value and we need to update the
    full value, not just 32 bits. Align with what we
    already do for KCQs.
    
    Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
    Reviewed-by: Jesse Zhang <jesse.zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit a2918f958d3f677ea93c0ac257cb6ba69b7abb7c)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu/soc21: fix xclk for APUs [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Jan 16 17:33:05 2026 -0500

    drm/amdgpu/soc21: fix xclk for APUs
    
    commit e7fbff9e7622a00c2b53cb14df481916f0019742 upstream.
    
    The reference clock is supposed to be 100Mhz, but it
    appears to actually be slightly lower (99.81Mhz).
    
    Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14451
    Reviewed-by: Jesse Zhang <Jesse.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 637fee3954d4bd509ea9d95ad1780fc174489860)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: Fix cond_exec handling in amdgpu_ib_schedule() [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Jan 26 23:44:45 2026 -0500

    drm/amdgpu: Fix cond_exec handling in amdgpu_ib_schedule()
    
    commit b1defcdc4457649db236415ee618a7151e28788c upstream.
    
    The EXEC_COUNT field must be > 0.  In the gfx shadow
    handling we always emit a cond_exec packet after the gfx_shadow
    packet, but the EXEC_COUNT never gets patched.  This leads
    to a hang when we try and reset queues on gfx11 APUs.
    
    Fixes: c68cbbfd54c6 ("drm/amdgpu: cleanup conditional execution")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4789
    Reviewed-by: Jesse Zhang <Jesse.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit ba205ac3d6e83f56c4f824f23f1b4522cb844ff3)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: fix NULL pointer dereference in amdgpu_gmc_filter_faults_remove [+ + +]
Author: Jon Doron <jond@wiz.io>
Date:   Sat Dec 20 15:04:40 2025 +0200

    drm/amdgpu: fix NULL pointer dereference in amdgpu_gmc_filter_faults_remove
    
    commit 8b1ecc9377bc641533cd9e76dfa3aee3cd04a007 upstream.
    
    On APUs such as Raven and Renoir (GC 9.1.0, 9.2.2, 9.3.0), the ih1 and
    ih2 interrupt ring buffers are not initialized. This is by design, as
    these secondary IH rings are only available on discrete GPUs. See
    vega10_ih_sw_init() which explicitly skips ih1/ih2 initialization when
    AMD_IS_APU is set.
    
    However, amdgpu_gmc_filter_faults_remove() unconditionally uses ih1 to
    get the timestamp of the last interrupt entry. When retry faults are
    enabled on APUs (noretry=0), this function is called from the SVM page
    fault recovery path, resulting in a NULL pointer dereference when
    amdgpu_ih_decode_iv_ts_helper() attempts to access ih->ring[].
    
    The crash manifests as:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000004
      RIP: 0010:amdgpu_ih_decode_iv_ts_helper+0x22/0x40 [amdgpu]
      Call Trace:
       amdgpu_gmc_filter_faults_remove+0x60/0x130 [amdgpu]
       svm_range_restore_pages+0xae5/0x11c0 [amdgpu]
       amdgpu_vm_handle_fault+0xc8/0x340 [amdgpu]
       gmc_v9_0_process_interrupt+0x191/0x220 [amdgpu]
       amdgpu_irq_dispatch+0xed/0x2c0 [amdgpu]
       amdgpu_ih_process+0x84/0x100 [amdgpu]
    
    This issue was exposed by commit 1446226d32a4 ("drm/amdgpu: Remove GC HW
    IP 9.3.0 from noretry=1") which changed the default for Renoir APU from
    noretry=1 to noretry=0, enabling retry fault handling and thus
    exercising the buggy code path.
    
    Fix this by adding a check for ih1.ring_size before attempting to use
    it. Also restore the soft_ih support from commit dd299441654f ("drm/amdgpu:
    Rework retry fault removal").  This is needed if the hardware doesn't
    support secondary HW IH rings.
    
    v2: additional updates (Alex)
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3814
    Fixes: dd299441654f ("drm/amdgpu: Rework retry fault removal")
    Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
    Reviewed-by: Philip Yang <Philip.Yang@amd.com>
    Signed-off-by: Jon Doron <jond@wiz.io>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 6ce8d536c80aa1f059e82184f0d1994436b1d526)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/imx/tve: fix probe device leak [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Oct 30 17:34:56 2025 +0100

    drm/imx/tve: fix probe device leak
    
    commit e535c23513c63f02f67e3e09e0787907029efeaf upstream.
    
    Make sure to drop the reference taken to the DDC device during probe on
    probe failure (e.g. probe deferral) and on driver unbind.
    
    Fixes: fcbc51e54d2a ("staging: drm/imx: Add support for Television Encoder (TVEv2)")
    Cc: stable@vger.kernel.org      # 3.10
    Cc: Philipp Zabel <p.zabel@pengutronix.de>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://patch.msgid.link/20251030163456.15807-1-johan@kernel.org
    Signed-off-by: Maxime Ripard <mripard@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/msm/a6xx: fix bogus hwcg register updates [+ + +]
Author: Johan Hovold <johan@kernel.org>
Date:   Sun Dec 21 17:45:52 2025 +0100

    drm/msm/a6xx: fix bogus hwcg register updates
    
    commit dedb897f11c5d7e32c0e0a0eff7cec23a8047167 upstream.
    
    The hw clock gating register sequence consists of register value pairs
    that are written to the GPU during initialisation.
    
    The a690 hwcg sequence has two GMU registers in it that used to amount
    to random writes in the GPU mapping, but since commit 188db3d7fe66
    ("drm/msm/a6xx: Rebase GMU register offsets") they trigger a fault as
    the updated offsets now lie outside the mapping. This in turn breaks
    boot of machines like the Lenovo ThinkPad X13s.
    
    Note that the updates of these GMU registers is already taken care of
    properly since commit 40c297eb245b ("drm/msm/a6xx: Set GMU CGC
    properties on a6xx too"), but for some reason these two entries were
    left in the table.
    
    Fixes: 5e7665b5e484 ("drm/msm/adreno: Add Adreno A690 support")
    Cc: stable@vger.kernel.org      # 6.5
    Cc: Bjorn Andersson <andersson@kernel.org>
    Cc: Konrad Dybcio <konradybcio@kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Reviewed-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
    Fixes: 188db3d7fe66 ("drm/msm/a6xx: Rebase GMU register offsets")
    Patchwork: https://patchwork.freedesktop.org/patch/695778/
    Message-ID: <20251221164552.19990-1-johan@kernel.org>
    Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
    (cherry picked from commit dcbd2f8280eea2c965453ed8c3c69d6f121e950b)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
efivarfs: fix error propagation in efivar_entry_get() [+ + +]
Author: Kohei Enju <kohei@enjuk.jp>
Date:   Sat Jan 17 16:00:45 2026 +0000

    efivarfs: fix error propagation in efivar_entry_get()
    
    commit 4b22ec1685ce1fc0d862dcda3225d852fb107995 upstream.
    
    efivar_entry_get() always returns success even if the underlying
    __efivar_entry_get() fails, masking errors.
    
    This may result in uninitialized heap memory being copied to userspace
    in the efivarfs_file_read() path.
    
    Fix it by returning the error from __efivar_entry_get().
    
    Fixes: 2d82e6227ea1 ("efi: vars: Move efivar caching layer into efivarfs")
    Cc: <stable@vger.kernel.org> # v6.1+
    Signed-off-by: Kohei Enju <kohei@enjuk.jp>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
flex_proportions: make fprop_new_period() hardirq safe [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Wed Jan 21 12:27:30 2026 +0100

    flex_proportions: make fprop_new_period() hardirq safe
    
    commit dd9e2f5b38f1fdd49b1ab6d3a85f81c14369eacc upstream.
    
    Bernd has reported a lockdep splat from flexible proportions code that is
    essentially complaining about the following race:
    
    <timer fires>
    run_timer_softirq - we are in softirq context
      call_timer_fn
        writeout_period
          fprop_new_period
            write_seqcount_begin(&p->sequence);
    
            <hardirq is raised>
            ...
            blk_mq_end_request()
              blk_update_request()
                ext4_end_bio()
                  folio_end_writeback()
                    __wb_writeout_add()
                      __fprop_add_percpu_max()
                        if (unlikely(max_frac < FPROP_FRAC_BASE)) {
                          fprop_fraction_percpu()
                            seq = read_seqcount_begin(&p->sequence);
                              - sees odd sequence so loops indefinitely
    
    Note that a deadlock like this is only possible if the bdi has configured
    maximum fraction of writeout throughput which is very rare in general but
    frequent for example for FUSE bdis.  To fix this problem we have to make
    sure write section of the sequence counter is irqsafe.
    
    Link: https://lkml.kernel.org/r/20260121112729.24463-2-jack@suse.cz
    Fixes: a91befde3503 ("lib/flex_proportions.c: remove local_irq_ops in fprop_new_period()")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reported-by: Bernd Schubert <bernd@bsbernd.com>
    Link: https://lore.kernel.org/all/9b845a47-9aee-43dd-99bc-1a82bea00442@bsbernd.com/
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Joanne Koong <joannelkoong@gmail.com>
    Cc: Miklos Szeredi <miklos@szeredi.hu>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gpio: pca953x: mask interrupts in irq shutdown [+ + +]
Author: Martin Larsson <martin.larsson@actia.se>
Date:   Wed Jan 21 12:57:22 2026 +0000

    gpio: pca953x: mask interrupts in irq shutdown
    
    commit d02f20a4de0c498fbba2b0e3c1496e72c630a91e upstream.
    
    In the existing implementation irq_shutdown does not mask the interrupts
    in hardware. This can cause spurious interrupts from the IO expander.
    Add masking to irq_shutdown to prevent spurious interrupts.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Martin Larsson <martin.larsson@actia.se>
    Reviewed-by: Linus Walleij <linusw@kernel.org>
    Link: https://lore.kernel.org/r/20260121125631.2758346-1-martin.larsson@actia.se
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: rockchip: Stop calling pinctrl for set_direction [+ + +]
Author: Robin Murphy <robin.murphy@arm.com>
Date:   Mon Jan 26 12:12:26 2026 +0000

    gpio: rockchip: Stop calling pinctrl for set_direction
    
    commit 7ca497be00163610afb663867db24ac408752f13 upstream.
    
    Marking the whole controller as sleeping due to the pinctrl calls in the
    .direction_{input,output} callbacks has the unfortunate side effect that
    legitimate invocations of .get and .set, which cannot themselves sleep,
    in atomic context now spew WARN()s from gpiolib.
    
    However, as Heiko points out, the driver doing this is a bit silly to
    begin with, as the pinctrl .gpio_set_direction hook doesn't even care
    about the direction, the hook is only used to claim the mux. And sure
    enough, the .gpio_request_enable hook exists to serve this very purpose,
    so switch to that and remove the problematic business entirely.
    
    Cc: stable@vger.kernel.org
    Fixes: 20cf2aed89ac ("gpio: rockchip: mark the GPIO controller as sleeping")
    Suggested-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/bddc0469f25843ca5ae0cf578ab3671435ae98a7.1769429546.git.robin.murphy@arm.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpio: virtuser: fix UAF in configfs release path [+ + +]
Author: Yuhao Huang <nekowong743@gmail.com>
Date:   Mon Jan 26 12:03:48 2026 +0800

    gpio: virtuser: fix UAF in configfs release path
    
    [ Upstream commit 53ad4a948a4586359b841d607c08fb16c5503230 ]
    
    The gpio-virtuser configfs release path uses guard(mutex) to protect
    the device structure. However, the device is freed before the guard
    cleanup runs, causing mutex_unlock() to operate on freed memory.
    
    Specifically, gpio_virtuser_device_config_group_release() destroys
    the mutex and frees the device while still inside the guard(mutex)
    scope. When the function returns, the guard cleanup invokes
    mutex_unlock(&dev->lock), resulting in a slab use-after-free.
    
    Limit the mutex lifetime by using a scoped_guard() only around the
    activation check, so that the lock is released before mutex_destroy()
    and kfree() are called.
    
    Fixes: 91581c4b3f29 ("gpio: virtuser: new virtual testing driver for the GPIO API")
    Signed-off-by: Yuhao Huang <nekowong743@gmail.com>
    Link: https://lore.kernel.org/r/20260126040348.11167-1-yuhaohuang@YuhaodeMacBook-Pro.local
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gpiolib: acpi: Fix potential out-of-boundary left shift [+ + +]
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Jan 28 10:58:54 2026 +0100

    gpiolib: acpi: Fix potential out-of-boundary left shift
    
    commit e64d1cb21a1c6ecd51bc1c94c83f6fc656f7c94d upstream.
    
    GPIO Address Space handler gets a pointer to the in or out value.
    This value is supposed to be at least 64-bit, but it's not limited
    to be exactly 64-bit. When ACPI tables are being parsed, for
    the bigger Connection():s ACPICA creates a Buffer instead of regular
    Integer object. The Buffer exists as long as Namespace holds
    the certain Connection(). Hence we can access the necessary bits
    without worrying. On the other hand, the left shift, used in
    the code, is limited by 31 (on 32-bit platforms) and otherwise
    considered to be Undefined Behaviour. Also the code uses only
    the first 64-bit word for the value, and anything bigger than 63
    will be also subject to UB. Fix all this by modifying the code
    to correctly set or clear the respective bit in the bitmap constructed
    of 64-bit words.
    
    Fixes: 59084c564c41 ("gpiolib: acpi: use BIT_ULL() for u64 mask in address space handler")
    Fixes: 2c4d00cb8fc5 ("gpiolib: acpi: Use BIT() macro to increase readability")
    Cc: stable@vger.kernel.org
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://patch.msgid.link/20260128095918.4157491-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gpiolib: acpi: use BIT_ULL() for u64 mask in address space handler [+ + +]
Author: Denis Sergeev <denserg.edu@gmail.com>
Date:   Mon Jan 26 06:59:14 2026 +0300

    gpiolib: acpi: use BIT_ULL() for u64 mask in address space handler
    
    [ Upstream commit c0ae43d303e45764918fa8c1dc13d6a5db59c479 ]
    
    The BIT() macro uses unsigned long, which is 32 bits on 32-bit
    architectures. When iterating over GPIO pins with index >= 32,
    the expression (*value & BIT(i)) causes undefined behavior due
    to shifting by a value >= type width.
    
    Since 'value' is a pointer to u64, use BIT_ULL() to ensure correct
    64-bit mask on all architectures.
    
    Found by Linux Verification Center (linuxtesting.org) with Svace.
    
    Fixes: 2c4d00cb8fc5 ("gpiolib: acpi: Use BIT() macro to increase readability")
    Signed-off-by: Denis Sergeev <denserg.edu@gmail.com>
    Reviewed-by: Mika Westerberg <westeri@kernel.org>
    Link: https://lore.kernel.org/r/20260126035914.16586-1-denserg.edu@gmail.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ice: Fix NULL pointer dereference in ice_vsi_set_napi_queues [+ + +]
Author: Aaron Ma <aaron.ma@canonical.com>
Date:   Thu Dec 25 14:21:21 2025 +0800

    ice: Fix NULL pointer dereference in ice_vsi_set_napi_queues
    
    [ Upstream commit 9bb30be4d89ff9a8d7ab1aa0eb2edaca83431f85 ]
    
    Add NULL pointer checks in ice_vsi_set_napi_queues() to prevent crashes
    during resume from suspend when rings[q_idx]->q_vector is NULL.
    
    Tested adaptor:
    60:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller E810-XXV for SFP [8086:159b] (rev 02)
            Subsystem: Intel Corporation Ethernet Network Adapter E810-XXV-2 [8086:4003]
    
    SR-IOV state: both disabled and enabled can reproduce this issue.
    
    kernel version: v6.18
    
    Reproduce steps:
    Boot up and execute suspend like systemctl suspend or rtcwake.
    
    Log:
    <1>[  231.443607] BUG: kernel NULL pointer dereference, address: 0000000000000040
    <1>[  231.444052] #PF: supervisor read access in kernel mode
    <1>[  231.444484] #PF: error_code(0x0000) - not-present page
    <6>[  231.444913] PGD 0 P4D 0
    <4>[  231.445342] Oops: Oops: 0000 [#1] SMP NOPTI
    <4>[  231.446635] RIP: 0010:netif_queue_set_napi+0xa/0x170
    <4>[  231.447067] Code: 31 f6 31 ff c3 cc cc cc cc 0f 1f 80 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 85 c9 74 0b <48> 83 79 30 00 0f 84 39 01 00 00 55 41 89 d1 49 89 f8 89 f2 48 89
    <4>[  231.447513] RSP: 0018:ffffcc780fc078c0 EFLAGS: 00010202
    <4>[  231.447961] RAX: ffff8b848ca30400 RBX: ffff8b848caf2028 RCX: 0000000000000010
    <4>[  231.448443] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8b848dbd4000
    <4>[  231.448896] RBP: ffffcc780fc078e8 R08: 0000000000000000 R09: 0000000000000000
    <4>[  231.449345] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000001
    <4>[  231.449817] R13: ffff8b848dbd4000 R14: ffff8b84833390c8 R15: 0000000000000000
    <4>[  231.450265] FS:  00007c7b29e9d740(0000) GS:ffff8b8c068e2000(0000) knlGS:0000000000000000
    <4>[  231.450715] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    <4>[  231.451179] CR2: 0000000000000040 CR3: 000000030626f004 CR4: 0000000000f72ef0
    <4>[  231.451629] PKRU: 55555554
    <4>[  231.452076] Call Trace:
    <4>[  231.452549]  <TASK>
    <4>[  231.452996]  ? ice_vsi_set_napi_queues+0x4d/0x110 [ice]
    <4>[  231.453482]  ice_resume+0xfd/0x220 [ice]
    <4>[  231.453977]  ? __pfx_pci_pm_resume+0x10/0x10
    <4>[  231.454425]  pci_pm_resume+0x8c/0x140
    <4>[  231.454872]  ? __pfx_pci_pm_resume+0x10/0x10
    <4>[  231.455347]  dpm_run_callback+0x5f/0x160
    <4>[  231.455796]  ? dpm_wait_for_superior+0x107/0x170
    <4>[  231.456244]  device_resume+0x177/0x270
    <4>[  231.456708]  dpm_resume+0x209/0x2f0
    <4>[  231.457151]  dpm_resume_end+0x15/0x30
    <4>[  231.457596]  suspend_devices_and_enter+0x1da/0x2b0
    <4>[  231.458054]  enter_state+0x10e/0x570
    
    Add defensive checks for both the ring pointer and its q_vector
    before dereferencing, allowing the system to resume successfully even when
    q_vectors are unmapped.
    
    Fixes: 2a5dc090b92cf ("ice: move netif_queue_set_napi to rtnl-protected sections")
    Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
    Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ice: stop counting UDP csum mismatch as rx_errors [+ + +]
Author: Jesse Brandeburg <jbrandeburg@cloudflare.com>
Date:   Mon Dec 1 15:38:52 2025 -0800

    ice: stop counting UDP csum mismatch as rx_errors
    
    [ Upstream commit 05faf2c0a76581d0a7fdbb8ec46477ba183df95b ]
    
    Since the beginning, the Intel ice driver has counted receive checksum
    offload mismatches into the rx_errors member of the rtnl_link_stats64
    struct. In ethtool -S these show up as rx_csum_bad.nic.
    
    I believe counting these in rx_errors is fundamentally wrong, as it's
    pretty clear from the comments in if_link.h and from every other statistic
    the driver is summing into rx_errors, that all of them would cause a
    "hardware drop" except for the UDP checksum mismatch, as well as the fact
    that all the other causes for rx_errors are L2 reasons, and this L4 UDP
    "mismatch" is an outlier.
    
    A last nail in the coffin is that rx_errors is monitored in production and
    can indicate a bad NIC/cable/Switch port, but instead some random series of
    UDP packets with bad checksums will now trigger this alert. This false
    positive makes the alert useless and affects us as well as other companies.
    
    This packet with presumably a bad UDP checksum is *already* passed to the
    stack, just not marked as offloaded by the hardware/driver. If it is
    dropped by the stack it will show up as UDP_MIB_CSUMERRORS.
    
    And one more thing, none of the other Intel drivers, and at least bnxt_en
    and mlx5 both don't appear to count UDP offload mismatches as rx_errors.
    
    Here is a related customer complaint:
    https://community.intel.com/t5/Ethernet-Products/ice-rx-errros-is-too-sensitive-to-IP-TCP-attack-packets-Intel/td-p/1662125
    
    Fixes: 4f1fe43c920b ("ice: Add more Rx errors to netdev's rx_error counter")
    Cc: Tony Nguyen <anthony.l.nguyen@intel.com>
    Cc: Jake Keller <jacob.e.keller@intel.com>
    Cc: IWL <intel-wired-lan@lists.osuosl.org>
    Signed-off-by: Jesse Brandeburg <jbrandeburg@cloudflare.com>
    Acked-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv6: use the right ifindex when replying to icmpv6 from localhost [+ + +]
Author: Fernando Fernandez Mancera <fmancera@suse.de>
Date:   Wed Jan 21 20:44:08 2026 +0100

    ipv6: use the right ifindex when replying to icmpv6 from localhost
    
    [ Upstream commit 03cbcdf93866e61beb0063392e6dbb701f03aea2 ]
    
    When replying to a ICMPv6 echo request that comes from localhost address
    the right output ifindex is 1 (lo) and not rt6i_idev dev index. Use the
    skb device ifindex instead. This fixes pinging to a local address from
    localhost source address.
    
    $ ping6 -I ::1 2001:1:1::2 -c 3
    PING 2001:1:1::2 (2001:1:1::2) from ::1 : 56 data bytes
    64 bytes from 2001:1:1::2: icmp_seq=1 ttl=64 time=0.037 ms
    64 bytes from 2001:1:1::2: icmp_seq=2 ttl=64 time=0.069 ms
    64 bytes from 2001:1:1::2: icmp_seq=3 ttl=64 time=0.122 ms
    
    2001:1:1::2 ping statistics
    3 packets transmitted, 3 received, 0% packet loss, time 2032ms
    rtt min/avg/max/mdev = 0.037/0.076/0.122/0.035 ms
    
    Fixes: 1b70d792cf67 ("ipv6: Use rt6i_idev index for echo replies to a local address")
    Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20260121194409.6749-1-fmancera@suse.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ksmbd: smbd: fix dma_unmap_sg() nents [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Wed Jan 28 15:32:52 2026 -0500

    ksmbd: smbd: fix dma_unmap_sg() nents
    
    [ Upstream commit 98e3e2b561bc88f4dd218d1c05890672874692f6 ]
    
    The dma_unmap_sg() functions should be called with the same nents as the
    dma_map_sg(), not the value the map function returned.
    
    Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Acked-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    [ Context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
libbpf: Fix -Wdiscarded-qualifiers under C23 [+ + +]
Author: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Date:   Sat Dec 6 14:28:25 2025 +0500

    libbpf: Fix -Wdiscarded-qualifiers under C23
    
    commit d70f79fef65810faf64dbae1f3a1b5623cdb2345 upstream.
    
    glibc ≥ 2.42 (GCC 15) defaults to -std=gnu23, which promotes
    -Wdiscarded-qualifiers to an error.
    
    In C23, strstr() and strchr() return "const char *".
    
    Change variable types to const char * where the pointers are never
    modified (res, sym_sfx, next_path).
    
    Suggested-by: Florian Weimer <fweimer@redhat.com>
    Suggested-by: Andrii Nakryiko <andrii@kernel.org>
    Signed-off-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
    Link: https://lore.kernel.org/r/20251206092825.1471385-1-mikhail.v.gavrilov@gmail.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [ shung-hsi.yu: needed to fix kernel build failure due to libbpf since glibc
      2.43+ (which adds 'const' qualifier to strstr). 'sym_sfx' hunk dropped because
      commit f8a05692de06 ("libbpf: Work around kernel inconsistently stripping
      '.llvm.' suffix") is not present. ]
    Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.12.69 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Feb 6 16:55:51 2026 +0100

    Linux 6.12.69
    
    Link: https://lore.kernel.org/r/20260204143846.906385641@linuxfoundation.org
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Brett Mastbergen <bmastbergen@ciq.com>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Tested-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/kasan: fix KASAN poisoning in vrealloc() [+ + +]
Author: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Date:   Tue Jan 13 20:15:15 2026 +0100

    mm/kasan: fix KASAN poisoning in vrealloc()
    
    commit 9b47d4eea3f7c1f620e95bda1d6221660bde7d7b upstream.
    
    A KASAN warning can be triggered when vrealloc() changes the requested
    size to a value that is not aligned to KASAN_GRANULE_SIZE.
    
        ------------[ cut here ]------------
        WARNING: CPU: 2 PID: 1 at mm/kasan/shadow.c:174 kasan_unpoison+0x40/0x48
        ...
        pc : kasan_unpoison+0x40/0x48
        lr : __kasan_unpoison_vmalloc+0x40/0x68
        Call trace:
         kasan_unpoison+0x40/0x48 (P)
         vrealloc_node_align_noprof+0x200/0x320
         bpf_patch_insn_data+0x90/0x2f0
         convert_ctx_accesses+0x8c0/0x1158
         bpf_check+0x1488/0x1900
         bpf_prog_load+0xd20/0x1258
         __sys_bpf+0x96c/0xdf0
         __arm64_sys_bpf+0x50/0xa0
         invoke_syscall+0x90/0x160
    
    Introduce a dedicated kasan_vrealloc() helper that centralizes KASAN
    handling for vmalloc reallocations.  The helper accounts for KASAN granule
    alignment when growing or shrinking an allocation and ensures that partial
    granules are handled correctly.
    
    Use this helper from vrealloc_node_align_noprof() to fix poisoning logic.
    
    [ryabinin.a.a@gmail.com: move kasan_enabled() check, fix build]
      Link: https://lkml.kernel.org/r/20260119144509.32767-1-ryabinin.a.a@gmail.com
    Link: https://lkml.kernel.org/r/20260113191516.31015-1-ryabinin.a.a@gmail.com
    Fixes: d699440f58ce ("mm: fix vrealloc()'s KASAN poisoning logic")
    Signed-off-by: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Reported-by: Maciej Żenczykowski <maze@google.com>
    Reported-by: <joonki.min@samsung-slsi.corp-partner.google.com>
    Closes: https://lkml.kernel.org/r/CANP3RGeuRW53vukDy7WDO3FiVgu34-xVJYkfpm08oLO3odYFrA@mail.gmail.com
    Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
    Tested-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Uladzislau Rezki <urezki@gmail.com>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/kfence: randomize the freelist on initialization [+ + +]
Author: Pimyn Girgis <pimyn@google.com>
Date:   Tue Jan 20 17:15:10 2026 +0100

    mm/kfence: randomize the freelist on initialization
    
    commit 870ff19251bf3910dda7a7245da826924045fedd upstream.
    
    Randomize the KFENCE freelist during pool initialization to make
    allocation patterns less predictable.  This is achieved by shuffling the
    order in which metadata objects are added to the freelist using
    get_random_u32_below().
    
    Additionally, ensure the error path correctly calculates the address range
    to be reset if initialization fails, as the address increment logic has
    been moved to a separate loop.
    
    Link: https://lkml.kernel.org/r/20260120161510.3289089-1-pimyn@google.com
    Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure")
    Signed-off-by: Pimyn Girgis <pimyn@google.com>
    Reviewed-by: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Marco Elver <elver@google.com>
    Cc: Ernesto Martnez Garca <ernesto.martinezgarcia@tugraz.at>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Kees Cook <kees@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Pimyn Girgis <pimyn@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/memory-failure: fix missing ->mf_stats count in hugetlb poison [+ + +]
Author: Jane Chu <jane.chu@oracle.com>
Date:   Tue Jan 20 16:22:33 2026 -0700

    mm/memory-failure: fix missing ->mf_stats count in hugetlb poison
    
    commit a148a2040191b12b45b82cb29c281cb3036baf90 upstream.
    
    When a newly poisoned subpage ends up in an already poisoned hugetlb
    folio, 'num_poisoned_pages' is incremented, but the per node ->mf_stats is
    not.  Fix the inconsistency by designating action_result() to update them
    both.
    
    While at it, define __get_huge_page_for_hwpoison() return values in terms
    of symbol names for better readibility.  Also rename
    folio_set_hugetlb_hwpoison() to hugetlb_update_hwpoison() since the
    function does more than the conventional bit setting and the fact three
    possible return values are expected.
    
    Link: https://lkml.kernel.org/r/20260120232234.3462258-1-jane.chu@oracle.com
    Fixes: 18f41fa616ee ("mm: memory-failure: bump memory failure stats to pglist_data")
    Signed-off-by: Jane Chu <jane.chu@oracle.com>
    Acked-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Chris Mason <clm@meta.com>
    Cc: David Hildenbrand <david@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Jiaqi Yan <jiaqiyan@google.com>
    Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: William Roche <william.roche@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm/memory-failure: teach kill_accessing_process to accept hugetlb tail page pfn [+ + +]
Author: Jane Chu <jane.chu@oracle.com>
Date:   Tue Jan 20 16:22:34 2026 -0700

    mm/memory-failure: teach kill_accessing_process to accept hugetlb tail page pfn
    
    commit 057a6f2632c956483e2b2628477f0fcd1cd8a844 upstream.
    
    When a hugetlb folio is being poisoned again, try_memory_failure_hugetlb()
    passed head pfn to kill_accessing_process(), that is not right.  The
    precise pfn of the poisoned page should be used in order to determine the
    precise vaddr as the SIGBUS payload.
    
    This issue has already been taken care of in the normal path, that is,
    hwpoison_user_mappings(), see [1][2].  Further more, for [3] to work
    correctly in the hugetlb repoisoning case, it's essential to inform VM the
    precise poisoned page, not the head page.
    
    [1] https://lkml.kernel.org/r/20231218135837.3310403-1-willy@infradead.org
    [2] https://lkml.kernel.org/r/20250224211445.2663312-1-jane.chu@oracle.com
    [3] https://lore.kernel.org/lkml/20251116013223.1557158-1-jiaqiyan@google.com/
    
    Link: https://lkml.kernel.org/r/20260120232234.3462258-2-jane.chu@oracle.com
    Signed-off-by: Jane Chu <jane.chu@oracle.com>
    Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Acked-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Chris Mason <clm@meta.com>
    Cc: David Hildenbrand <david@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Jiaqi Yan <jiaqiyan@google.com>
    Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: William Roche <william.roche@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/shmem, swap: fix race of truncate and swap entry split [+ + +]
Author: Kairui Song <kasong@tencent.com>
Date:   Tue Jan 20 00:11:21 2026 +0800

    mm/shmem, swap: fix race of truncate and swap entry split
    
    commit 8a1968bd997f45a9b11aefeabdd1232e1b6c7184 upstream.
    
    The helper for shmem swap freeing is not handling the order of swap
    entries correctly.  It uses xa_cmpxchg_irq to erase the swap entry, but it
    gets the entry order before that using xa_get_order without lock
    protection, and it may get an outdated order value if the entry is split
    or changed in other ways after the xa_get_order and before the
    xa_cmpxchg_irq.
    
    And besides, the order could grow and be larger than expected, and cause
    truncation to erase data beyond the end border.  For example, if the
    target entry and following entries are swapped in or freed, then a large
    folio was added in place and swapped out, using the same entry, the
    xa_cmpxchg_irq will still succeed, it's very unlikely to happen though.
    
    To fix that, open code the Xarray cmpxchg and put the order retrieval and
    value checking in the same critical section.  Also, ensure the order won't
    exceed the end border, skip it if the entry goes across the border.
    
    Skipping large swap entries crosses the end border is safe here.  Shmem
    truncate iterates the range twice, in the first iteration,
    find_lock_entries already filtered such entries, and shmem will swapin the
    entries that cross the end border and partially truncate the folio (split
    the folio or at least zero part of it).  So in the second loop here, if we
    see a swap entry that crosses the end order, it must at least have its
    content erased already.
    
    I observed random swapoff hangs and kernel panics when stress testing
    ZSWAP with shmem.  After applying this patch, all problems are gone.
    
    Link: https://lkml.kernel.org/r/20260120-shmem-swap-fix-v3-1-3d33ebfbc057@tencent.com
    Fixes: 809bc86517cc ("mm: shmem: support large folio swap out")
    Signed-off-by: Kairui Song <kasong@tencent.com>
    Reviewed-by: Nhat Pham <nphamcs@gmail.com>
    Acked-by: Chris Li <chrisl@kernel.org>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Barry Song <baohua@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Kemeng Shi <shikemeng@huaweicloud.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mptcp: avoid dup SUB_CLOSED events after disconnect [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Tue Feb 3 12:50:55 2026 -0500

    mptcp: avoid dup SUB_CLOSED events after disconnect
    
    [ Upstream commit 280d654324e33f8e6e3641f76764694c7b64c5db ]
    
    In case of subflow disconnect(), which can also happen with the first
    subflow in case of errors like timeout or reset, mptcp_subflow_ctx_reset
    will reset most fields from the mptcp_subflow_context structure,
    including close_event_done. Then, when another subflow is closed, yet
    another SUB_CLOSED event for the disconnected initial subflow is sent.
    Because of the previous reset, there are no source address and
    destination port.
    
    A solution is then to also check the subflow's local id: it shouldn't be
    negative anyway.
    
    Another solution would be not to reset subflow->close_event_done at
    disconnect time, but when reused. But then, probably the whole reset
    could be done when being reused. Let's not change this logic, similar
    to TCP with tcp_disconnect().
    
    Fixes: d82809b6c5f2 ("mptcp: avoid duplicated SUB_CLOSED events")
    Cc: stable@vger.kernel.org
    Reported-by: Marco Angaroni <marco.angaroni@italtel.com>
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/603
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20260127-net-mptcp-dup-nl-events-v1-1-7f71e1bc4feb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: only reset subflow errors when propagated [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Tue Jan 27 20:27:25 2026 +0100

    mptcp: only reset subflow errors when propagated
    
    commit dccf46179ddd6c04c14be8ed584dc54665f53f0e upstream.
    
    Some subflow socket errors need to be reported to the MPTCP socket: the
    initial subflow connect (MP_CAPABLE), and the ones from the fallback
    sockets. The others are not propagated.
    
    The issue is that sock_error() was used to retrieve the error, which was
    also resetting the sk_err field. Because of that, when notifying the
    userspace about subflow close events later on from the MPTCP worker, the
    ssk->sk_err field was always 0.
    
    Now, the error (sk_err) is only reset when propagating it to the msk.
    
    Fixes: 15cc10453398 ("mptcp: deliver ssk errors to msk")
    Cc: stable@vger.kernel.org
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20260127-net-mptcp-dup-nl-events-v1-3-7f71e1bc4feb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5: Fix memory leak in esw_acl_ingress_lgcy_setup() [+ + +]
Author: Zilin Guan <zilin@seu.edu.cn>
Date:   Tue Jan 20 13:46:40 2026 +0000

    net/mlx5: Fix memory leak in esw_acl_ingress_lgcy_setup()
    
    [ Upstream commit 108948f723b13874b7ebf6b3f1cc598a7de38622 ]
    
    In esw_acl_ingress_lgcy_setup(), if esw_acl_table_create() fails,
    the function returns directly without releasing the previously
    created counter, leading to a memory leak.
    
    Fix this by jumping to the out label instead of returning directly,
    which aligns with the error handling logic of other paths in this
    function.
    
    Compile tested only. Issue found using a prototype static analysis tool
    and code review.
    
    Fixes: 07bab9502641 ("net/mlx5: E-Switch, Refactor eswitch ingress acl codes")
    Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20260120134640.2717808-1-zilin@seu.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: Fix vhca_id access call trace use before alloc [+ + +]
Author: Parav Pandit <parav@nvidia.com>
Date:   Tue Jan 27 10:52:40 2026 +0200

    net/mlx5: Fix vhca_id access call trace use before alloc
    
    [ Upstream commit a8f930b7be7be3f18f14446df461e17137400407 ]
    
    HCA CAP structure is allocated in mlx5_hca_caps_alloc().
    mlx5_mdev_init()
      mlx5_hca_caps_alloc()
    
    And HCA CAP is read from the device in mlx5_init_one().
    
    The vhca_id's debugfs file is published even before above two
    operations are done.
    Due to this when user reads the vhca id before the initialization,
    following call trace is observed.
    
    Fix this by deferring debugfs publication until the HCA CAP is
    allocated and read from the device.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000004
    PGD 0 P4D 0
    Oops: Oops: 0000 [#1] SMP PTI
    CPU: 23 UID: 0 PID: 6605 Comm: cat Kdump: loaded Not tainted 6.18.0-rc7-sf+ #110 PREEMPT(full)
    Hardware name: Supermicro SYS-6028U-TR4+/X10DRU-i+, BIOS 2.0b 08/09/2016
    RIP: 0010:vhca_id_show+0x17/0x30 [mlx5_core]
    Code: cb 66 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 47 70 48 c7 c6 45 f0 12 c1 48 8b 80 70 03 00 00 <8b> 50 04 0f ca 0f b7 d2 e8 8c 82 47 cb 31 c0 c3 cc cc cc cc 0f 1f
    RSP: 0018:ffffd37f4f337d40 EFLAGS: 00010203
    RAX: 0000000000000000 RBX: ffff8f18445c9b40 RCX: 0000000000000001
    RDX: ffff8f1109825180 RSI: ffffffffc112f045 RDI: ffff8f18445c9b40
    RBP: 0000000000000000 R08: 0000645eac0d2928 R09: 0000000000000006
    R10: ffffd37f4f337d48 R11: 0000000000000000 R12: ffffd37f4f337dd8
    R13: ffffd37f4f337db0 R14: ffff8f18445c9b68 R15: 0000000000000001
    FS:  00007f3eea099580(0000) GS:ffff8f2090f1f000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000004 CR3: 00000008b64e4006 CR4: 00000000003726f0
    Call Trace:
     <TASK>
     seq_read_iter+0x11f/0x4f0
     ? _raw_spin_unlock+0x15/0x30
     ? do_anonymous_page+0x104/0x810
     seq_read+0xf6/0x120
     ? srso_alias_untrain_ret+0x1/0x10
     full_proxy_read+0x5c/0x90
     vfs_read+0xad/0x320
     ? handle_mm_fault+0x1ab/0x290
     ksys_read+0x52/0xd0
     do_syscall_64+0x61/0x11e0
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Fixes: dd3dd7263cde ("net/mlx5: Expose vhca_id to debugfs")
    Signed-off-by: Parav Pandit <parav@nvidia.com>
    Reviewed-by: Shay Drori <shayd@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/1769503961-124173-4-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: fs, Fix inverted cap check in tx flow table root disconnect [+ + +]
Author: Shay Drory <shayd@nvidia.com>
Date:   Tue Jan 27 10:52:38 2026 +0200

    net/mlx5: fs, Fix inverted cap check in tx flow table root disconnect
    
    [ Upstream commit 2610a3d65691a1301ab10c92ff6ebab0bedf9199 ]
    
    The capability check for reset_root_to_default was inverted, causing
    the function to return -EOPNOTSUPP when the capability IS supported,
    rather than when it is NOT supported.
    
    Fix the capability check condition.
    
    Fixes: 3c9c34c32bc6 ("net/mlx5: fs, Command to control TX flow table root")
    Signed-off-by: Shay Drory <shayd@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/1769503961-124173-2-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: Initialize events outside devlink lock [+ + +]
Author: Cosmin Ratiu <cratiu@nvidia.com>
Date:   Sun Nov 16 22:45:35 2025 +0200

    net/mlx5: Initialize events outside devlink lock
    
    [ Upstream commit b6b03097f9826db72aeb3f751774c5e9edd9a5b3 ]
    
    Move event init/cleanup outside of mlx5_init_one() / mlx5_uninit_one()
    and into the mlx5_mdev_init() / mlx5_mdev_uninit() functions.
    
    By doing this, we avoid the events being reinitialized on devlink reload
    and, more importantly, the events->sw_nh notifier chain becomes
    available earlier in the init procedure, which will be used in
    subsequent patches. This makes sense because the events struct is pure
    software, independent of any HW details.
    
    Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
    Reviewed-by: Carolina Jubran <cjubran@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/1763325940-1231508-2-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: a8f930b7be7b ("net/mlx5: Fix vhca_id access call trace use before alloc")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5e: Skip ESN replay window setup for IPsec crypto offload [+ + +]
Author: Jianbo Liu <jianbol@nvidia.com>
Date:   Tue Jan 27 10:52:41 2026 +0200

    net/mlx5e: Skip ESN replay window setup for IPsec crypto offload
    
    [ Upstream commit 011be342dd24b5168a5dcf408b14c3babe503341 ]
    
    Commit a5e400a985df ("net/mlx5e: Honor user choice of IPsec replay
    window size") introduced logic to setup the ESN replay window size.
    This logic is only valid for packet offload.
    
    However, the check to skip this block only covered outbound offloads.
    It was not skipped for crypto offload, causing it to fall through to
    the new switch statement and trigger its WARN_ON default case (for
    instance, if a window larger than 256 bits was configured).
    
    Fix this by amending the condition to also skip the replay window
    setup if the offload type is not XFRM_DEV_OFFLOAD_PACKET.
    
    Fixes: a5e400a985df ("net/mlx5e: Honor user choice of IPsec replay window size")
    Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/1769503961-124173-5-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5e: TC, delete flows only for existing peers [+ + +]
Author: Mark Bloch <mbloch@nvidia.com>
Date:   Mon Jan 26 09:14:54 2026 +0200

    net/mlx5e: TC, delete flows only for existing peers
    
    [ Upstream commit f67666938ae626cbda63fbf5176b3583c07e7124 ]
    
    When deleting TC steering flows, iterate only over actual devcom
    peers instead of assuming all possible ports exist. This avoids
    touching non-existent peers and ensures cleanup is limited to
    devices the driver is currently connected to.
    
     BUG: kernel NULL pointer dereference, address: 0000000000000008
     #PF: supervisor write access in kernel mode
     #PF: error_code(0x0002) - not-present page
     PGD 133c8a067 P4D 0
     Oops: Oops: 0002 [#1] SMP
     CPU: 19 UID: 0 PID: 2169 Comm: tc Not tainted 6.18.0+ #156 NONE
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
     RIP: 0010:mlx5e_tc_del_fdb_peers_flow+0xbe/0x200 [mlx5_core]
     Code: 00 00 a8 08 74 a8 49 8b 46 18 f6 c4 02 74 9f 4c 8d bf a0 12 00 00 4c 89 ff e8 0e e7 96 e1 49 8b 44 24 08 49 8b 0c 24 4c 89 ff <48> 89 41 08 48 89 08 49 89 2c 24 49 89 5c 24 08 e8 7d ce 96 e1 49
     RSP: 0018:ff11000143867528 EFLAGS: 00010246
     RAX: 0000000000000000 RBX: dead000000000122 RCX: 0000000000000000
     RDX: ff11000143691580 RSI: ff110001026e5000 RDI: ff11000106f3d2a0
     RBP: dead000000000100 R08: 00000000000003fd R09: 0000000000000002
     R10: ff11000101c75690 R11: ff1100085faea178 R12: ff11000115f0ae78
     R13: 0000000000000000 R14: ff11000115f0a800 R15: ff11000106f3d2a0
     FS:  00007f35236bf740(0000) GS:ff110008dc809000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000008 CR3: 0000000157a01001 CR4: 0000000000373eb0
     Call Trace:
      <TASK>
      mlx5e_tc_del_flow+0x46/0x270 [mlx5_core]
      mlx5e_flow_put+0x25/0x50 [mlx5_core]
      mlx5e_delete_flower+0x2a6/0x3e0 [mlx5_core]
      tc_setup_cb_reoffload+0x20/0x80
      fl_reoffload+0x26f/0x2f0 [cls_flower]
      ? mlx5e_tc_reoffload_flows_work+0xc0/0xc0 [mlx5_core]
      ? mlx5e_tc_reoffload_flows_work+0xc0/0xc0 [mlx5_core]
      tcf_block_playback_offloads+0x9e/0x1c0
      tcf_block_unbind+0x7b/0xd0
      tcf_block_setup+0x186/0x1d0
      tcf_block_offload_cmd.isra.0+0xef/0x130
      tcf_block_offload_unbind+0x43/0x70
      __tcf_block_put+0x85/0x160
      ingress_destroy+0x32/0x110 [sch_ingress]
      __qdisc_destroy+0x44/0x100
      qdisc_graft+0x22b/0x610
      tc_get_qdisc+0x183/0x4d0
      rtnetlink_rcv_msg+0x2d7/0x3d0
      ? rtnl_calcit.isra.0+0x100/0x100
      netlink_rcv_skb+0x53/0x100
      netlink_unicast+0x249/0x320
      ? __alloc_skb+0x102/0x1f0
      netlink_sendmsg+0x1e3/0x420
      __sock_sendmsg+0x38/0x60
      ____sys_sendmsg+0x1ef/0x230
      ? copy_msghdr_from_user+0x6c/0xa0
      ___sys_sendmsg+0x7f/0xc0
      ? ___sys_recvmsg+0x8a/0xc0
      ? __sys_sendto+0x119/0x180
      __sys_sendmsg+0x61/0xb0
      do_syscall_64+0x55/0x640
      entry_SYSCALL_64_after_hwframe+0x4b/0x53
     RIP: 0033:0x7f35238bb764
     Code: 15 b9 86 0c 00 f7 d8 64 89 02 b8 ff ff ff ff eb bf 0f 1f 44 00 00 f3 0f 1e fa 80 3d e5 08 0d 00 00 74 13 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 4c c3 0f 1f 00 55 48 89 e5 48 83 ec 20 89 55
     RSP: 002b:00007ffed4c35638 EFLAGS: 00000202 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 000055a2efcc75e0 RCX: 00007f35238bb764
     RDX: 0000000000000000 RSI: 00007ffed4c356a0 RDI: 0000000000000003
     RBP: 00007ffed4c35710 R08: 0000000000000010 R09: 00007f3523984b20
     R10: 0000000000000004 R11: 0000000000000202 R12: 00007ffed4c35790
     R13: 000000006947df8f R14: 000055a2efcc75e0 R15: 00007ffed4c35780
    
    Fixes: 9be6c21fdcf8 ("net/mlx5e: Handle offloads flows per peer")
    Signed-off-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Shay Drori <shayd@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/1769411695-18820-3-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/sched: act_ife: convert comma to semicolon [+ + +]
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Wed Nov 12 15:27:09 2025 +0800

    net/sched: act_ife: convert comma to semicolon
    
    commit 205305c028ad986d0649b8b100bab6032dcd1bb5 upstream.
    
    Replace comma between expressions with semicolons.
    
    Using a ',' in place of a ';' can have unintended side effects.
    Although that is not the case here, it is seems best to use ';'
    unless ',' is intended.
    
    Found by inspection.
    No functional change intended.
    Compile tested only.
    
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Link: https://patch.msgid.link/20251112072709.73755-1-nichen@iscas.ac.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: bcmasp: fix early exit leak with fixed phy [+ + +]
Author: Justin Chen <justin.chen@broadcom.com>
Date:   Thu Jan 22 11:40:01 2026 -0800

    net: bcmasp: fix early exit leak with fixed phy
    
    [ Upstream commit 6de4436bf369e1444606445e4cd5df5bcfc74b48 ]
    
    We are not deregistering the fixed phy link when hitting the early
    exit condition. Add the correct early exit sequence.
    
    Fixes: 490cb412007d ("net: bcmasp: Add support for ASP2.0 Ethernet controller")
    Signed-off-by: Justin Chen <justin.chen@broadcom.com>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20260122194001.1098859-1-justin.chen@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: bridge: fix static key check [+ + +]
Author: Martin Kaiser <martin@kaiser.cx>
Date:   Tue Jan 27 11:19:23 2026 +0100

    net: bridge: fix static key check
    
    [ Upstream commit cc0cf10fdaeadf5542d64a55b5b4120d3df90b7d ]
    
    Fix the check if netfilter's static keys are available. netfilter defines
    and exports static keys if CONFIG_JUMP_LABEL is enabled. (HAVE_JUMP_LABEL
    is never defined.)
    
    Fixes: 971502d77faa ("bridge: netfilter: unroll NF_HOOK helper in bridge input path")
    Signed-off-by: Martin Kaiser <martin@kaiser.cx>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
    Link: https://patch.msgid.link/20260127101925.1754425-1-martin@kaiser.cx
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: fix segmentation of forwarding fraglist GRO [+ + +]
Author: Jibin Zhang <jibin.zhang@mediatek.com>
Date:   Mon Jan 26 23:21:11 2026 +0800

    net: fix segmentation of forwarding fraglist GRO
    
    commit 426ca15c7f6cb6562a081341ca88893a50c59fa2 upstream.
    
    This patch enhances GSO segment handling by properly checking
    the SKB_GSO_DODGY flag for frag_list GSO packets, addressing
    low throughput issues observed when a station accesses IPv4
    servers via hotspots with an IPv6-only upstream interface.
    
    Specifically, it fixes a bug in GSO segmentation when forwarding
    GRO packets containing a frag_list. The function skb_segment_list
    cannot correctly process GRO skbs that have been converted by XLAT,
    since XLAT only translates the header of the head skb. Consequently,
    skbs in the frag_list may remain untranslated, resulting in protocol
    inconsistencies and reduced throughput.
    
    To address this, the patch explicitly sets the SKB_GSO_DODGY flag
    for GSO packets in XLAT's IPv4/IPv6 protocol translation helpers
    (bpf_skb_proto_4_to_6 and bpf_skb_proto_6_to_4). This marks GSO
    packets as potentially modified after protocol translation. As a
    result, GSO segmentation will avoid using skb_segment_list and
    instead falls back to skb_segment for packets with the SKB_GSO_DODGY
    flag. This ensures that only safe and fully translated frag_list
    packets are processed by skb_segment_list, resolving protocol
    inconsistencies and improving throughput when forwarding GRO packets
    converted by XLAT.
    
    Signed-off-by: Jibin Zhang <jibin.zhang@mediatek.com>
    Fixes: 9fd1ff5d2ac7 ("udp: Support UDP fraglist GRO/GSO.")
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20260126152114.1211-1-jibin.zhang@mediatek.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: mana: Change the function signature of mana_get_primary_netdev_rcu [+ + +]
Author: Long Li <longli@microsoft.com>
Date:   Tue Feb 3 12:45:23 2026 -0800

    net: mana: Change the function signature of mana_get_primary_netdev_rcu
    
    commit a8445cfec101c42e9d64cdb2dac13973b22c205c upstream.
    
    Change mana_get_primary_netdev_rcu() to mana_get_primary_netdev(), and
    return the ndev with refcount held. The caller is responsible for dropping
    the refcount.
    
    Also drop the check for IFF_SLAVE as it is not necessary if the upper
    device is present.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Link: https://patch.msgid.link/1741821332-9392-1-git-send-email-longli@linuxonhyperv.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Fixes: 1df03a4b4414 ("RDMA/mana_ib: Set correct device into ib")
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: mvpp2: cls: Fix memory leak in mvpp2_ethtool_cls_rule_ins() [+ + +]
Author: Zilin Guan <zilin@seu.edu.cn>
Date:   Fri Jan 23 06:57:16 2026 +0000

    net: mvpp2: cls: Fix memory leak in mvpp2_ethtool_cls_rule_ins()
    
    [ Upstream commit 09f979d1f312627b31d2ee1e46f9692e442610cd ]
    
    In mvpp2_ethtool_cls_rule_ins(), the ethtool_rule is allocated by
    ethtool_rx_flow_rule_create(). If the subsequent conversion to flow
    type fails, the function jumps to the clean_rule label.
    
    However, the clean_rule label only frees efs, skipping the cleanup
    of ethtool_rule, which leads to a memory leak.
    
    Fix this by jumping to the clean_eth_rule label, which properly calls
    ethtool_rx_flow_rule_destroy() before freeing efs.
    
    Compile tested only. Issue found using a prototype static analysis tool
    and code review.
    
    Fixes: f4f1ba18195d ("net: mvpp2: cls: Report an error for unsupported flow types")
    Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
    Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Link: https://patch.msgid.link/20260123065716.2248324-1-zilin@seu.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: phy: micrel: fix clk warning when removing the driver [+ + +]
Author: Wei Fang <wei.fang@nxp.com>
Date:   Mon Jan 26 16:15:44 2026 +0800

    net: phy: micrel: fix clk warning when removing the driver
    
    [ Upstream commit 2aa1545ba8d4801fba5be83a404e28014b80196a ]
    
    Since the commit 25c6a5ab151f ("net: phy: micrel: Dynamically control
    external clock of KSZ PHY"), the clock of Micrel PHY has been enabled
    by phy_driver::resume() and disabled by phy_driver::suspend(). However,
    devm_clk_get_optional_enabled() is used in kszphy_probe(), so the clock
    will automatically be disabled when the device is unbound from the bus.
    Therefore, this could cause the clock to be disabled twice, resulting
    in clk driver warnings.
    
    For example, this issue can be reproduced on i.MX6ULL platform, and we
    can see the following logs when removing the FEC MAC drivers.
    
    $ echo 2188000.ethernet > /sys/bus/platform/drivers/fec/unbind
    $ echo 20b4000.ethernet > /sys/bus/platform/drivers/fec/unbind
    [  109.758207] ------------[ cut here ]------------
    [  109.758240] WARNING: drivers/clk/clk.c:1188 at clk_core_disable+0xb4/0xd0, CPU#0: sh/639
    [  109.771011] enet2_ref already disabled
    [  109.793359] Call trace:
    [  109.822006]  clk_core_disable from clk_disable+0x28/0x34
    [  109.827340]  clk_disable from clk_disable_unprepare+0xc/0x18
    [  109.833029]  clk_disable_unprepare from devm_clk_release+0x1c/0x28
    [  109.839241]  devm_clk_release from devres_release_all+0x98/0x100
    [  109.845278]  devres_release_all from device_unbind_cleanup+0xc/0x70
    [  109.851571]  device_unbind_cleanup from device_release_driver_internal+0x1a4/0x1f4
    [  109.859170]  device_release_driver_internal from bus_remove_device+0xbc/0xe4
    [  109.866243]  bus_remove_device from device_del+0x140/0x458
    [  109.871757]  device_del from phy_mdio_device_remove+0xc/0x24
    [  109.877452]  phy_mdio_device_remove from mdiobus_unregister+0x40/0xac
    [  109.883918]  mdiobus_unregister from fec_enet_mii_remove+0x40/0x78
    [  109.890125]  fec_enet_mii_remove from fec_drv_remove+0x4c/0x158
    [  109.896076]  fec_drv_remove from device_release_driver_internal+0x17c/0x1f4
    [  109.962748] WARNING: drivers/clk/clk.c:1047 at clk_core_unprepare+0xfc/0x13c, CPU#0: sh/639
    [  109.975805] enet2_ref already unprepared
    [  110.002866] Call trace:
    [  110.031758]  clk_core_unprepare from clk_unprepare+0x24/0x2c
    [  110.037440]  clk_unprepare from devm_clk_release+0x1c/0x28
    [  110.042957]  devm_clk_release from devres_release_all+0x98/0x100
    [  110.048989]  devres_release_all from device_unbind_cleanup+0xc/0x70
    [  110.055280]  device_unbind_cleanup from device_release_driver_internal+0x1a4/0x1f4
    [  110.062877]  device_release_driver_internal from bus_remove_device+0xbc/0xe4
    [  110.069950]  bus_remove_device from device_del+0x140/0x458
    [  110.075469]  device_del from phy_mdio_device_remove+0xc/0x24
    [  110.081165]  phy_mdio_device_remove from mdiobus_unregister+0x40/0xac
    [  110.087632]  mdiobus_unregister from fec_enet_mii_remove+0x40/0x78
    [  110.093836]  fec_enet_mii_remove from fec_drv_remove+0x4c/0x158
    [  110.099782]  fec_drv_remove from device_release_driver_internal+0x17c/0x1f4
    
    After analyzing the process of removing the FEC driver, as shown below,
    it can be seen that the clock was disabled twice by the PHY driver.
    
    fec_drv_remove()
      --> fec_enet_close()
        --> phy_stop()
          --> phy_suspend()
            --> kszphy_suspend() #1 The clock is disabled
      --> fec_enet_mii_remove()
        --> mdiobus_unregister()
          --> phy_mdio_device_remove()
            --> device_del()
              --> devm_clk_release() #2 The clock is disabled again
    
    Therefore, devm_clk_get_optional() is used to fix the above issue. And
    to avoid the issue mentioned by the commit 985329462723 ("net: phy:
    micrel: use devm_clk_get_optional_enabled for the rmii-ref clock"), the
    clock is enabled by clk_prepare_enable() to get the correct clock rate.
    
    Fixes: 25c6a5ab151f ("net: phy: micrel: Dynamically control external clock of KSZ PHY")
    Signed-off-by: Wei Fang <wei.fang@nxp.com>
    Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Link: https://patch.msgid.link/20260126081544.983517-1-wei.fang@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: wwan: t7xx: fix potential skb->frags overflow in RX path [+ + +]
Author: Kery Qi <qikeyu2017@gmail.com>
Date:   Fri Jan 23 01:04:01 2026 +0800

    net: wwan: t7xx: fix potential skb->frags overflow in RX path
    
    [ Upstream commit f0813bcd2d9d97fdbdf2efb9532ab03ae92e99e6 ]
    
    When receiving data in the DPMAIF RX path,
    the t7xx_dpmaif_set_frag_to_skb() function adds
    page fragments to an skb without checking if the number of
    fragments has exceeded MAX_SKB_FRAGS. This could lead to a buffer overflow
    in skb_shinfo(skb)->frags[] array, corrupting adjacent memory and
    potentially causing kernel crashes or other undefined behavior.
    
    This issue was identified through static code analysis by comparing with a
    similar vulnerability fixed in the mt76 driver commit b102f0c522cf ("mt76:
    fix array overflow on receiving too many fragments for a packet").
    
    The vulnerability could be triggered if the modem firmware sends packets
    with excessive fragments. While under normal protocol conditions (MTU 3080
    bytes, BAT buffer 3584 bytes),
    a single packet should not require additional
    fragments, the kernel should not blindly trust firmware behavior.
    Malicious, buggy, or compromised firmware could potentially craft packets
    with more fragments than the kernel expects.
    
    Fix this by adding a bounds check before calling skb_add_rx_frag() to
    ensure nr_frags does not exceed MAX_SKB_FRAGS.
    
    The check must be performed before unmapping to avoid a page leak
    and double DMA unmap during device teardown.
    
    Fixes: d642b012df70a ("net: wwan: t7xx: Add data path interface")
    Signed-off-by: Kery Qi <qikeyu2017@gmail.com>
    Link: https://patch.msgid.link/20260122170401.1986-2-qikeyu2017@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nfc: llcp: Fix memleak in nfc_llcp_send_ui_frame(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Sun Jan 25 00:59:28 2026 +0000

    nfc: llcp: Fix memleak in nfc_llcp_send_ui_frame().
    
    [ Upstream commit 165c34fb6068ff153e3fc99a932a80a9d5755709 ]
    
    syzbot reported various memory leaks related to NFC, struct
    nfc_llcp_sock, sk_buff, nfc_dev, etc. [0]
    
    The leading log hinted that nfc_llcp_send_ui_frame() failed
    to allocate skb due to sock_error(sk) being -ENXIO.
    
    ENXIO is set by nfc_llcp_socket_release() when struct
    nfc_llcp_local is destroyed by local_cleanup().
    
    The problem is that there is no synchronisation between
    nfc_llcp_send_ui_frame() and local_cleanup(), and skb
    could be put into local->tx_queue after it was purged in
    local_cleanup():
    
      CPU1                          CPU2
      ----                          ----
      nfc_llcp_send_ui_frame()      local_cleanup()
      |- do {                       '
         |- pdu = nfc_alloc_send_skb(..., &err)
         |                          .
         |                          |- nfc_llcp_socket_release(local, false, ENXIO);
         |                          |- skb_queue_purge(&local->tx_queue);      |
         |                          '                                          |
         |- skb_queue_tail(&local->tx_queue, pdu);                             |
        ...                                                                    |
         |- pdu = nfc_alloc_send_skb(..., &err)                                |
                                           ^._________________________________.'
    
    local_cleanup() is called for struct nfc_llcp_local only
    after nfc_llcp_remove_local() unlinks it from llcp_devices.
    
    If we hold local->tx_queue.lock then, we can synchronise
    the thread and nfc_llcp_send_ui_frame().
    
    Let's do that and check list_empty(&local->list) before
    queuing skb to local->tx_queue in nfc_llcp_send_ui_frame().
    
    [0]:
    [   56.074943][ T6096] llcp: nfc_llcp_send_ui_frame: Could not allocate PDU (error=-6)
    [   64.318868][ T5813] kmemleak: 6 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
    BUG: memory leak
    unreferenced object 0xffff8881272f6800 (size 1024):
      comm "syz.0.17", pid 6096, jiffies 4294942766
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        27 00 03 40 00 00 00 00 00 00 00 00 00 00 00 00  '..@............
      backtrace (crc da58d84d):
        kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline]
        slab_post_alloc_hook mm/slub.c:4979 [inline]
        slab_alloc_node mm/slub.c:5284 [inline]
        __do_kmalloc_node mm/slub.c:5645 [inline]
        __kmalloc_noprof+0x3e3/0x6b0 mm/slub.c:5658
        kmalloc_noprof include/linux/slab.h:961 [inline]
        sk_prot_alloc+0x11a/0x1b0 net/core/sock.c:2239
        sk_alloc+0x36/0x360 net/core/sock.c:2295
        nfc_llcp_sock_alloc+0x37/0x130 net/nfc/llcp_sock.c:979
        llcp_sock_create+0x71/0xd0 net/nfc/llcp_sock.c:1044
        nfc_sock_create+0xc9/0xf0 net/nfc/af_nfc.c:31
        __sock_create+0x1a9/0x340 net/socket.c:1605
        sock_create net/socket.c:1663 [inline]
        __sys_socket_create net/socket.c:1700 [inline]
        __sys_socket+0xb9/0x1a0 net/socket.c:1747
        __do_sys_socket net/socket.c:1761 [inline]
        __se_sys_socket net/socket.c:1759 [inline]
        __x64_sys_socket+0x1b/0x30 net/socket.c:1759
        do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
        do_syscall_64+0xa4/0xfa0 arch/x86/entry/syscall_64.c:94
        entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    BUG: memory leak
    unreferenced object 0xffff88810fbd9800 (size 240):
      comm "syz.0.17", pid 6096, jiffies 4294942850
      hex dump (first 32 bytes):
        68 f0 ff 08 81 88 ff ff 68 f0 ff 08 81 88 ff ff  h.......h.......
        00 00 00 00 00 00 00 00 00 68 2f 27 81 88 ff ff  .........h/'....
      backtrace (crc 6cc652b1):
        kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline]
        slab_post_alloc_hook mm/slub.c:4979 [inline]
        slab_alloc_node mm/slub.c:5284 [inline]
        kmem_cache_alloc_node_noprof+0x36f/0x5e0 mm/slub.c:5336
        __alloc_skb+0x203/0x240 net/core/skbuff.c:660
        alloc_skb include/linux/skbuff.h:1383 [inline]
        alloc_skb_with_frags+0x69/0x3f0 net/core/skbuff.c:6671
        sock_alloc_send_pskb+0x379/0x3e0 net/core/sock.c:2965
        sock_alloc_send_skb include/net/sock.h:1859 [inline]
        nfc_alloc_send_skb+0x45/0x80 net/nfc/core.c:724
        nfc_llcp_send_ui_frame+0x162/0x360 net/nfc/llcp_commands.c:766
        llcp_sock_sendmsg+0x14c/0x1d0 net/nfc/llcp_sock.c:814
        sock_sendmsg_nosec net/socket.c:727 [inline]
        __sock_sendmsg net/socket.c:742 [inline]
        __sys_sendto+0x2d8/0x2f0 net/socket.c:2244
        __do_sys_sendto net/socket.c:2251 [inline]
        __se_sys_sendto net/socket.c:2247 [inline]
        __x64_sys_sendto+0x28/0x30 net/socket.c:2247
        do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
        do_syscall_64+0xa4/0xfa0 arch/x86/entry/syscall_64.c:94
        entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 94f418a20664 ("NFC: UI frame sending routine implementation")
    Reported-by: syzbot+f2d245f1d76bbfa50e4c@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/697569c7.a00a0220.33ccc7.0014.GAE@google.com/T/#u
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20260125010214.1572439-1-kuniyu@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

nfc: nci: Fix race between rfkill and nci_unregister_device(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Tue Jan 27 04:03:59 2026 +0000

    nfc: nci: Fix race between rfkill and nci_unregister_device().
    
    [ Upstream commit d2492688bb9fed6ab6e313682c387ae71a66ebae ]
    
    syzbot reported the splat below [0] without a repro.
    
    It indicates that struct nci_dev.cmd_wq had been destroyed before
    nci_close_device() was called via rfkill.
    
    nci_dev.cmd_wq is only destroyed in nci_unregister_device(), which
    (I think) was called from virtual_ncidev_close() when syzbot close()d
    an fd of virtual_ncidev.
    
    The problem is that nci_unregister_device() destroys nci_dev.cmd_wq
    first and then calls nfc_unregister_device(), which removes the
    device from rfkill by rfkill_unregister().
    
    So, the device is still visible via rfkill even after nci_dev.cmd_wq
    is destroyed.
    
    Let's unregister the device from rfkill first in nci_unregister_device().
    
    Note that we cannot call nfc_unregister_device() before
    nci_close_device() because
    
      1) nfc_unregister_device() calls device_del() which frees
         all memory allocated by devm_kzalloc() and linked to
         ndev->conn_info_list
    
      2) nci_rx_work() could try to queue nci_conn_info to
         ndev->conn_info_list which could be leaked
    
    Thus, nfc_unregister_device() is split into two functions so we
    can remove rfkill interfaces only before nci_close_device().
    
    [0]:
    DEBUG_LOCKS_WARN_ON(1)
    WARNING: kernel/locking/lockdep.c:238 at hlock_class kernel/locking/lockdep.c:238 [inline], CPU#0: syz.0.8675/6349
    WARNING: kernel/locking/lockdep.c:238 at check_wait_context kernel/locking/lockdep.c:4854 [inline], CPU#0: syz.0.8675/6349
    WARNING: kernel/locking/lockdep.c:238 at __lock_acquire+0x39d/0x2cf0 kernel/locking/lockdep.c:5187, CPU#0: syz.0.8675/6349
    Modules linked in:
    CPU: 0 UID: 0 PID: 6349 Comm: syz.0.8675 Not tainted syzkaller #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/13/2026
    RIP: 0010:hlock_class kernel/locking/lockdep.c:238 [inline]
    RIP: 0010:check_wait_context kernel/locking/lockdep.c:4854 [inline]
    RIP: 0010:__lock_acquire+0x3a4/0x2cf0 kernel/locking/lockdep.c:5187
    Code: 18 00 4c 8b 74 24 08 75 27 90 e8 17 f2 fc 02 85 c0 74 1c 83 3d 50 e0 4e 0e 00 75 13 48 8d 3d 43 f7 51 0e 48 c7 c6 8b 3a de 8d <67> 48 0f b9 3a 90 31 c0 0f b6 98 c4 00 00 00 41 8b 45 20 25 ff 1f
    RSP: 0018:ffffc9000c767680 EFLAGS: 00010046
    RAX: 0000000000000001 RBX: 0000000000040000 RCX: 0000000000080000
    RDX: ffffc90013080000 RSI: ffffffff8dde3a8b RDI: ffffffff8ff24ca0
    RBP: 0000000000000003 R08: ffffffff8fef35a3 R09: 1ffffffff1fde6b4
    R10: dffffc0000000000 R11: fffffbfff1fde6b5 R12: 00000000000012a2
    R13: ffff888030338ba8 R14: ffff888030338000 R15: ffff888030338b30
    FS:  00007fa5995f66c0(0000) GS:ffff8881256f8000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7e72f842d0 CR3: 00000000485a0000 CR4: 00000000003526f0
    Call Trace:
     <TASK>
     lock_acquire+0x106/0x330 kernel/locking/lockdep.c:5868
     touch_wq_lockdep_map+0xcb/0x180 kernel/workqueue.c:3940
     __flush_workqueue+0x14b/0x14f0 kernel/workqueue.c:3982
     nci_close_device+0x302/0x630 net/nfc/nci/core.c:567
     nci_dev_down+0x3b/0x50 net/nfc/nci/core.c:639
     nfc_dev_down+0x152/0x290 net/nfc/core.c:161
     nfc_rfkill_set_block+0x2d/0x100 net/nfc/core.c:179
     rfkill_set_block+0x1d2/0x440 net/rfkill/core.c:346
     rfkill_fop_write+0x461/0x5a0 net/rfkill/core.c:1301
     vfs_write+0x29a/0xb90 fs/read_write.c:684
     ksys_write+0x150/0x270 fs/read_write.c:738
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xe2/0xf80 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fa59b39acb9
    Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007fa5995f6028 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 00007fa59b615fa0 RCX: 00007fa59b39acb9
    RDX: 0000000000000008 RSI: 0000200000000080 RDI: 0000000000000007
    RBP: 00007fa59b408bf7 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007fa59b616038 R14: 00007fa59b615fa0 R15: 00007ffc82218788
     </TASK>
    
    Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation")
    Reported-by: syzbot+f9c5fd1a0874f9069dce@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/695e7f56.050a0220.1c677c.036c.GAE@google.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20260127040411.494931-1-kuniyu@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvmet: fix race in nvmet_bio_done() leading to NULL pointer dereference [+ + +]
Author: Ming Lei <ming.lei@redhat.com>
Date:   Wed Jan 21 17:38:54 2026 +0800

    nvmet: fix race in nvmet_bio_done() leading to NULL pointer dereference
    
    commit 0fcee2cfc4b2e16e62ff8e0cc2cd8dd24efad65e upstream.
    
    There is a race condition in nvmet_bio_done() that can cause a NULL
    pointer dereference in blk_cgroup_bio_start():
    
    1. nvmet_bio_done() is called when a bio completes
    2. nvmet_req_complete() is called, which invokes req->ops->queue_response(req)
    3. The queue_response callback can re-queue and re-submit the same request
    4. The re-submission reuses the same inline_bio from nvmet_req
    5. Meanwhile, nvmet_req_bio_put() (called after nvmet_req_complete)
       invokes bio_uninit() for inline_bio, which sets bio->bi_blkg to NULL
    6. The re-submitted bio enters submit_bio_noacct_nocheck()
    7. blk_cgroup_bio_start() dereferences bio->bi_blkg, causing a crash:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000028
      #PF: supervisor read access in kernel mode
      RIP: 0010:blk_cgroup_bio_start+0x10/0xd0
      Call Trace:
       submit_bio_noacct_nocheck+0x44/0x250
       nvmet_bdev_execute_rw+0x254/0x370 [nvmet]
       process_one_work+0x193/0x3c0
       worker_thread+0x281/0x3a0
    
    Fix this by reordering nvmet_bio_done() to call nvmet_req_bio_put()
    BEFORE nvmet_req_complete(). This ensures the bio is cleaned up before
    the request can be re-submitted, preventing the race condition.
    
    Fixes: 190f4c2c863a ("nvmet: fix memory leak of bio integrity")
    Cc: Dmitry Bogdanov <d.bogdanov@yadro.com>
    Cc: stable@vger.kernel.org
    Cc: Guangwu Zhang <guazhang@redhat.com>
    Link: http://www.mail-archive.com/debian-kernel@lists.debian.org/msg146238.html
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
octeon_ep: Fix memory leak in octep_device_setup() [+ + +]
Author: Zilin Guan <zilin@seu.edu.cn>
Date:   Wed Jan 21 13:05:51 2026 +0000

    octeon_ep: Fix memory leak in octep_device_setup()
    
    [ Upstream commit 8016dc5ee19a77678c264f8ba368b1e873fa705b ]
    
    In octep_device_setup(), if octep_ctrl_net_init() fails, the function
    returns directly without unmapping the mapped resources and freeing the
    allocated configuration memory.
    
    Fix this by jumping to the unsupported_dev label, which performs the
    necessary cleanup. This aligns with the error handling logic of other
    paths in this function.
    
    Compile tested only. Issue found using a prototype static analysis tool
    and code review.
    
    Fixes: 577f0d1b1c5f ("octeon_ep: add separate mailbox command and response queues")
    Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Link: https://patch.msgid.link/20260121130551.3717090-1-zilin@seu.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
perf: sched: Fix perf crash with new is_user_task() helper [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Tue Feb 3 12:51:12 2026 -0500

    perf: sched: Fix perf crash with new is_user_task() helper
    
    [ Upstream commit 76ed27608f7dd235b727ebbb12163438c2fbb617 ]
    
    In order to do a user space stacktrace the current task needs to be a user
    task that has executed in user space. It use to be possible to test if a
    task is a user task or not by simply checking the task_struct mm field. If
    it was non NULL, it was a user task and if not it was a kernel task.
    
    But things have changed over time, and some kernel tasks now have their
    own mm field.
    
    An idea was made to instead test PF_KTHREAD and two functions were used to
    wrap this check in case it became more complex to test if a task was a
    user task or not[1]. But this was rejected and the C code simply checked
    the PF_KTHREAD directly.
    
    It was later found that not all kernel threads set PF_KTHREAD. The io-uring
    helpers instead set PF_USER_WORKER and this needed to be added as well.
    
    But checking the flags is still not enough. There's a very small window
    when a task exits that it frees its mm field and it is set back to NULL.
    If perf were to trigger at this moment, the flags test would say its a
    user space task but when perf would read the mm field it would crash with
    at NULL pointer dereference.
    
    Now there are flags that can be used to test if a task is exiting, but
    they are set in areas that perf may still want to profile the user space
    task (to see where it exited). The only real test is to check both the
    flags and the mm field.
    
    Instead of making this modification in every location, create a new
    is_user_task() helper function that does all the tests needed to know if
    it is safe to read the user space memory or not.
    
    [1] https://lore.kernel.org/all/20250425204120.639530125@goodmis.org/
    
    Fixes: 90942f9fac05 ("perf: Use current->flags & PF_KTHREAD|PF_USER_WORKER instead of current->mm == NULL")
    Closes: https://lore.kernel.org/all/0d877e6f-41a7-4724-875d-0b0a27b8a545@roeck-us.net/
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20260129102821.46484722@gandalf.local.home
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

perf: Simplify get_perf_callchain() user logic [+ + +]
Author: Josh Poimboeuf <jpoimboe@kernel.org>
Date:   Tue Feb 3 12:51:11 2026 -0500

    perf: Simplify get_perf_callchain() user logic
    
    [ Upstream commit d77e3319e31098a6cb97b7ce4e71ba676e327fd7 ]
    
    Simplify the get_perf_callchain() user logic a bit.  task_pt_regs()
    should never be NULL.
    
    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20250820180428.760066227@kernel.org
    Stable-dep-of: 76ed27608f7d ("perf: sched: Fix perf crash with new is_user_task() helper")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
pinctrl: lpass-lpi: implement .get_direction() for the GPIO driver [+ + +]
Author: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Date:   Tue Feb 3 16:18:27 2026 -0500

    pinctrl: lpass-lpi: implement .get_direction() for the GPIO driver
    
    [ Upstream commit 4f0d22ec60cee420125f4055af76caa0f373a3fe ]
    
    GPIO controller driver should typically implement the .get_direction()
    callback as GPIOLIB internals may try to use it to determine the state
    of a pin. Add it for the LPASS LPI driver.
    
    Reported-by: Abel Vesa <abelvesa@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 6e261d1090d6 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver")
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # X1E CRD
    Tested-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
    Signed-off-by: Linus Walleij <linusw@kernel.org>
    [ PIN_CONFIG_LEVEL => PIN_CONFIG_OUTPUT ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pinctrl: meson: mark the GPIO controller as sleeping [+ + +]
Author: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Date:   Mon Jan 5 16:05:08 2026 +0100

    pinctrl: meson: mark the GPIO controller as sleeping
    
    commit 28f24068387169722b508bba6b5257cb68b86e74 upstream.
    
    The GPIO controller is configured as non-sleeping but it uses generic
    pinctrl helpers which use a mutex for synchronization.
    
    This can cause the following lockdep splat with shared GPIOs enabled on
    boards which have multiple devices using the same GPIO:
    
    BUG: sleeping function called from invalid context at
    kernel/locking/mutex.c:591
    in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 142, name:
    kworker/u25:3
    preempt_count: 1, expected: 0
    RCU nest depth: 0, expected: 0
    INFO: lockdep is turned off.
    irq event stamp: 46379
    hardirqs last  enabled at (46379): [<ffff8000813acb24>]
    _raw_spin_unlock_irqrestore+0x74/0x78
    hardirqs last disabled at (46378): [<ffff8000813abf38>]
    _raw_spin_lock_irqsave+0x84/0x88
    softirqs last  enabled at (46330): [<ffff8000800c71b4>]
    handle_softirqs+0x4c4/0x4dc
    softirqs last disabled at (46295): [<ffff800080010674>]
    __do_softirq+0x14/0x20
    CPU: 1 UID: 0 PID: 142 Comm: kworker/u25:3 Tainted: G C
    6.19.0-rc4-next-20260105+ #11963 PREEMPT
    Tainted: [C]=CRAP
    Hardware name: Khadas VIM3 (DT)
    Workqueue: events_unbound deferred_probe_work_func
    Call trace:
      show_stack+0x18/0x24 (C)
      dump_stack_lvl+0x90/0xd0
      dump_stack+0x18/0x24
      __might_resched+0x144/0x248
      __might_sleep+0x48/0x98
      __mutex_lock+0x5c/0x894
      mutex_lock_nested+0x24/0x30
      pinctrl_get_device_gpio_range+0x44/0x128
      pinctrl_gpio_set_config+0x40/0xdc
      gpiochip_generic_config+0x28/0x3c
      gpio_do_set_config+0xa8/0x194
      gpiod_set_config+0x34/0xfc
      gpio_shared_proxy_set_config+0x6c/0xfc [gpio_shared_proxy]
      gpio_do_set_config+0xa8/0x194
      gpiod_set_transitory+0x4c/0xf0
      gpiod_configure_flags+0xa4/0x480
      gpiod_find_and_request+0x1a0/0x574
      gpiod_get_index+0x58/0x84
      devm_gpiod_get_index+0x20/0xb4
      devm_gpiod_get+0x18/0x24
      mmc_pwrseq_emmc_probe+0x40/0xb8
      platform_probe+0x5c/0xac
      really_probe+0xbc/0x298
      __driver_probe_device+0x78/0x12c
      driver_probe_device+0xdc/0x164
      __device_attach_driver+0xb8/0x138
      bus_for_each_drv+0x80/0xdc
      __device_attach+0xa8/0x1b0
    
    Fixes: 6ac730951104 ("pinctrl: add driver for Amlogic Meson SoCs")
    Cc: stable@vger.kernel.org
    Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Closes: https://lore.kernel.org/all/00107523-7737-4b92-a785-14ce4e93b8cb@samsung.com/
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Linus Walleij <linusw@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pinctrl: qcom: sm8350-lpass-lpi: Merge with SC7280 to fix I2S2 and SWR TX pins [+ + +]
Author: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Date:   Tue Feb 3 11:29:29 2026 -0500

    pinctrl: qcom: sm8350-lpass-lpi: Merge with SC7280 to fix I2S2 and SWR TX pins
    
    [ Upstream commit 1fbe3abb449c5ef2178e1c3e3e8b9a43a7a410ac ]
    
    Qualcomm SC7280 and SM8350 SoCs have slightly different LPASS audio
    blocks (v9.4.5 and v9.2), however the LPASS LPI pin controllers are
    exactly the same.  The driver for SM8350 has two issues, which can be
    fixed by simply moving over to SC7280 driver which has them correct:
    
    1. "i2s2_data_groups" listed twice GPIO12, but should have both GPIO12
       and GPIO13,
    
    2. "swr_tx_data_groups" contained GPIO5 for "swr_tx_data2" function, but
       that function is also available on GPIO14, thus listing it twice is
       not necessary.  OTOH, GPIO5 has also "swr_rx_data1", so selecting
       swr_rx_data function should not block  the TX one.
    
    Fixes: be9f6d56381d ("pinctrl: qcom: sm8350-lpass-lpi: add SM8350 LPASS TLMM")
    Cc: stable@vger.kernel.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
    Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
    Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
    Signed-off-by: Linus Walleij <linusw@kernel.org>
    [ .remove_new vs .remove ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
RDMA/mana_ib: Handle net event for pointing to the current netdev [+ + +]
Author: Long Li <longli@microsoft.com>
Date:   Tue Feb 3 12:45:24 2026 -0800

    RDMA/mana_ib: Handle net event for pointing to the current netdev
    
    commit bee35b7161aaaed9831e2f14876c374b9c566952 upstream.
    
    When running under Hyper-V, the master device to the RDMA device is always
    bonded to this RDMA device. This is not user-configurable.
    
    The master device can be unbind/bind from the kernel. During those events,
    the RDMA device should set to the current netdev to reflect the change of
    master device from those events.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Link: https://patch.msgid.link/1741821332-9392-2-git-send-email-longli@linuxonhyperv.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Fixes: 1df03a4b4414 ("RDMA/mana_ib: Set correct device into ib")
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "drm/nouveau/disp: Set drm_mode_config_funcs.atomic_(check|commit)" [+ + +]
Author: John Ogness <john.ogness@linutronix.de>
Date:   Fri Jan 30 12:38:08 2026 +0106

    Revert "drm/nouveau/disp: Set drm_mode_config_funcs.atomic_(check|commit)"
    
    commit 6c65db809796717f0a96cf22f80405dbc1a31a4b upstream.
    
    This reverts commit 604826acb3f53c6648a7ee99a3914ead680ab7fb.
    
    Apparently there is more to supporting atomic modesetting than
    providing atomic_(check|commit) callbacks. Before this revert:
    
    WARNING: [] drivers/gpu/drm/drm_plane.c:389 at .__drm_universal_plane_init+0x13c/0x794 [drm], CPU#1: modprobe/1790
    BUG: Kernel NULL pointer dereference on read at 0x00000000
    .drm_atomic_get_plane_state+0xd4/0x210 [drm] (unreliable)
    .drm_client_modeset_commit_atomic+0xf8/0x338 [drm]
    .drm_client_modeset_commit_locked+0x80/0x260 [drm]
    .drm_client_modeset_commit+0x40/0x7c [drm]
    .__drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0xfc/0x108 [drm_kms_helper]
    .drm_fb_helper_set_par+0x8c/0xb8 [drm_kms_helper]
    .fbcon_init+0x31c/0x618
    [...]
    .__drm_fb_helper_initial_config_and_unlock+0x474/0x7f4 [drm_kms_helper]
    .drm_fbdev_client_hotplug+0xb0/0x120 [drm_client_lib]
    .drm_client_register+0x88/0xe4 [drm]
    .drm_fbdev_client_setup+0x12c/0x19b4 [drm_client_lib]
    .drm_client_setup+0x15c/0x18c [drm_client_lib]
    .nouveau_drm_probe+0x19c/0x268 [nouveau]
    
    Fixes: 604826acb3f5 ("drm/nouveau/disp: Set drm_mode_config_funcs.atomic_(check|commit)")
    Reported-by: John Ogness <john.ogness@linutronix.de>
    Closes: https://lore.kernel.org/lkml/87ldhf1prw.fsf@jogness.linutronix.de
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Tested-by: Daniel Palmer <daniel@thingy.jp>
    Link: https://patch.msgid.link/20260130113230.2311221-1-john.ogness@linutronix.de
    Signed-off-by: Danilo Krummrich <dakr@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
riscv: compat: fix COMPAT_UTS_MACHINE definition [+ + +]
Author: Han Gao <gaohan@iscas.ac.cn>
Date:   Wed Jan 28 03:07:11 2026 +0800

    riscv: compat: fix COMPAT_UTS_MACHINE definition
    
    commit 0ea05c4f7527a98f5946f96c829733788934311d upstream.
    
    The COMPAT_UTS_MACHINE for riscv was incorrectly defined as "riscv".
    Change it to "riscv32" to reflect the correct 32-bit compat name.
    
    Fixes: 06d0e3723647 ("riscv: compat: Add basic compat data type implementation")
    Cc: stable@vger.kernel.org
    Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
    Reviewed-by: Guo Ren (Alibaba Damo Academy) <guoren@kernel.org>
    Link: https://patch.msgid.link/20260127190711.2264664-1-gaohan@iscas.ac.cn
    Signed-off-by: Paul Walmsley <pjw@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rocker: fix memory leak in rocker_world_port_post_fini() [+ + +]
Author: Kery Qi <qikeyu2017@gmail.com>
Date:   Sat Jan 24 05:10:31 2026 +0800

    rocker: fix memory leak in rocker_world_port_post_fini()
    
    [ Upstream commit 8d7ba71e46216b8657a82ca2ec118bc93812a4d0 ]
    
    In rocker_world_port_pre_init(), rocker_port->wpriv is allocated with
    kzalloc(wops->port_priv_size, GFP_KERNEL). However, in
    rocker_world_port_post_fini(), the memory is only freed when
    wops->port_post_fini callback is set:
    
        if (!wops->port_post_fini)
            return;
        wops->port_post_fini(rocker_port);
        kfree(rocker_port->wpriv);
    
    Since rocker_ofdpa_ops does not implement port_post_fini callback
    (it is NULL), the wpriv memory allocated for each port is never freed
    when ports are removed. This leads to a memory leak of
    sizeof(struct ofdpa_port) bytes per port on every device removal.
    
    Fix this by always calling kfree(rocker_port->wpriv) regardless of
    whether the port_post_fini callback exists.
    
    Fixes: e420114eef4a ("rocker: introduce worlds infrastructure")
    Signed-off-by: Kery Qi <qikeyu2017@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20260123211030.2109-2-qikeyu2017@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rust: kbuild: give `--config-path` to `rustfmt` in `.rsi` target [+ + +]
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Thu Jan 15 19:38:32 2026 +0100

    rust: kbuild: give `--config-path` to `rustfmt` in `.rsi` target
    
    commit af20ae33e7dd949f2e770198e74ac8f058cb299d upstream.
    
    `rustfmt` is configured via the `.rustfmt.toml` file in the source tree,
    and we apply `rustfmt` to the macro expanded sources generated by the
    `.rsi` target.
    
    However, under an `O=` pointing to an external folder (i.e. not just
    a subdir), `rustfmt` will not find the file when checking the parent
    folders. Since the edition is configured in this file, this can lead to
    errors when it encounters newer syntax, e.g.
    
        error: expected one of `!`, `.`, `::`, `;`, `?`, `where`, `{`, or an operator, found `"rust_minimal"`
          --> samples/rust/rust_minimal.rsi:29:49
           |
        28 | impl ::kernel::ModuleMetadata for RustMinimal {
           |                                               - while parsing this item list starting here
        29 |     const NAME: &'static ::kernel::str::CStr = c"rust_minimal";
           |                                                 ^^^^^^^^^^^^^^ expected one of 8 possible tokens
        30 | }
           | - the item list ends here
           |
           = note: you may be trying to write a c-string literal
           = note: c-string literals require Rust 2021 or later
           = help: pass `--edition 2024` to `rustc`
           = note: for more on editions, read https://doc.rust-lang.org/edition-guide
    
    A workaround is to use `RUSTFMT=n`, which is documented in the `Makefile`
    help for cases where macro expanded source may happen to break `rustfmt`
    for other reasons, but this is not one of those cases.
    
    One solution would be to pass `--edition`, but we want `rustfmt` to
    use the entire configuration, even if currently we essentially use the
    default configuration.
    
    Thus explicitly give the path to the config file to `rustfmt` instead.
    
    Reported-by: Alice Ryhl <aliceryhl@google.com>
    Fixes: 2f7ab1267dc9 ("Kbuild: add Rust support")
    Cc: stable@vger.kernel.org
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Gary Guo <gary@garyguo.net>
    Link: https://patch.msgid.link/20260115183832.46595-1-ojeda@kernel.org
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rust: kbuild: support `-Cjump-tables=n` for Rust 1.93.0 [+ + +]
Author: Miguel Ojeda <ojeda@kernel.org>
Date:   Sat Nov 1 10:40:11 2025 +0100

    rust: kbuild: support `-Cjump-tables=n` for Rust 1.93.0
    
    commit 789521b4717fd6bd85164ba5c131f621a79c9736 upstream.
    
    Rust 1.93.0 (expected 2026-01-22) is stabilizing `-Zno-jump-tables`
    [1][2] as `-Cjump-tables=n` [3].
    
    Without this change, one would eventually see:
    
          RUSTC L rust/core.o
        error: unknown unstable option: `no-jump-tables`
    
    Thus support the upcoming version.
    
    Link: https://github.com/rust-lang/rust/issues/116592 [1]
    Link: https://github.com/rust-lang/rust/pull/105812 [2]
    Link: https://github.com/rust-lang/rust/pull/145974 [3]
    Reviewed-by: Alice Ryhl <aliceryhl@google.com>
    Reviewed-by: Trevor Gross <tmgross@umich.edu>
    Acked-by: Nicolas Schier <nsc@kernel.org>
    Link: https://patch.msgid.link/20251101094011.1024534-1-ojeda@kernel.org
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Alyssa Ross <hi@alyssa.is>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

rust: rbtree: fix documentation typo in CursorMut peek_next method [+ + +]
Author: Hang Shu <m18080292938@163.com>
Date:   Fri Nov 7 09:39:17 2025 +0000

    rust: rbtree: fix documentation typo in CursorMut peek_next method
    
    commit 45f6aed8a835ee2bdd0a5d5ee626a91fe285014f upstream.
    
    The peek_next method's doc comment incorrectly stated it accesses the
    "previous" node when it actually accesses the next node.
    
    Fix the documentation to accurately reflect the method's behavior.
    
    Fixes: 98c14e40e07a ("rust: rbtree: add cursor")
    Reviewed-by: Alice Ryhl <aliceryhl@google.com>
    Signed-off-by: Hang Shu <m18080292938@163.com>
    Reported-by: Miguel Ojeda <ojeda@kernel.org>
    Closes: https://github.com/Rust-for-Linux/linux/issues/1205
    Cc: stable@vger.kernel.org
    Reviewed-by: Gary Guo <gary@garyguo.net>
    Link: https://patch.msgid.link/20251107093921.3379954-1-m18080292938@163.com
    [ Reworded slightly. - Miguel ]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
rxrpc: Fix data-race warning and potential load/store tearing [+ + +]
Author: David Howells <dhowells@redhat.com>
Date:   Wed Jan 28 19:10:48 2026 -0500

    rxrpc: Fix data-race warning and potential load/store tearing
    
    [ Upstream commit 5d5fe8bcd331f1e34e0943ec7c18432edfcf0e8b ]
    
    Fix the following:
    
            BUG: KCSAN: data-race in rxrpc_peer_keepalive_worker / rxrpc_send_data_packet
    
    which is reporting an issue with the reads and writes to ->last_tx_at in:
    
            conn->peer->last_tx_at = ktime_get_seconds();
    
    and:
    
            keepalive_at = peer->last_tx_at + RXRPC_KEEPALIVE_TIME;
    
    The lockless accesses to these to values aren't actually a problem as the
    read only needs an approximate time of last transmission for the purposes
    of deciding whether or not the transmission of a keepalive packet is
    warranted yet.
    
    Also, as ->last_tx_at is a 64-bit value, tearing can occur on a 32-bit
    arch.
    
    Fix both of these by switching to an unsigned int for ->last_tx_at and only
    storing the LSW of the time64_t.  It can then be reconstructed at need
    provided no more than 68 years has elapsed since the last transmission.
    
    Fixes: ace45bec6d77 ("rxrpc: Fix firewall route keepalive")
    Reported-by: syzbot+6182afad5045e6703b3d@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/r/695e7cfb.050a0220.1c677c.036b.GAE@google.com/
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: Simon Horman <horms@kernel.org>
    cc: linux-afs@lists.infradead.org
    cc: stable@kernel.org
    Link: https://patch.msgid.link/1107124.1768903985@warthog.procyon.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [ different struct fields (peer->mtu, peer->srtt_us, peer->rto_us) and different output.c code structure ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sched/deadline: Document dl_server [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Nov 3 11:25:52 2025 +0100

    sched/deadline: Document dl_server
    
    [ Upstream commit 2614069c5912e9d6f1f57c262face1b368fb8c93 ]
    
    Place the notes that resulted from going through the dl_server code in a
    comment.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Stable-dep-of: 115135422562 ("sched/deadline: Fix 'stuck' dl_server")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sched/deadline: Fix 'stuck' dl_server [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Jan 30 13:41:00 2026 +0100

    sched/deadline: Fix 'stuck' dl_server
    
    [ Upstream commit 115135422562e2f791e98a6f55ec57b2da3b3a95 ]
    
    Andrea reported the dl_server getting stuck for him. He tracked it
    down to a state where dl_server_start() saw dl_defer_running==1, but
    the dl_server's job is no longer valid at the time of
    dl_server_start().
    
    In the state diagram this corresponds to [4] D->A (or dl_server_stop()
    due to no more runnable tasks) followed by [1], which in case of a
    lapsed deadline must then be A->B.
    
    Now our A has dl_defer_running==1, while B demands
    dl_defer_running==0, therefore it must get cleared when the CBS wakeup
    rules demand a replenish.
    
    Fixes: a110a81c52a9 ("sched/deadline: Deferrable dl server")
    Reported-by: Andrea Righi arighi@nvidia.com
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Juri Lelli <juri.lelli@redhat.com>
    Tested-by: Andrea Righi arighi@nvidia.com
    Link: https://lkml.kernel.org/r/20260123161645.2181752-1-arighi@nvidia.com
    Link: https://patch.msgid.link/20260130124100.GC1079264@noisy.programming.kicks-ass.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scripts: generate_rust_analyzer: Add compiler_builtins -> core dep [+ + +]
Author: Tamir Duberstein <tamird@kernel.org>
Date:   Wed Jul 23 11:39:40 2025 -0400

    scripts: generate_rust_analyzer: Add compiler_builtins -> core dep
    
    commit 5157c328edb35bac05ce77da473c3209d20e0bbb upstream.
    
    Add a dependency edge from `compiler_builtins` to `core` to
    `scripts/generate_rust_analyzer.py` to match `rust/Makefile`. This has
    been incorrect since commit 8c4555ccc55c ("scripts: add
    `generate_rust_analyzer.py`")
    
    Signed-off-by: Tamir Duberstein <tamird@kernel.org>
    Reviewed-by: Jesung Yang <y.j3ms.n@gmail.com>
    Acked-by: Benno Lossin <lossin@kernel.org>
    Fixes: 8c4555ccc55c ("scripts: add `generate_rust_analyzer.py`")
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20250723-rust-analyzer-pin-init-v1-1-3c6956173c78@kernel.org
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scripts: generate_rust_analyzer: compile sysroot with correct edition [+ + +]
Author: Tamir Duberstein <tamird@kernel.org>
Date:   Fri Jan 16 15:46:04 2026 -0500

    scripts: generate_rust_analyzer: compile sysroot with correct edition
    
    commit ac3c50b9a24e9ebeb585679078d6c47922034bb6 upstream.
    
    Use `core_edition` for all sysroot crates rather than just core as all
    were updated to edition 2024 in Rust 1.87.
    
    Fixes: f4daa80d6be7 ("rust: compile libcore with edition 2024 for 1.87+")
    Signed-off-by: Tamir Duberstein <tamird@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20260116-rust-analyzer-sysroot-v2-1-094aedc33208@kernel.org
    [ Added `>`s to make the quote a single block. - Miguel ]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scripts: generate_rust_analyzer: remove sysroot assertion [+ + +]
Author: Onur Özkan <work@onurozkan.dev>
Date:   Wed Dec 24 16:53:43 2025 +0300

    scripts: generate_rust_analyzer: remove sysroot assertion
    
    commit 1b83ef9f7ad4635c913b80ef5e718f95f48e85af upstream.
    
    With nixpkgs's rustc, rust-src component is not bundled
    with the compiler by default and is instead provided from
    a separate store path, so this assumption does not hold.
    
    The assertion assumes these paths are in the same location
    which causes `make LLVM=1 rust-analyzer` to fail on NixOS.
    
    Link: https://rust-for-linux.zulipchat.com/#narrow/stream/x/topic/x/near/565284250
    Signed-off-by: Onur Özkan <work@onurozkan.dev>
    Reviewed-by: Gary Guo <gary@garyguo.net>
    Fixes: fe992163575b ("rust: Support latest version of `rust-analyzer`")
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20251224135343.32476-1-work@onurozkan.dev
    [ Reworded title. - Miguel ]
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: be2iscsi: Fix a memory leak in beiscsi_boot_get_sinfo() [+ + +]
Author: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
Date:   Sat Dec 13 16:36:43 2025 +0800

    scsi: be2iscsi: Fix a memory leak in beiscsi_boot_get_sinfo()
    
    commit 4747bafaa50115d9667ece446b1d2d4aba83dc7f upstream.
    
    If nonemb_cmd->va fails to be allocated, free the allocation previously
    made by alloc_mcc_wrb().
    
    Fixes: 50a4b824be9e ("scsi: be2iscsi: Fix to make boot discovery non-blocking")
    Cc: stable@vger.kernel.org
    Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
    Link: https://patch.msgid.link/20251213083643.301240-1-lihaoxiang@isrc.iscas.ac.cn
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: firewire: sbp-target: Fix overflow in sbp_make_tpg() [+ + +]
Author: Kery Qi <qikeyu2017@gmail.com>
Date:   Wed Jan 21 19:45:15 2026 +0800

    scsi: firewire: sbp-target: Fix overflow in sbp_make_tpg()
    
    [ Upstream commit b2d6b1d443009ed4da2d69f5423ab38e5780505a ]
    
    The code in sbp_make_tpg() limits "tpgt" to UINT_MAX but the data type of
    "tpg->tport_tpgt" is u16. This causes a type truncation issue.
    
    When a user creates a TPG via configfs mkdir, for example:
    
        mkdir /sys/kernel/config/target/sbp/<wwn>/tpgt_70000
    
    The value 70000 passes the "tpgt > UINT_MAX" check since 70000 is far less
    than 4294967295. However, when assigned to the u16 field tpg->tport_tpgt,
    the value is silently truncated to 4464 (70000 & 0xFFFF). This causes the
    value the user specified to differ from what is actually stored, leading to
    confusion and potential unexpected behavior.
    
    Fix this by changing the type of "tpgt" to u16 and using kstrtou16() which
    will properly reject values outside the u16 range.
    
    Fixes: a511ce339780 ("sbp-target: Initial merge of firewire/ieee-1394 target mode support")
    Signed-off-by: Kery Qi <qikeyu2017@gmail.com>
    Link: https://patch.msgid.link/20260121114515.1829-2-qikeyu2017@gmail.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: qla2xxx: edif: Fix dma_free_coherent() size [+ + +]
Author: Thomas Fourier <fourier.thomas@gmail.com>
Date:   Mon Jan 12 14:43:24 2026 +0100

    scsi: qla2xxx: edif: Fix dma_free_coherent() size
    
    commit 56bd3c0f749f45793d1eae1d0ddde4255c749bf6 upstream.
    
    Earlier in the function, the ha->flt buffer is allocated with size
    sizeof(struct qla_flt_header) + FLT_REGIONS_SIZE but freed in the error
    path with size SFP_DEV_SIZE.
    
    Fixes: 84318a9f01ce ("scsi: qla2xxx: edif: Add send, receive, and accept for auth_els")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
    Link: https://patch.msgid.link/20260112134326.55466-2-fourier.thomas@gmail.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests: mptcp: check no dup close events after error [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Tue Jan 27 20:27:24 2026 +0100

    selftests: mptcp: check no dup close events after error
    
    commit 8467458dfa61b37e259e3485a5d3e415d08193c1 upstream.
    
    This validates the previous commit: subflow closed events are re-sent
    with less info when the initial subflow is disconnected after an error
    and each time a subflow is closed after that.
    
    In this new test, the userspace PM is involved because that's how it was
    discovered, but it is not specific to it. The initial subflow is
    terminated with a RESET, and that will cause the subflow disconnect.
    Then, a new subflow is initiated, but also got rejected, which cause a
    second subflow closed event, but not a third one.
    
    While at it, in case of failure to get the expected amount of events,
    the events are printed.
    
    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: d82809b6c5f2 ("mptcp: avoid duplicated SUB_CLOSED events")
    Cc: stable@vger.kernel.org
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20260127-net-mptcp-dup-nl-events-v1-2-7f71e1bc4feb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests: mptcp: check subflow errors in close events [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Tue Jan 27 20:27:26 2026 +0100

    selftests: mptcp: check subflow errors in close events
    
    commit 2ef9e3a3845d0a20b62b01f5b731debd0364688d upstream.
    
    This validates the previous commit: subflow closed events should contain
    an error field when a subflow got closed with an error, e.g. reset or
    timeout.
    
    For this test, the chk_evt_nr helper has been extended to check
    attributes in the matched events.
    
    In this test, the 2 subflow closed events should have an error.
    
    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: 15cc10453398 ("mptcp: deliver ssk errors to msk")
    Cc: stable@vger.kernel.org
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20260127-net-mptcp-dup-nl-events-v1-4-7f71e1bc4feb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests: mptcp: join: fix local endp not being tracked [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Tue Jan 27 20:27:27 2026 +0100

    selftests: mptcp: join: fix local endp not being tracked
    
    commit c5d5ecf21fdd9ce91e6116feb3aa83cee73352cc upstream.
    
    When running this mptcp_join.sh selftest on older kernel versions not
    supporting local endpoints tracking, this test fails because 3 MP_JOIN
    ACKs have been received, while only 2 were expected.
    
    It is not clear why only 2 MP_JOIN ACKs were expected on old kernel
    versions, while 3 MP_JOIN SYN and SYN+ACK were expected. When testing on
    the v5.15.197 kernel, 3 MP_JOIN ACKs are seen, which is also what is
    expected in the selftests included in this kernel version, see commit
    f4480eaad489 ("selftests: mptcp: add missing join check").
    
    Switch the expected MP_JOIN ACKs to 3. While at it, move this
    chk_join_nr helper out of the special condition for older kernel
    versions as it is now the same as with more recent ones. Also, invert
    the condition to be more logical: what's expected on newer kernel
    versions having such helper first.
    
    Fixes: d4c81bbb8600 ("selftests: mptcp: join: support local endpoint being tracked or not")
    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/20260127-net-mptcp-dup-nl-events-v1-5-7f71e1bc4feb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: ath11k: add srng->lock for ath11k_hal_srng_* in monitor mode [+ + +]
Author: Kang Yang <quic_kangyang@quicinc.com>
Date:   Tue Feb 3 11:13:55 2026 +0800

    wifi: ath11k: add srng->lock for ath11k_hal_srng_* in monitor mode
    
    [ Upstream commit 63b7af49496d0e32f7a748b6af3361ec138b1bd3 ]
    
    ath11k_hal_srng_* should be used with srng->lock to protect srng data.
    
    For ath11k_dp_rx_mon_dest_process() and ath11k_dp_full_mon_process_rx(),
    they use ath11k_hal_srng_* for many times but never call srng->lock.
    
    So when running (full) monitor mode, warning will occur:
    RIP: 0010:ath11k_hal_srng_dst_peek+0x18/0x30 [ath11k]
    Call Trace:
     ? ath11k_hal_srng_dst_peek+0x18/0x30 [ath11k]
     ath11k_dp_rx_process_mon_status+0xc45/0x1190 [ath11k]
     ? idr_alloc_u32+0x97/0xd0
     ath11k_dp_rx_process_mon_rings+0x32a/0x550 [ath11k]
     ath11k_dp_service_srng+0x289/0x5a0 [ath11k]
     ath11k_pcic_ext_grp_napi_poll+0x30/0xd0 [ath11k]
     __napi_poll+0x30/0x1f0
     net_rx_action+0x198/0x320
     __do_softirq+0xdd/0x319
    
    So add srng->lock for them to avoid such warnings.
    
    Inorder to fetch the srng->lock, should change srng's definition from
    'void' to 'struct hal_srng'. And initialize them elsewhere to prevent
    one line of code from being too long. This is consistent with other ring
    process functions, such as ath11k_dp_process_rx().
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.30
    Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
    Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Link: https://patch.msgid.link/20241219110531.2096-3-quic_kangyang@quicinc.com
    Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
    Signed-off-by: Li hongliang <1468888505@139.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
writeback: fix 100% CPU usage when dirtytime_expire_interval is 0 [+ + +]
Author: Laveesh Bansal <laveeshb@laveeshbansal.com>
Date:   Tue Feb 3 13:04:25 2026 -0500

    writeback: fix 100% CPU usage when dirtytime_expire_interval is 0
    
    [ Upstream commit 543467d6fe97e27e22a26e367fda972dbefebbff ]
    
    When vm.dirtytime_expire_seconds is set to 0, wakeup_dirtytime_writeback()
    schedules delayed work with a delay of 0, causing immediate execution.
    The function then reschedules itself with 0 delay again, creating an
    infinite busy loop that causes 100% kworker CPU usage.
    
    Fix by:
    - Only scheduling delayed work in wakeup_dirtytime_writeback() when
      dirtytime_expire_interval is non-zero
    - Cancelling the delayed work in dirtytime_interval_handler() when
      the interval is set to 0
    - Adding a guard in start_dirtytime_writeback() for defensive coding
    
    Tested by booting kernel in QEMU with virtme-ng:
    - Before fix: kworker CPU spikes to ~73%
    - After fix: CPU remains at normal levels
    - Setting interval back to non-zero correctly resumes writeback
    
    Fixes: a2f4870697a5 ("fs: make sure the timestamps for lazytime inodes eventually get written")
    Cc: stable@vger.kernel.org
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220227
    Signed-off-by: Laveesh Bansal <laveeshb@laveeshbansal.com>
    Link: https://patch.msgid.link/20260106145059.543282-2-laveeshb@laveeshbansal.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    [ adapted system_percpu_wq to system_wq for the workqueue used in dirtytime_interval_handler() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>