Changelog in Linux kernel 5.15.194

 
af_unix: Don't leave consecutive consumed OOB skbs. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Wed Jun 18 21:13:55 2025 -0700

    af_unix: Don't leave consecutive consumed OOB skbs.
    
    commit 32ca245464e1479bfea8592b9db227fdc1641705 upstream.
    
    Jann Horn reported a use-after-free in unix_stream_read_generic().
    
    The following sequences reproduce the issue:
    
      $ python3
      from socket import *
      s1, s2 = socketpair(AF_UNIX, SOCK_STREAM)
      s1.send(b'x', MSG_OOB)
      s2.recv(1, MSG_OOB)     # leave a consumed OOB skb
      s1.send(b'y', MSG_OOB)
      s2.recv(1, MSG_OOB)     # leave a consumed OOB skb
      s1.send(b'z', MSG_OOB)
      s2.recv(1)              # recv 'z' illegally
      s2.recv(1, MSG_OOB)     # access 'z' skb (use-after-free)
    
    Even though a user reads OOB data, the skb holding the data stays on
    the recv queue to mark the OOB boundary and break the next recv().
    
    After the last send() in the scenario above, the sk2's recv queue has
    2 leading consumed OOB skbs and 1 real OOB skb.
    
    Then, the following happens during the next recv() without MSG_OOB
    
      1. unix_stream_read_generic() peeks the first consumed OOB skb
      2. manage_oob() returns the next consumed OOB skb
      3. unix_stream_read_generic() fetches the next not-yet-consumed OOB skb
      4. unix_stream_read_generic() reads and frees the OOB skb
    
    , and the last recv(MSG_OOB) triggers KASAN splat.
    
    The 3. above occurs because of the SO_PEEK_OFF code, which does not
    expect unix_skb_len(skb) to be 0, but this is true for such consumed
    OOB skbs.
    
      while (skip >= unix_skb_len(skb)) {
        skip -= unix_skb_len(skb);
        skb = skb_peek_next(skb, &sk->sk_receive_queue);
        ...
      }
    
    In addition to this use-after-free, there is another issue that
    ioctl(SIOCATMARK) does not function properly with consecutive consumed
    OOB skbs.
    
    So, nothing good comes out of such a situation.
    
    Instead of complicating manage_oob(), ioctl() handling, and the next
    ECONNRESET fix by introducing a loop for consecutive consumed OOB skbs,
    let's not leave such consecutive OOB unnecessarily.
    
    Now, while receiving an OOB skb in unix_stream_recv_urg(), if its
    previous skb is a consumed OOB skb, it is freed.
    
    [0]:
    BUG: KASAN: slab-use-after-free in unix_stream_read_actor (net/unix/af_unix.c:3027)
    Read of size 4 at addr ffff888106ef2904 by task python3/315
    
    CPU: 2 UID: 0 PID: 315 Comm: python3 Not tainted 6.16.0-rc1-00407-gec315832f6f9 #8 PREEMPT(voluntary)
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-4.fc42 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl (lib/dump_stack.c:122)
     print_report (mm/kasan/report.c:409 mm/kasan/report.c:521)
     kasan_report (mm/kasan/report.c:636)
     unix_stream_read_actor (net/unix/af_unix.c:3027)
     unix_stream_read_generic (net/unix/af_unix.c:2708 net/unix/af_unix.c:2847)
     unix_stream_recvmsg (net/unix/af_unix.c:3048)
     sock_recvmsg (net/socket.c:1063 (discriminator 20) net/socket.c:1085 (discriminator 20))
     __sys_recvfrom (net/socket.c:2278)
     __x64_sys_recvfrom (net/socket.c:2291 (discriminator 1) net/socket.c:2287 (discriminator 1) net/socket.c:2287 (discriminator 1))
     do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1))
     entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    RIP: 0033:0x7f8911fcea06
    Code: 5d e8 41 8b 93 08 03 00 00 59 5e 48 83 f8 fc 75 19 83 e2 39 83 fa 08 75 11 e8 26 ff ff ff 66 0f 1f 44 00 00 48 8b 45 10 0f 05 <48> 8b 5d f8 c9 c3 0f 1f 40 00 f3 0f 1e fa 55 48 89 e5 48 83 ec 08
    RSP: 002b:00007fffdb0dccb0 EFLAGS: 00000202 ORIG_RAX: 000000000000002d
    RAX: ffffffffffffffda RBX: 00007fffdb0dcdc8 RCX: 00007f8911fcea06
    RDX: 0000000000000001 RSI: 00007f8911a5e060 RDI: 0000000000000006
    RBP: 00007fffdb0dccd0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000202 R12: 00007f89119a7d20
    R13: ffffffffc4653600 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    
    Allocated by task 315:
     kasan_save_stack (mm/kasan/common.c:48)
     kasan_save_track (mm/kasan/common.c:60 (discriminator 1) mm/kasan/common.c:69 (discriminator 1))
     __kasan_slab_alloc (mm/kasan/common.c:348)
     kmem_cache_alloc_node_noprof (./include/linux/kasan.h:250 mm/slub.c:4148 mm/slub.c:4197 mm/slub.c:4249)
     __alloc_skb (net/core/skbuff.c:660 (discriminator 4))
     alloc_skb_with_frags (./include/linux/skbuff.h:1336 net/core/skbuff.c:6668)
     sock_alloc_send_pskb (net/core/sock.c:2993)
     unix_stream_sendmsg (./include/net/sock.h:1847 net/unix/af_unix.c:2256 net/unix/af_unix.c:2418)
     __sys_sendto (net/socket.c:712 (discriminator 20) net/socket.c:727 (discriminator 20) net/socket.c:2226 (discriminator 20))
     __x64_sys_sendto (net/socket.c:2233 (discriminator 1) net/socket.c:2229 (discriminator 1) net/socket.c:2229 (discriminator 1))
     do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1))
     entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
    Freed by task 315:
     kasan_save_stack (mm/kasan/common.c:48)
     kasan_save_track (mm/kasan/common.c:60 (discriminator 1) mm/kasan/common.c:69 (discriminator 1))
     kasan_save_free_info (mm/kasan/generic.c:579 (discriminator 1))
     __kasan_slab_free (mm/kasan/common.c:271)
     kmem_cache_free (mm/slub.c:4643 (discriminator 3) mm/slub.c:4745 (discriminator 3))
     unix_stream_read_generic (net/unix/af_unix.c:3010)
     unix_stream_recvmsg (net/unix/af_unix.c:3048)
     sock_recvmsg (net/socket.c:1063 (discriminator 20) net/socket.c:1085 (discriminator 20))
     __sys_recvfrom (net/socket.c:2278)
     __x64_sys_recvfrom (net/socket.c:2291 (discriminator 1) net/socket.c:2287 (discriminator 1) net/socket.c:2287 (discriminator 1))
     do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1))
     entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    
    The buggy address belongs to the object at ffff888106ef28c0
     which belongs to the cache skbuff_head_cache of size 224
    The buggy address is located 68 bytes inside of
     freed 224-byte region [ffff888106ef28c0, ffff888106ef29a0)
    
    The buggy address belongs to the physical page:
    page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff888106ef3cc0 pfn:0x106ef2
    head: order:1 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
    flags: 0x200000000000040(head|node=0|zone=2)
    page_type: f5(slab)
    raw: 0200000000000040 ffff8881001d28c0 ffffea000422fe00 0000000000000004
    raw: ffff888106ef3cc0 0000000080190010 00000000f5000000 0000000000000000
    head: 0200000000000040 ffff8881001d28c0 ffffea000422fe00 0000000000000004
    head: ffff888106ef3cc0 0000000080190010 00000000f5000000 0000000000000000
    head: 0200000000000001 ffffea00041bbc81 00000000ffffffff 00000000ffffffff
    head: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888106ef2800: 00 00 00 00 00 00 00 00 00 00 00 00 fc fc fc fc
     ffff888106ef2880: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
    >ffff888106ef2900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                       ^
     ffff888106ef2980: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
     ffff888106ef2a00: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    
    Fixes: 314001f0bf92 ("af_unix: Add OOB support")
    Reported-by: Jann Horn <[email protected]>
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Jann Horn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    [Lee: Shifted hunk inside the if() statement and surrounded the else with {}'s)
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ALSA: firewire-motu: drop EPOLLOUT from poll return values as write is not supported [+ + +]
Author: Takashi Sakamoto <[email protected]>
Date:   Sat Aug 30 08:37:49 2025 +0900

    ALSA: firewire-motu: drop EPOLLOUT from poll return values as write is not supported
    
    [ Upstream commit aea3493246c474bc917d124d6fb627663ab6bef0 ]
    
    The ALSA HwDep character device of the firewire-motu driver incorrectly
    returns EPOLLOUT in poll(2), even though the driver implements no operation
    for write(2). This misleads userspace applications to believe write() is
    allowed, potentially resulting in unnecessarily wakeups.
    
    This issue dates back to the driver's initial code added by a commit
    71c3797779d3 ("ALSA: firewire-motu: add hwdep interface"), and persisted
    when POLLOUT was updated to EPOLLOUT by a commit a9a08845e9ac ('vfs: do
    bulk POLL* -> EPOLL* replacement("").').
    
    This commit fixes the bug.
    
    Signed-off-by: Takashi Sakamoto <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5 [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Mon May 26 17:07:48 2025 +0300

    ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5
    
    [ Upstream commit 79d561c4ec0497669f19a9550cfb74812f60938b ]
    
    The Sony DualSense wireless controller (PS5) features an internal mono
    speaker, but it also provides a 3.5mm jack socket for headphone output
    and headset microphone input.
    
    Since this is a UAC1 device, it doesn't advertise any jack detection
    capability.  However, the controller is able to report HP & MIC insert
    events via HID, i.e. through a dedicated input device managed by the
    hid-playstation driver.
    
    Add a quirk to create the jack controls for headphone and headset mic,
    respectively, and setup an input handler for each of them in order to
    intercept the related hotplug events.
    
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Avoid multiple assignments in mixer_quirks [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Mon May 26 17:07:45 2025 +0300

    ALSA: usb-audio: Avoid multiple assignments in mixer_quirks
    
    [ Upstream commit 03ddd3bdb94df3edb1f2408b57cfb00b3d92a208 ]
    
    Handle report from checkpatch.pl:
    
      CHECK: multiple assignments should be avoided
    
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Convert comma to semicolon [+ + +]
Author: Chen Ni <[email protected]>
Date:   Thu Jun 12 14:02:28 2025 +0800

    ALSA: usb-audio: Convert comma to semicolon
    
    [ Upstream commit 9ca30a1b007d5fefb5752428f852a2d8d7219c1c ]
    
    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.
    
    Fixes: 79d561c4ec04 ("ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5")
    Signed-off-by: Chen Ni <[email protected]>
    Reviewed-by: Cristian Ciocaltea <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Drop unnecessary parentheses in mixer_quirks [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Mon May 26 17:07:44 2025 +0300

    ALSA: usb-audio: Drop unnecessary parentheses in mixer_quirks
    
    [ Upstream commit c0495cef8b43ad61efbd4019e3573742e0e63c67 ]
    
    Fix multiple 'CHECK: Unnecessary parentheses around ...' reports from
    checkpatch.pl.
    
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Fix block comments in mixer_quirks [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Mon May 26 17:07:43 2025 +0300

    ALSA: usb-audio: Fix block comments in mixer_quirks
    
    [ Upstream commit 231225d8a20f8668b4fd6601d54a2fac0e0ab7a5 ]
    
    Address a couple of comment formatting issues indicated by
    checkpatch.pl:
    
      WARNING: Block comments use a trailing */ on a separate line
    
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Fix build with CONFIG_INPUT=n [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Fri Jun 13 10:15:30 2025 +0200

    ALSA: usb-audio: Fix build with CONFIG_INPUT=n
    
    [ Upstream commit d0630a0b80c08530857146e3bf183a7d6b743847 ]
    
    The recent addition of DualSense mixer quirk relies on the input
    device handle, and the build can fail if CONFIG_INPUT isn't set.
    Put (rather ugly) workarounds to wrap with IS_REACHABLE() for avoiding
    the build error.
    
    Fixes: 79d561c4ec04 ("ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Reviewed-by: Cristian Ciocaltea <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Remove unneeded wmb() in mixer_quirks [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Mon May 26 17:07:47 2025 +0300

    ALSA: usb-audio: Remove unneeded wmb() in mixer_quirks
    
    [ Upstream commit 9cea7425595697802e8d55a322a251999554b8b1 ]
    
    Adding a memory barrier before wake_up() in
    snd_usb_soundblaster_remote_complete() is supposed to ensure the write
    to mixer->rc_code is visible in wait_event_interruptible() from
    snd_usb_sbrc_hwdep_read().
    
    However, this is not really necessary, since wake_up() is just a wrapper
    over __wake_up() which already executes a full memory barrier before
    accessing the state of the task to be waken up.
    
    Drop the redundant call to wmb() and implicitly fix the checkpatch
    complaint:
    
      WARNING: memory barrier without comment
    
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Simplify NULL comparison in mixer_quirks [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Mon May 26 17:07:46 2025 +0300

    ALSA: usb-audio: Simplify NULL comparison in mixer_quirks
    
    [ Upstream commit f2d6d660e8fd5f4467e80743f82119201e67fa9c ]
    
    Handle report from checkpatch.pl:
    
      CHECK: Comparison to NULL could be written "t->name"
    
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: dts: imx8mp: Correct thermal sensor index [+ + +]
Author: Peng Fan <[email protected]>
Date:   Fri Sep 5 11:01:09 2025 +0800

    arm64: dts: imx8mp: Correct thermal sensor index
    
    [ Upstream commit a50342f976d25aace73ff551845ce89406f48f35 ]
    
    The TMU has two temperature measurement sites located on the chip. The
    probe 0 is located inside of the ANAMIX, while the probe 1 is located near
    the ARM core. This has been confirmed by checking with HW design team and
    checking RTL code.
    
    So correct the {cpu,soc}-thermal sensor index.
    
    Fixes: 30cdd62dce6b ("arm64: dts: imx8mp: Add thermal zones support")
    Signed-off-by: Peng Fan <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: SOF: Intel: hda-stream: Fix incorrect variable used in error message [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Tue Sep 2 13:06:39 2025 +0100

    ASoC: SOF: Intel: hda-stream: Fix incorrect variable used in error message
    
    [ Upstream commit 35fc531a59694f24a2456569cf7d1a9c6436841c ]
    
    The dev_err message is reporting an error about capture streams however
    it is using the incorrect variable num_playback instead of num_capture.
    Fix this by using the correct variable num_capture.
    
    Fixes: a1d1e266b445 ("ASoC: SOF: Intel: Add Intel specific HDA stream operations")
    Signed-off-by: Colin Ian King <[email protected]>
    Acked-by: Peter Ujfalusi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: wm8940: Correct typo in control name [+ + +]
Author: Charles Keepax <[email protected]>
Date:   Thu Aug 21 09:26:38 2025 +0100

    ASoC: wm8940: Correct typo in control name
    
    [ Upstream commit b4799520dcd6fe1e14495cecbbe9975d847cd482 ]
    
    Fixes: 0b5e92c5e020 ("ASoC WM8940 Driver")
    Reported-by: Ankur Tyagi <[email protected]>
    Signed-off-by: Charles Keepax <[email protected]>
    Tested-by: Ankur Tyagi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: wm8974: Correct PLL rate rounding [+ + +]
Author: Charles Keepax <[email protected]>
Date:   Thu Aug 21 09:26:39 2025 +0100

    ASoC: wm8974: Correct PLL rate rounding
    
    [ Upstream commit 9b17d3724df55ecc2bc67978822585f2b023be48 ]
    
    Using a single value of 22500000 for both 48000Hz and 44100Hz audio
    will sometimes result in returning wrong dividers due to rounding.
    Update the code to use the actual value for both.
    
    Fixes: 51b2bb3f2568 ("ASoC: wm8974: configure pll and mclk divider automatically")
    Signed-off-by: Charles Keepax <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bnxt_en: correct offset handling for IPv6 destination address [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Sat Sep 20 05:11:17 2025 -0700

    bnxt_en: correct offset handling for IPv6 destination address
    
    [ Upstream commit 3d3aa9472c6dd0704e9961ed4769caac5b1c8d52 ]
    
    In bnxt_tc_parse_pedit(), the code incorrectly writes IPv6
    destination values to the source address field (saddr) when
    processing pedit offsets within the destination address range.
    
    This patch corrects the assignment to use daddr instead of saddr,
    ensuring that pedit operations on IPv6 destination addresses are
    applied correctly.
    
    Fixes: 9b9eb518e338 ("bnxt_en: Add support for NAT(L3/L4 rewrite)")
    Signed-off-by: Alok Tiwari <[email protected]>
    Reviewed-by: Somnath Kotur <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Reject bpf_timer for PREEMPT_RT [+ + +]
Author: Leon Hwang <[email protected]>
Date:   Wed Sep 10 20:57:39 2025 +0800

    bpf: Reject bpf_timer for PREEMPT_RT
    
    [ Upstream commit e25ddfb388c8b7e5f20e3bf38d627fb485003781 ]
    
    When enable CONFIG_PREEMPT_RT, the kernel will warn when run timer
    selftests by './test_progs -t timer':
    
    BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    
    In order to avoid such warning, reject bpf_timer in verifier when
    PREEMPT_RT is enabled.
    
    Signed-off-by: Leon Hwang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: tree-checker: fix the incorrect inode ref size check [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Tue Sep 16 07:54:06 2025 +0930

    btrfs: tree-checker: fix the incorrect inode ref size check
    
    commit 96fa515e70f3e4b98685ef8cac9d737fc62f10e1 upstream.
    
    [BUG]
    Inside check_inode_ref(), we need to make sure every structure,
    including the btrfs_inode_extref header, is covered by the item.  But
    our code is incorrectly using "sizeof(iref)", where @iref is just a
    pointer.
    
    This means "sizeof(iref)" will always be "sizeof(void *)", which is much
    smaller than "sizeof(struct btrfs_inode_extref)".
    
    This will allow some bad inode extrefs to sneak in, defeating tree-checker.
    
    [FIX]
    Fix the typo by calling "sizeof(*iref)", which is the same as
    "sizeof(struct btrfs_inode_extref)", and will be the correct behavior we
    want.
    
    Fixes: 71bf92a9b877 ("btrfs: tree-checker: Add check for INODE_REF")
    CC: [email protected] # 6.1+
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Qu Wenruo <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
can: bittiming: allow TDC{V,O} to be zero and add can_tdc_const::tdc{v,o,f}_min [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Sat Sep 18 18:56:32 2021 +0900

    can: bittiming: allow TDC{V,O} to be zero and add can_tdc_const::tdc{v,o,f}_min
    
    [ Upstream commit 63dfe0709643528290c8a6825f278eda0e3f3c2e ]
    
    ISO 11898-1 specifies in section 11.3.3 "Transmitter delay
    compensation" that "the configuration range for [the] SSP position
    shall be at least 0 to 63 minimum time quanta."
    
    Because SSP = TDCV + TDCO, it means that we should allow both TDCV and
    TDCO to hold zero value in order to honor SSP's minimum possible
    value.
    
    However, current implementation assigned special meaning to TDCV and
    TDCO's zero values:
      * TDCV = 0 -> TDCV is automatically measured by the transceiver.
      * TDCO = 0 -> TDC is off.
    
    In order to allow for those values to really be zero and to maintain
    current features, we introduce two new flags:
      * CAN_CTRLMODE_TDC_AUTO indicates that the controller support
        automatic measurement of TDCV.
      * CAN_CTRLMODE_TDC_MANUAL indicates that the controller support
        manual configuration of TDCV. N.B.: current implementation failed
        to provide an option for the driver to indicate that only manual
        mode was supported.
    
    TDC is disabled if both CAN_CTRLMODE_TDC_AUTO and
    CAN_CTRLMODE_TDC_MANUAL flags are off, c.f. the helper function
    can_tdc_is_enabled() which is also introduced in this patch.
    
    Also, this patch adds three fields: tdcv_min, tdco_min and tdcf_min to
    struct can_tdc_const. While we are not convinced that those three
    fields could be anything else than zero, we can imagine that some
    controllers might specify a lower bound on these. Thus, those minimums
    are really added "just in case".
    
    Comments of struct can_tdc and can_tdc_const are updated accordingly.
    
    Finally, the changes are applied to the etas_es58x driver.
    
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Vincent Mailhol <[email protected]>
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Stable-dep-of: 38c0abad45b1 ("can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow")
    Signed-off-by: Sasha Levin <[email protected]>

can: bittiming: replace CAN units with the generic ones from linux/units.h [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Wed Nov 24 10:45:36 2021 +0900

    can: bittiming: replace CAN units with the generic ones from linux/units.h
    
    [ Upstream commit 330c6d3bfa268794bf692165d0f781f1c2d4d83e ]
    
    In [1], we introduced a set of units in linux/can/bittiming.h. Since
    then, generic SI prefixes were added to linux/units.h in [2]. Those
    new prefixes can perfectly replace CAN specific ones.
    
    This patch replaces all occurrences of the CAN units with their
    corresponding prefix (from linux/units) and the unit (as a comment)
    according to below table.
    
     CAN units      SI metric prefix (from linux/units) + unit (as a comment)
     ------------------------------------------------------------------------
     CAN_KBPS       KILO /* BPS */
     CAN_MBPS       MEGA /* BPS */
     CAM_MHZ        MEGA /* Hz */
    
    The definition are then removed from linux/can/bittiming.h
    
    [1] commit 1d7750760b70 ("can: bittiming: add CAN_KBPS, CAN_MBPS and
    CAN_MHZ macros")
    
    [2] commit 26471d4a6cf8 ("units: Add SI metric prefix definitions")
    
    Link: https://lore.kernel.org/all/[email protected]
    Suggested-by: Jimmy Assarsson <[email protected]>
    Suggested-by: Oliver Hartkopp <[email protected]>
    Signed-off-by: Vincent Mailhol <[email protected]>
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Stable-dep-of: 38c0abad45b1 ("can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow")
    Signed-off-by: Sasha Levin <[email protected]>

can: dev: add generic function can_eth_ioctl_hwts() [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Wed Jul 27 19:16:35 2022 +0900

    can: dev: add generic function can_eth_ioctl_hwts()
    
    [ Upstream commit 90f942c5a6d775bad1be33ba214755314105da4a ]
    
    Tools based on libpcap (such as tcpdump) expect the SIOCSHWTSTAMP
    ioctl call to be supported. This is also specified in the kernel doc
    [1]. The purpose of this ioctl is to toggle the hardware timestamps.
    
    Currently, CAN devices which support hardware timestamping have those
    always activated. can_eth_ioctl_hwts() is a dumb function that will
    always succeed when requested to set tx_type to HWTSTAMP_TX_ON or
    rx_filter to HWTSTAMP_FILTER_ALL.
    
    [1] Kernel doc: Timestamping, section 3.1 "Hardware Timestamping
    Implementation: Device Drivers"
    Link: https://docs.kernel.org/networking/timestamping.html#hardware-timestamping-implementation-device-drivers
    
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Stable-dep-of: 38c0abad45b1 ("can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow")
    Signed-off-by: Sasha Levin <[email protected]>

can: dev: add generic function can_ethtool_op_get_ts_info_hwts() [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Wed Jul 27 19:16:34 2022 +0900

    can: dev: add generic function can_ethtool_op_get_ts_info_hwts()
    
    [ Upstream commit 7fb48d25b5ce3bc488dbb019bf1736248181de9a ]
    
    Add function can_ethtool_op_get_ts_info_hwts(). This function will be
    used by CAN devices with hardware TX/RX timestamping support to
    implement ethtool_ops::get_ts_info. This function does not offer
    support to activate/deactivate hardware timestamps at device level nor
    support the filter options (which is currently the case for all CAN
    devices with hardware timestamping support).
    
    The fact that hardware timestamp can not be deactivated at hardware
    level does not impact the userland. As long as the user do not set
    SO_TIMESTAMPING using a setsockopt() or ioctl(), the kernel will not
    emit TX timestamps (RX timestamps will still be reproted as it is the
    case currently).
    
    Drivers which need more fine grained control remains free to implement
    their own function, but we foresee that the generic function
    introduced here will be sufficient for the majority.
    
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Stable-dep-of: 38c0abad45b1 ("can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow")
    Signed-off-by: Sasha Levin <[email protected]>

can: etas_es58x: advertise timestamping capabilities and add ioctl support [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Wed Jul 27 19:16:37 2022 +0900

    can: etas_es58x: advertise timestamping capabilities and add ioctl support
    
    [ Upstream commit 1d46efa0008a6d73dad40e78a2b3fa6d3cfb74e4 ]
    
    Currently, userland has no method to query which timestamping features
    are supported by the etas_es58x driver (aside maybe of getting RX
    messages and observe whether or not hardware timestamps stay at zero).
    
    The canonical way for a network driver to advertise what kind of
    timestamping is supports is to implement
    ethtool_ops::get_ts_info(). Here, we use the CAN specific
    can_ethtool_op_get_ts_info_hwts() function to achieve this.
    
    In addition, the driver currently does not support the hardware
    timestamps ioctls. According to [1], SIOCSHWTSTAMP is "must" and
    SIOCGHWTSTAMP is "should". This patch fills up that gap by
    implementing net_device_ops::ndo_eth_ioctl() using the CAN specific
    function can_eth_ioctl_hwts().
    
    [1] kernel doc Timestamping, section 3.1: "Hardware Timestamping
    Implementation: Device Drivers"
    Link: https://docs.kernel.org/networking/timestamping.html#hardware-timestamping-implementation-device-drivers
    
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Stable-dep-of: 38c0abad45b1 ("can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow")
    Signed-off-by: Sasha Levin <[email protected]>

can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Thu Sep 18 18:00:24 2025 +0900

    can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow
    
    [ Upstream commit 38c0abad45b190a30d8284a37264d2127a6ec303 ]
    
    Sending an PF_PACKET allows to bypass the CAN framework logic and to
    directly reach the xmit() function of a CAN driver. The only check
    which is performed by the PF_PACKET framework is to make sure that
    skb->len fits the interface's MTU.
    
    Unfortunately, because the etas_es58x driver does not populate its
    net_device_ops->ndo_change_mtu(), it is possible for an attacker to
    configure an invalid MTU by doing, for example:
    
      $ ip link set can0 mtu 9999
    
    After doing so, the attacker could open a PF_PACKET socket using the
    ETH_P_CANXL protocol:
    
            socket(PF_PACKET, SOCK_RAW, htons(ETH_P_CANXL));
    
    to inject a malicious CAN XL frames. For example:
    
            struct canxl_frame frame = {
                    .flags = 0xff,
                    .len = 2048,
            };
    
    The CAN drivers' xmit() function are calling can_dev_dropped_skb() to
    check that the skb is valid, unfortunately under above conditions, the
    malicious packet is able to go through can_dev_dropped_skb() checks:
    
      1. the skb->protocol is set to ETH_P_CANXL which is valid (the
         function does not check the actual device capabilities).
    
      2. the length is a valid CAN XL length.
    
    And so, es58x_start_xmit() receives a CAN XL frame which it is not
    able to correctly handle and will thus misinterpret it as a CAN(FD)
    frame.
    
    This can result in a buffer overflow. For example, using the es581.4
    variant, the frame will be dispatched to es581_4_tx_can_msg(), go
    through the last check at the beginning of this function:
    
            if (can_is_canfd_skb(skb))
                    return -EMSGSIZE;
    
    and reach this line:
    
            memcpy(tx_can_msg->data, cf->data, cf->len);
    
    Here, cf->len corresponds to the flags field of the CAN XL frame. In
    our previous example, we set canxl_frame->flags to 0xff. Because the
    maximum expected length is 8, a buffer overflow of 247 bytes occurs!
    
    Populate net_device_ops->ndo_change_mtu() to ensure that the
    interface's MTU can not be set to anything bigger than CAN_MTU or
    CANFD_MTU (depending on the device capabilities). By fixing the root
    cause, this prevents the buffer overflow.
    
    Fixes: 8537257874e9 ("can: etas_es58x: add core support for ETAS ES58X CAN USB interfaces")
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: etas_es58x: sort the includes by alphabetic order [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Sun Nov 27 01:05:25 2022 +0900

    can: etas_es58x: sort the includes by alphabetic order
    
    [ Upstream commit 8fd9323ef7210b90d1d209dd4f0d65a8411b60e1 ]
    
    Follow the best practices, reorder the includes.
    
    While doing so, bump up copyright year of each modified files.
    
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Stable-dep-of: 38c0abad45b1 ("can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow")
    Signed-off-by: Sasha Levin <[email protected]>

can: hi311x: populate ndo_change_mtu() to prevent buffer overflow [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Thu Sep 18 18:00:25 2025 +0900

    can: hi311x: populate ndo_change_mtu() to prevent buffer overflow
    
    [ Upstream commit ac1c7656fa717f29fac3ea073af63f0b9919ec9a ]
    
    Sending an PF_PACKET allows to bypass the CAN framework logic and to
    directly reach the xmit() function of a CAN driver. The only check
    which is performed by the PF_PACKET framework is to make sure that
    skb->len fits the interface's MTU.
    
    Unfortunately, because the sun4i_can driver does not populate its
    net_device_ops->ndo_change_mtu(), it is possible for an attacker to
    configure an invalid MTU by doing, for example:
    
      $ ip link set can0 mtu 9999
    
    After doing so, the attacker could open a PF_PACKET socket using the
    ETH_P_CANXL protocol:
    
            socket(PF_PACKET, SOCK_RAW, htons(ETH_P_CANXL))
    
    to inject a malicious CAN XL frames. For example:
    
            struct canxl_frame frame = {
                    .flags = 0xff,
                    .len = 2048,
            };
    
    The CAN drivers' xmit() function are calling can_dev_dropped_skb() to
    check that the skb is valid, unfortunately under above conditions, the
    malicious packet is able to go through can_dev_dropped_skb() checks:
    
      1. the skb->protocol is set to ETH_P_CANXL which is valid (the
         function does not check the actual device capabilities).
    
      2. the length is a valid CAN XL length.
    
    And so, hi3110_hard_start_xmit() receives a CAN XL frame which it is
    not able to correctly handle and will thus misinterpret it as a CAN
    frame. The driver will consume frame->len as-is with no further
    checks.
    
    This can result in a buffer overflow later on in hi3110_hw_tx() on
    this line:
    
            memcpy(buf + HI3110_FIFO_EXT_DATA_OFF,
                   frame->data, frame->len);
    
    Here, frame->len corresponds to the flags field of the CAN XL frame.
    In our previous example, we set canxl_frame->flags to 0xff. Because
    the maximum expected length is 8, a buffer overflow of 247 bytes
    occurs!
    
    Populate net_device_ops->ndo_change_mtu() to ensure that the
    interface's MTU can not be set to anything bigger than CAN_MTU. By
    fixing the root cause, this prevents the buffer overflow.
    
    Fixes: 57e83fb9b746 ("can: hi311x: Add Holt HI-311x CAN driver")
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: j1939: j1939_local_ecu_get(): undo increment when j1939_local_ecu_get() fails [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Sun Aug 24 19:27:40 2025 +0900

    can: j1939: j1939_local_ecu_get(): undo increment when j1939_local_ecu_get() fails
    
    [ Upstream commit 06e02da29f6f1a45fc07bd60c7eaf172dc21e334 ]
    
    Since j1939_sk_bind() and j1939_sk_release() call j1939_local_ecu_put()
    when J1939_SOCK_BOUND was already set, but the error handling path for
    j1939_sk_bind() will not set J1939_SOCK_BOUND when j1939_local_ecu_get()
    fails, j1939_local_ecu_get() needs to undo priv->ents[sa].nusers++ when
    j1939_local_ecu_get() returns an error.
    
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Signed-off-by: Tetsuo Handa <[email protected]>
    Tested-by: Oleksij Rempel <[email protected]>
    Acked-by: Oleksij Rempel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: j1939: j1939_sk_bind(): call j1939_priv_put() immediately when j1939_local_ecu_get() failed [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Sun Aug 24 19:30:09 2025 +0900

    can: j1939: j1939_sk_bind(): call j1939_priv_put() immediately when j1939_local_ecu_get() failed
    
    [ Upstream commit f214744c8a27c3c1da6b538c232da22cd027530e ]
    
    Commit 25fe97cb7620 ("can: j1939: move j1939_priv_put() into sk_destruct
    callback") expects that a call to j1939_priv_put() can be unconditionally
    delayed until j1939_sk_sock_destruct() is called. But a refcount leak will
    happen when j1939_sk_bind() is called again after j1939_local_ecu_get()
     from previous j1939_sk_bind() call returned an error. We need to call
    j1939_priv_put() before j1939_sk_bind() returns an error.
    
    Fixes: 25fe97cb7620 ("can: j1939: move j1939_priv_put() into sk_destruct callback")
    Signed-off-by: Tetsuo Handa <[email protected]>
    Tested-by: Oleksij Rempel <[email protected]>
    Acked-by: Oleksij Rempel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: mcba_usb: populate ndo_change_mtu() to prevent buffer overflow [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Thu Sep 18 18:00:27 2025 +0900

    can: mcba_usb: populate ndo_change_mtu() to prevent buffer overflow
    
    [ Upstream commit 17c8d794527f01def0d1c8b7dc2d7b8d34fed0e6 ]
    
    Sending an PF_PACKET allows to bypass the CAN framework logic and to
    directly reach the xmit() function of a CAN driver. The only check
    which is performed by the PF_PACKET framework is to make sure that
    skb->len fits the interface's MTU.
    
    Unfortunately, because the mcba_usb driver does not populate its
    net_device_ops->ndo_change_mtu(), it is possible for an attacker to
    configure an invalid MTU by doing, for example:
    
      $ ip link set can0 mtu 9999
    
    After doing so, the attacker could open a PF_PACKET socket using the
    ETH_P_CANXL protocol:
    
            socket(PF_PACKET, SOCK_RAW, htons(ETH_P_CANXL))
    
    to inject a malicious CAN XL frames. For example:
    
            struct canxl_frame frame = {
                    .flags = 0xff,
                    .len = 2048,
            };
    
    The CAN drivers' xmit() function are calling can_dev_dropped_skb() to
    check that the skb is valid, unfortunately under above conditions, the
    malicious packet is able to go through can_dev_dropped_skb() checks:
    
      1. the skb->protocol is set to ETH_P_CANXL which is valid (the
         function does not check the actual device capabilities).
    
      2. the length is a valid CAN XL length.
    
    And so, mcba_usb_start_xmit() receives a CAN XL frame which it is not
    able to correctly handle and will thus misinterpret it as a CAN frame.
    
    This can result in a buffer overflow. The driver will consume cf->len
    as-is with no further checks on these lines:
    
            usb_msg.dlc = cf->len;
    
            memcpy(usb_msg.data, cf->data, usb_msg.dlc);
    
    Here, cf->len corresponds to the flags field of the CAN XL frame. In
    our previous example, we set canxl_frame->flags to 0xff. Because the
    maximum expected length is 8, a buffer overflow of 247 bytes occurs!
    
    Populate net_device_ops->ndo_change_mtu() to ensure that the
    interface's MTU can not be set to anything bigger than CAN_MTU. By
    fixing the root cause, this prevents the buffer overflow.
    
    Fixes: 51f3baad7de9 ("can: mcba_usb: Add support for Microchip CAN BUS Analyzer")
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: peak_usb: fix shift-out-of-bounds issue [+ + +]
Author: Stéphane Grosjean <[email protected]>
Date:   Thu Sep 18 15:23:57 2025 +0200

    can: peak_usb: fix shift-out-of-bounds issue
    
    [ Upstream commit c443be70aaee42c2d1d251e0329e0a69dd96ae54 ]
    
    Explicitly uses a 64-bit constant when the number of bits used for its
    shifting is 32 (which is the case for PC CAN FD interfaces supported by
    this driver).
    
    Signed-off-by: Stéphane Grosjean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reported-by: Marc Kleine-Budde <[email protected]>
    Closes: https://lore.kernel.org/[email protected]
    Fixes: bb4785551f64 ("can: usb: PEAK-System Technik USB adapters driver core")
    [mkl: update subject, apply manually]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: rcar_can: rcar_can_resume(): fix s2ram with PSCI [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Thu Aug 14 13:26:37 2025 +0200

    can: rcar_can: rcar_can_resume(): fix s2ram with PSCI
    
    [ Upstream commit 5c793afa07da6d2d4595f6c73a2a543a471bb055 ]
    
    On R-Car Gen3 using PSCI, s2ram powers down the SoC.  After resume, the
    CAN interface no longer works, until it is brought down and up again.
    
    Fix this by calling rcar_can_start() from the PM resume callback, to
    fully initialize the controller instead of just restarting it.
    
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/699b2f7fcb60b31b6f976a37f08ce99c5ffccb31.1755165227.git.geert+renesas@glider.be
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: sun4i_can: populate ndo_change_mtu() to prevent buffer overflow [+ + +]
Author: Vincent Mailhol <[email protected]>
Date:   Thu Sep 18 18:00:26 2025 +0900

    can: sun4i_can: populate ndo_change_mtu() to prevent buffer overflow
    
    [ Upstream commit 61da0bd4102c459823fbe6b8b43b01fb6ace4a22 ]
    
    Sending an PF_PACKET allows to bypass the CAN framework logic and to
    directly reach the xmit() function of a CAN driver. The only check
    which is performed by the PF_PACKET framework is to make sure that
    skb->len fits the interface's MTU.
    
    Unfortunately, because the sun4i_can driver does not populate its
    net_device_ops->ndo_change_mtu(), it is possible for an attacker to
    configure an invalid MTU by doing, for example:
    
      $ ip link set can0 mtu 9999
    
    After doing so, the attacker could open a PF_PACKET socket using the
    ETH_P_CANXL protocol:
    
            socket(PF_PACKET, SOCK_RAW, htons(ETH_P_CANXL))
    
    to inject a malicious CAN XL frames. For example:
    
            struct canxl_frame frame = {
                    .flags = 0xff,
                    .len = 2048,
            };
    
    The CAN drivers' xmit() function are calling can_dev_dropped_skb() to
    check that the skb is valid, unfortunately under above conditions, the
    malicious packet is able to go through can_dev_dropped_skb() checks:
    
      1. the skb->protocol is set to ETH_P_CANXL which is valid (the
         function does not check the actual device capabilities).
    
      2. the length is a valid CAN XL length.
    
    And so, sun4ican_start_xmit() receives a CAN XL frame which it is not
    able to correctly handle and will thus misinterpret it as a CAN frame.
    
    This can result in a buffer overflow. The driver will consume cf->len
    as-is with no further checks on this line:
    
            dlc = cf->len;
    
    Here, cf->len corresponds to the flags field of the CAN XL frame. In
    our previous example, we set canxl_frame->flags to 0xff. Because the
    maximum expected length is 8, a buffer overflow of 247 bytes occurs a
    couple line below when doing:
    
            for (i = 0; i < dlc; i++)
                    writel(cf->data[i], priv->base + (dreg + i * 4));
    
    Populate net_device_ops->ndo_change_mtu() to ensure that the
    interface's MTU can not be set to anything bigger than CAN_MTU. By
    fixing the root cause, this prevents the buffer overflow.
    
    Fixes: 0738eff14d81 ("can: Allwinner A10/A20 CAN Controller support - Kernel module")
    Signed-off-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB [+ + +]
Author: Anssi Hannula <[email protected]>
Date:   Fri Aug 22 12:50:02 2025 +0300

    can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB
    
    [ Upstream commit ef79f00be72bd81d2e1e6f060d83cf7e425deee4 ]
    
    can_put_echo_skb() takes ownership of the SKB and it may be freed
    during or after the call.
    
    However, xilinx_can xcan_write_frame() keeps using SKB after the call.
    
    Fix that by only calling can_put_echo_skb() after the code is done
    touching the SKB.
    
    The tx_lock is held for the entire xcan_write_frame() execution and
    also on the can_get_echo_skb() side so the order of operations does not
    matter.
    
    An earlier fix commit 3d3c817c3a40 ("can: xilinx_can: Fix usage of skb
    memory") did not move the can_put_echo_skb() call far enough.
    
    Signed-off-by: Anssi Hannula <[email protected]>
    Fixes: 1598efe57b3e ("can: xilinx_can: refactor code in preparation for CAN FD support")
    Link: https://patch.msgid.link/[email protected]
    [mkl: add "commit" in front of sha1 in patch description]
    [mkl: fix indention]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cgroup: split cgroup_destroy_wq into 3 workqueues [+ + +]
Author: Chen Ridong <[email protected]>
Date:   Tue Aug 19 01:07:24 2025 +0000

    cgroup: split cgroup_destroy_wq into 3 workqueues
    
    [ Upstream commit 79f919a89c9d06816dbdbbd168fa41d27411a7f9 ]
    
    A hung task can occur during [1] LTP cgroup testing when repeatedly
    mounting/unmounting perf_event and net_prio controllers with
    systemd.unified_cgroup_hierarchy=1. The hang manifests in
    cgroup_lock_and_drain_offline() during root destruction.
    
    Related case:
    cgroup_fj_function_perf_event cgroup_fj_function.sh perf_event
    cgroup_fj_function_net_prio cgroup_fj_function.sh net_prio
    
    Call Trace:
            cgroup_lock_and_drain_offline+0x14c/0x1e8
            cgroup_destroy_root+0x3c/0x2c0
            css_free_rwork_fn+0x248/0x338
            process_one_work+0x16c/0x3b8
            worker_thread+0x22c/0x3b0
            kthread+0xec/0x100
            ret_from_fork+0x10/0x20
    
    Root Cause:
    
    CPU0                            CPU1
    mount perf_event                umount net_prio
    cgroup1_get_tree                cgroup_kill_sb
    rebind_subsystems               // root destruction enqueues
                                    // cgroup_destroy_wq
    // kill all perf_event css
                                    // one perf_event css A is dying
                                    // css A offline enqueues cgroup_destroy_wq
                                    // root destruction will be executed first
                                    css_free_rwork_fn
                                    cgroup_destroy_root
                                    cgroup_lock_and_drain_offline
                                    // some perf descendants are dying
                                    // cgroup_destroy_wq max_active = 1
                                    // waiting for css A to die
    
    Problem scenario:
    1. CPU0 mounts perf_event (rebind_subsystems)
    2. CPU1 unmounts net_prio (cgroup_kill_sb), queuing root destruction work
    3. A dying perf_event CSS gets queued for offline after root destruction
    4. Root destruction waits for offline completion, but offline work is
       blocked behind root destruction in cgroup_destroy_wq (max_active=1)
    
    Solution:
    Split cgroup_destroy_wq into three dedicated workqueues:
    cgroup_offline_wq – Handles CSS offline operations
    cgroup_release_wq – Manages resource release
    cgroup_free_wq – Performs final memory deallocation
    
    This separation eliminates blocking in the CSS free path while waiting for
    offline operations to complete.
    
    [1] https://github.com/linux-test-project/ltp/blob/master/runtest/controllers
    Fixes: 334c3679ec4b ("cgroup: reimplement rebind_subsystems() using cgroup_apply_control() and friends")
    Reported-by: Gao Yingjie <[email protected]>
    Signed-off-by: Chen Ridong <[email protected]>
    Suggested-by: Teju Heo <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cnic: Fix use-after-free bugs in cnic_delete_task [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Wed Sep 17 13:46:02 2025 +0800

    cnic: Fix use-after-free bugs in cnic_delete_task
    
    [ Upstream commit cfa7d9b1e3a8604afc84e9e51d789c29574fb216 ]
    
    The original code uses cancel_delayed_work() in cnic_cm_stop_bnx2x_hw(),
    which does not guarantee that the delayed work item 'delete_task' has
    fully completed if it was already running. Additionally, the delayed work
    item is cyclic, the flush_workqueue() in cnic_cm_stop_bnx2x_hw() only
    blocks and waits for work items that were already queued to the
    workqueue prior to its invocation. Any work items submitted after
    flush_workqueue() is called are not included in the set of tasks that the
    flush operation awaits. This means that after the cyclic work items have
    finished executing, a delayed work item may still exist in the workqueue.
    This leads to use-after-free scenarios where the cnic_dev is deallocated
    by cnic_free_dev(), while delete_task remains active and attempt to
    dereference cnic_dev in cnic_delete_task().
    
    A typical race condition is illustrated below:
    
    CPU 0 (cleanup)              | CPU 1 (delayed work callback)
    cnic_netdev_event()          |
      cnic_stop_hw()             | cnic_delete_task()
        cnic_cm_stop_bnx2x_hw()  | ...
          cancel_delayed_work()  | /* the queue_delayed_work()
          flush_workqueue()      |    executes after flush_workqueue()*/
                                 | queue_delayed_work()
      cnic_free_dev(dev)//free   | cnic_delete_task() //new instance
                                 |   dev = cp->dev; //use
    
    Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure
    that the cyclic delayed work item is properly canceled and that any
    ongoing execution of the work item completes before the cnic_dev is
    deallocated. Furthermore, since cancel_delayed_work_sync() uses
    __flush_work(work, true) to synchronously wait for any currently
    executing instance of the work item to finish, the flush_workqueue()
    becomes redundant and should be removed.
    
    This bug was identified through static analysis. To reproduce the issue
    and validate the fix, I simulated the cnic PCI device in QEMU and
    introduced intentional delays — such as inserting calls to ssleep()
    within the cnic_delete_task() function — to increase the likelihood
    of triggering the bug.
    
    Fixes: fdf24086f475 ("cnic: Defer iscsi connection cleanup")
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
compiler-clang.h: define __SANITIZE_*__ macros only when undefined [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Tue Sep 2 15:49:26 2025 -0700

    compiler-clang.h: define __SANITIZE_*__ macros only when undefined
    
    commit 3fac212fe489aa0dbe8d80a42a7809840ca7b0f9 upstream.
    
    Clang 22 recently added support for defining __SANITIZE__ macros similar
    to GCC [1], which causes warnings (or errors with CONFIG_WERROR=y or W=e)
    with the existing defines that the kernel creates to emulate this behavior
    with existing clang versions.
    
      In file included from <built-in>:3:
      In file included from include/linux/compiler_types.h:171:
      include/linux/compiler-clang.h:37:9: error: '__SANITIZE_THREAD__' macro redefined [-Werror,-Wmacro-redefined]
         37 | #define __SANITIZE_THREAD__
            |         ^
      <built-in>:352:9: note: previous definition is here
        352 | #define __SANITIZE_THREAD__ 1
            |         ^
    
    Refactor compiler-clang.h to only define the sanitizer macros when they
    are undefined and adjust the rest of the code to use these macros for
    checking if the sanitizers are enabled, clearing up the warnings and
    allowing the kernel to easily drop these defines when the minimum
    supported version of LLVM for building the kernel becomes 22.0.0 or newer.
    
    Link: https://lkml.kernel.org/r/20250902-clang-update-sanitize-defines-v1-1-cf3702ca3d92@kernel.org
    Link: https://github.com/llvm/llvm-project/commit/568c23bbd3303518c5056d7f03444dae4fdc8a9c [1]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Reviewed-by: Justin Stitt <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Andrey Konovalov <[email protected]>
    Cc: Andrey Ryabinin <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Marco Elver <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cpufreq: Initialize cpufreq-based invariance before subsys [+ + +]
Author: Christian Loehle <[email protected]>
Date:   Thu Sep 18 11:15:52 2025 +0100

    cpufreq: Initialize cpufreq-based invariance before subsys
    
    [ Upstream commit 8ffe28b4e8d8b18cb2f2933410322c24f039d5d6 ]
    
    commit 2a6c72738706 ("cpufreq: Initialize cpufreq-based
    frequency-invariance later") postponed the frequency invariance
    initialization to avoid disabling it in the error case.
    This isn't locking safe, instead move the initialization up before
    the subsys interface is registered (which will rebuild the
    sched_domains) and add the corresponding disable on the error path.
    
    Observed lockdep without this patch:
    [    0.989686] ======================================================
    [    0.989688] WARNING: possible circular locking dependency detected
    [    0.989690] 6.17.0-rc4-cix-build+ #31 Tainted: G S
    [    0.989691] ------------------------------------------------------
    [    0.989692] swapper/0/1 is trying to acquire lock:
    [    0.989693] ffff800082ada7f8 (sched_energy_mutex){+.+.}-{4:4}, at: rebuild_sched_domains_energy+0x30/0x58
    [    0.989705]
                   but task is already holding lock:
    [    0.989706] ffff000088c89bc8 (&policy->rwsem){+.+.}-{4:4}, at: cpufreq_online+0x7f8/0xbe0
    [    0.989713]
                   which lock already depends on the new lock.
    
    Fixes: 2a6c72738706 ("cpufreq: Initialize cpufreq-based frequency-invariance later")
    Signed-off-by: Christian Loehle <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Tue Sep 16 17:20:59 2025 +0800

    crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg
    
    [ Upstream commit 1b34cbbf4f011a121ef7b2d7d6e6920a036d5285 ]
    
    Issuing two writes to the same af_alg socket is bogus as the
    data will be interleaved in an unpredictable fashion.  Furthermore,
    concurrent writes may create inconsistencies in the internal
    socket state.
    
    Disallow this by adding a new ctx->write field that indiciates
    exclusive ownership for writing.
    
    Fixes: 8ff590903d5 ("crypto: algif_skcipher - User-space interface for skcipher operations")
    Reported-by: Muhammad Alifa Ramdhan <[email protected]>
    Reported-by: Bing-Jhong Billy Jheng <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: af_alg - Fix incorrect boolean values in af_alg_ctx [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Wed Sep 24 13:18:22 2025 -0700

    crypto: af_alg - Fix incorrect boolean values in af_alg_ctx
    
    [ Upstream commit d0ca0df179c4b21e2a6c4a4fb637aa8fa14575cb ]
    
    Commit 1b34cbbf4f01 ("crypto: af_alg - Disallow concurrent writes in
    af_alg_sendmsg") changed some fields from bool to 1-bit bitfields of
    type u32.
    
    However, some assignments to these fields, specifically 'more' and
    'merge', assign values greater than 1.  These relied on C's implicit
    conversion to bool, such that zero becomes false and nonzero becomes
    true.
    
    With a 1-bit bitfields of type u32 instead, mod 2 of the value is taken
    instead, resulting in 0 being assigned in some cases when 1 was intended.
    
    Fix this by restoring the bool type.
    
    Fixes: 1b34cbbf4f01 ("crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg")
    Cc: [email protected]
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dmaengine: qcom: bam_dma: Fix DT error handling for num-channels/ees [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Wed Feb 12 18:03:54 2025 +0100

    dmaengine: qcom: bam_dma: Fix DT error handling for num-channels/ees
    
    commit 5068b5254812433e841a40886e695633148d362d upstream.
    
    When we don't have a clock specified in the device tree, we have no way to
    ensure the BAM is on. This is often the case for remotely-controlled or
    remotely-powered BAM instances. In this case, we need to read num-channels
    from the DT to have all the necessary information to complete probing.
    
    However, at the moment invalid device trees without clock and without
    num-channels still continue probing, because the error handling is missing
    return statements. The driver will then later try to read the number of
    channels from the registers. This is unsafe, because it relies on boot
    firmware and lucky timing to succeed. Unfortunately, the lack of proper
    error handling here has been abused for several Qualcomm SoCs upstream,
    causing early boot crashes in several situations [1, 2].
    
    Avoid these early crashes by erroring out when any of the required DT
    properties are missing. Note that this will break some of the existing DTs
    upstream (mainly BAM instances related to the crypto engine). However,
    clearly these DTs have never been tested properly, since the error in the
    kernel log was just ignored. It's safer to disable the crypto engine for
    these broken DTBs.
    
    [1]: https://lore.kernel.org/r/[email protected]/
    [2]: https://lore.kernel.org/r/[email protected]/
    
    Cc: [email protected]
    Fixes: 48d163b1aa6e ("dmaengine: qcom: bam_dma: get num-channels and num-ees from dt")
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: ti: edma: Fix memory allocation size for queue_priority_map [+ + +]
Author: Anders Roxell <[email protected]>
Date:   Sat Aug 30 11:49:53 2025 +0200

    dmaengine: ti: edma: Fix memory allocation size for queue_priority_map
    
    [ Upstream commit e63419dbf2ceb083c1651852209c7f048089ac0f ]
    
    Fix a critical memory allocation bug in edma_setup_from_hw() where
    queue_priority_map was allocated with insufficient memory. The code
    declared queue_priority_map as s8 (*)[2] (pointer to array of 2 s8),
    but allocated memory using sizeof(s8) instead of the correct size.
    
    This caused out-of-bounds memory writes when accessing:
      queue_priority_map[i][0] = i;
      queue_priority_map[i][1] = i;
    
    The bug manifested as kernel crashes with "Oops - undefined instruction"
    on ARM platforms (BeagleBoard-X15) during EDMA driver probe, as the
    memory corruption triggered kernel hardening features on Clang.
    
    Change the allocation to use sizeof(*queue_priority_map) which
    automatically gets the correct size for the 2D array structure.
    
    Fixes: 2b6b3b742019 ("ARM/dmaengine: edma: Merge the two drivers under drivers/dma/")
    Signed-off-by: Anders Roxell <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dpaa2-switch: fix buffer pool seeding for control traffic [+ + +]
Author: Ioana Ciornei <[email protected]>
Date:   Wed Sep 10 17:48:25 2025 +0300

    dpaa2-switch: fix buffer pool seeding for control traffic
    
    [ Upstream commit 2690cb089502b80b905f2abdafd1bf2d54e1abef ]
    
    Starting with commit c50e7475961c ("dpaa2-switch: Fix error checking in
    dpaa2_switch_seed_bp()"), the probing of a second DPSW object errors out
    like below.
    
    fsl_dpaa2_switch dpsw.1: fsl_mc_driver_probe failed: -12
    fsl_dpaa2_switch dpsw.1: probe with driver fsl_dpaa2_switch failed with error -12
    
    The aforementioned commit brought to the surface the fact that seeding
    buffers into the buffer pool destined for control traffic is not
    successful and an access violation recoverable error can be seen in the
    MC firmware log:
    
    [E, qbman_rec_isr:391, QBMAN]  QBMAN recoverable event 0x1000000
    
    This happens because the driver incorrectly used the ID of the DPBP
    object instead of the hardware buffer pool ID when trying to release
    buffers into it.
    
    This is because any DPSW object uses two buffer pools, one managed by
    the Linux driver and destined for control traffic packet buffers and the
    other one managed by the MC firmware and destined only for offloaded
    traffic. And since the buffer pool managed by the MC firmware does not
    have an external facing DPBP equivalent, any subsequent DPBP objects
    created after the first DPSW will have a DPBP id different to the
    underlying hardware buffer ID.
    
    The issue was not caught earlier because these two numbers can be
    identical when all DPBP objects are created before the DPSW objects are.
    This is the case when the DPL file is used to describe the entire DPAA2
    object layout and objects are created at boot time and it's also true
    for the first DPSW being created dynamically using ls-addsw.
    
    Fix this by using the buffer pool ID instead of the DPBP id when
    releasing buffers into the pool.
    
    Fixes: 2877e4f7e189 ("staging: dpaa2-switch: setup buffer pool and RX path rings")
    Signed-off-by: Ioana Ciornei <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu: fix a memory leak in fence cleanup when unloading [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Sun Sep 14 22:43:50 2025 -0400

    drm/amdgpu: fix a memory leak in fence cleanup when unloading
    
    [ Upstream commit 7838fb5f119191403560eca2e23613380c0e425e ]
    
    Commit b61badd20b44 ("drm/amdgpu: fix usage slab after free")
    reordered when amdgpu_fence_driver_sw_fini() was called after
    that patch, amdgpu_fence_driver_sw_fini() effectively became
    a no-op as the sched entities we never freed because the
    ring pointers were already set to NULL.  Remove the NULL
    setting.
    
    Reported-by: Lin.Cao <[email protected]>
    Cc: Vitaly Prosyak <[email protected]>
    Cc: Christian König <[email protected]>
    Fixes: b61badd20b44 ("drm/amdgpu: fix usage slab after free")
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit a525fa37aac36c4591cc8b07ae8957862415fbd5)
    Cc: [email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/gma500: Fix null dereference in hdmi teardown [+ + +]
Author: Zabelin Nikita <[email protected]>
Date:   Thu Sep 18 18:06:59 2025 +0300

    drm/gma500: Fix null dereference in hdmi teardown
    
    [ Upstream commit 352e66900cde63f3dadb142364d3c35170bbaaff ]
    
    pci_set_drvdata sets the value of pdev->driver_data to NULL,
    after which the driver_data obtained from the same dev is
    dereferenced in oaktrail_hdmi_i2c_exit, and the i2c_dev is
    extracted from it. To prevent this, swap these calls.
    
    Found by Linux Verification Center (linuxtesting.org) with Svacer.
    
    Fixes: 1b082ccf5901 ("gma500: Add Oaktrail support")
    Signed-off-by: Zabelin Nikita <[email protected]>
    Signed-off-by: Patrik Jakobsson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/backlight: Return immediately when scale() finds invalid parameters [+ + +]
Author: Guenter Roeck <[email protected]>
Date:   Tue Jan 21 06:52:03 2025 -0800

    drm/i915/backlight: Return immediately when scale() finds invalid parameters
    
    commit 6f71507415841d1a6d38118e5fa0eaf0caab9c17 upstream.
    
    The scale() functions detects invalid parameters, but continues
    its calculations anyway. This causes bad results if negative values
    are used for unsigned operations. Worst case, a division by 0 error
    will be seen if source_min == source_max.
    
    On top of that, after v6.13, the sequence of WARN_ON() followed by clamp()
    may result in a build error with gcc 13.x.
    
    drivers/gpu/drm/i915/display/intel_backlight.c: In function 'scale':
    include/linux/compiler_types.h:542:45: error:
            call to '__compiletime_assert_415' declared with attribute error:
            clamp() low limit source_min greater than high limit source_max
    
    This happens if the compiler decides to rearrange the code as follows.
    
            if (source_min > source_max) {
                    WARN(..);
                    /* Do the clamp() knowing that source_min > source_max */
                    source_val = clamp(source_val, source_min, source_max);
            } else {
                    /* Do the clamp knowing that source_min <= source_max */
                    source_val = clamp(source_val, source_min, source_max);
            }
    
    Fix the problem by evaluating the return values from WARN_ON and returning
    immediately after a warning. While at it, fix divide by zero error seen
    if source_min == source_max.
    
    Analyzed-by: Linus Torvalds <[email protected]>
    Suggested-by: Linus Torvalds <[email protected]>
    Suggested-by: David Laight <[email protected]>
    Cc: David Laight <[email protected]>
    Cc: Jani Nikula <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Signed-off-by: Guenter Roeck <[email protected]>
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/i915/power: fix size for for_each_set_bit() in abox iteration [+ + +]
Author: Jani Nikula <[email protected]>
Date:   Sun Sep 14 16:21:35 2025 -0400

    drm/i915/power: fix size for for_each_set_bit() in abox iteration
    
    [ Upstream commit cfa7b7659757f8d0fc4914429efa90d0d2577dd7 ]
    
    for_each_set_bit() expects size to be in bits, not bytes. The abox mask
    iteration uses bytes, but it works by coincidence, because the local
    variable holding the mask is unsigned long, and the mask only ever has
    bit 2 as the highest bit. Using a smaller type could lead to subtle and
    very hard to track bugs.
    
    Fixes: 62afef2811e4 ("drm/i915/rkl: RKL uses ABOX0 for pixel transfers")
    Cc: Ville Syrjälä <[email protected]>
    Cc: Matt Roper <[email protected]>
    Cc: [email protected] # v5.9+
    Reviewed-by: Matt Roper <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jani Nikula <[email protected]>
    (cherry picked from commit 7ea3baa6efe4bb93d11e1c0e6528b1468d7debf6)
    Signed-off-by: Tvrtko Ursulin <[email protected]>
    [ adapted struct intel_display *display parameters to struct drm_i915_private *dev_priv ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm: bridge: anx7625: Fix NULL pointer dereference with early IRQ [+ + +]
Author: Loic Poulain <[email protected]>
Date:   Wed Jul 9 10:54:38 2025 +0200

    drm: bridge: anx7625: Fix NULL pointer dereference with early IRQ
    
    [ Upstream commit a10f910c77f280327b481e77eab909934ec508f0 ]
    
    If the interrupt occurs before resource initialization is complete, the
    interrupt handler/worker may access uninitialized data such as the I2C
    tcpc_client device, potentially leading to NULL pointer dereference.
    
    Signed-off-by: Loic Poulain <[email protected]>
    Fixes: 8bdfc5dae4e3 ("drm/bridge: anx7625: Add anx7625 MIPI DSI/DPI to DP")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm: bridge: cdns-mhdp8546: Fix missing mutex unlock on error path [+ + +]
Author: Qi Xi <[email protected]>
Date:   Thu Sep 4 11:44:47 2025 +0800

    drm: bridge: cdns-mhdp8546: Fix missing mutex unlock on error path
    
    [ Upstream commit 288dac9fb6084330d968459c750c838fd06e10e6 ]
    
    Add missing mutex unlock before returning from the error path in
    cdns_mhdp_atomic_enable().
    
    Fixes: 935a92a1c400 ("drm: bridge: cdns-mhdp8546: Fix possible null pointer dereference")
    Reported-by: Hulk Robot <[email protected]>
    Signed-off-by: Qi Xi <[email protected]>
    Reviewed-by: Luca Ceresoli <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Luca Ceresoli <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dt-bindings: serial: brcm,bcm7271-uart: Constrain clocks [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Aug 12 14:16:31 2025 +0200

    dt-bindings: serial: brcm,bcm7271-uart: Constrain clocks
    
    commit ee047e1d85d73496541c54bd4f432c9464e13e65 upstream.
    
    Lists should have fixed constraints, because binding must be specific in
    respect to hardware, thus add missing constraints to number of clocks.
    
    Cc: stable <[email protected]>
    Fixes: 88a499cd70d4 ("dt-bindings: Add support for the Broadcom UART driver")
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
EDAC/altera: Delete an inappropriate dma_free_coherent() call [+ + +]
Author: Salah Triki <[email protected]>
Date:   Thu Jul 31 04:15:27 2025 +0100

    EDAC/altera: Delete an inappropriate dma_free_coherent() call
    
    commit ff2a66d21fd2364ed9396d151115eec59612b200 upstream.
    
    dma_free_coherent() must only be called if the corresponding
    dma_alloc_coherent() call has succeeded. Calling it when the allocation fails
    leads to undefined behavior.
    
    Delete the wrong call.
    
      [ bp: Massage commit message. ]
    
    Fixes: 71bcada88b0f3 ("edac: altera: Add Altera SDRAM EDAC support")
    Signed-off-by: Salah Triki <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Acked-by: Dinh Nguyen <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/aIrfzzqh4IzYtDVC@pc
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ethernet: rvu-af: Remove slash from the driver name [+ + +]
Author: Petr Malat <[email protected]>
Date:   Thu Sep 18 17:21:07 2025 +0200

    ethernet: rvu-af: Remove slash from the driver name
    
    [ Upstream commit b65678cacc030efd53c38c089fb9b741a2ee34c8 ]
    
    Having a slash in the driver name leads to EIO being returned while
    reading /sys/module/rvu_af/drivers content.
    
    Remove DRV_STRING as it's not used anywhere.
    
    Fixes: 91c6945ea1f9 ("octeontx2-af: cn10k: Add RPM MAC support")
    Signed-off-by: Petr Malat <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fbcon: fix integer overflow in fbcon_do_set_font [+ + +]
Author: Samasth Norway Ananda <[email protected]>
Date:   Fri Sep 12 10:00:23 2025 -0700

    fbcon: fix integer overflow in fbcon_do_set_font
    
    commit 1a194e6c8e1ee745e914b0b7f50fa86c89ed13fe upstream.
    
    Fix integer overflow vulnerabilities in fbcon_do_set_font() where font
    size calculations could overflow when handling user-controlled font
    parameters.
    
    The vulnerabilities occur when:
    1. CALC_FONTSZ(h, pitch, charcount) performs h * pith * charcount
       multiplication with user-controlled values that can overflow.
    2. FONT_EXTRA_WORDS * sizeof(int) + size addition can also overflow
    3. This results in smaller allocations than expected, leading to buffer
       overflows during font data copying.
    
    Add explicit overflow checking using check_mul_overflow() and
    check_add_overflow() kernel helpers to safety validate all size
    calculations before allocation.
    
    Signed-off-by: Samasth Norway Ananda <[email protected]>
    Reviewed-by: Thomas Zimmermann <[email protected]>
    Fixes: 39b3cffb8cf3 ("fbcon: prevent user font height or width change from causing potential out-of-bounds access")
    Cc: George Kennedy <[email protected]>
    Cc: stable <[email protected]>
    Cc: [email protected]
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Cc: Helge Deller <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: "Ville Syrjälä" <[email protected]>
    Cc: Sam Ravnborg <[email protected]>
    Cc: Qianqiang Liu <[email protected]>
    Cc: Shixiong Ou <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: <[email protected]> # v5.9+
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

fbcon: Fix OOB access in font allocation [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Sep 22 15:45:54 2025 +0200

    fbcon: Fix OOB access in font allocation
    
    commit 9b2f5ef00e852f8e8902a4d4f73aeedc60220c12 upstream.
    
    Commit 1a194e6c8e1e ("fbcon: fix integer overflow in fbcon_do_set_font")
    introduced an out-of-bounds access by storing data and allocation sizes
    in the same variable. Restore the old size calculation and use the new
    variable 'alloc_size' for the allocation.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Fixes: 1a194e6c8e1e ("fbcon: fix integer overflow in fbcon_do_set_font")
    Reported-by: Jani Nikula <[email protected]>
    Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15020
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/6201
    Cc: Samasth Norway Ananda <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: George Kennedy <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Cc: Helge Deller <[email protected]>
    Cc: "Ville Syrjälä" <[email protected]>
    Cc: Sam Ravnborg <[email protected]>
    Cc: Qianqiang Liu <[email protected]>
    Cc: Shixiong Ou <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: <[email protected]> # v5.9+
    Cc: Zsolt Kajtar <[email protected]>
    Reviewed-by: Lucas De Marchi <[email protected]>
    Reviewed-by: Qianqiang Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
flexfiles/pNFS: fix NULL checks on result of ff_layout_choose_ds_for_read [+ + +]
Author: Tigran Mkrtchyan <[email protected]>
Date:   Thu Aug 28 16:51:00 2025 +0200

    flexfiles/pNFS: fix NULL checks on result of ff_layout_choose_ds_for_read
    
    [ Upstream commit 5a46d2339a5ae268ede53a221f20433d8ea4f2f9 ]
    
    Recent commit f06bedfa62d5 ("pNFS/flexfiles: don't attempt pnfs on fatal DS
    errors") has changed the error return type of ff_layout_choose_ds_for_read() from
    NULL to an error pointer. However, not all code paths have been updated
    to match the change. Thus, some non-NULL checks will accept error pointers
    as a valid return value.
    
    Reported-by: Dan Carpenter <[email protected]>
    Suggested-by: Dan Carpenter <[email protected]>
    Fixes: f06bedfa62d5 ("pNFS/flexfiles: don't attempt pnfs on fatal DS errors")
    Signed-off-by: Tigran Mkrtchyan <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fuse: check if copy_file_range() returns larger than requested size [+ + +]
Author: Miklos Szeredi <[email protected]>
Date:   Tue Aug 12 14:07:54 2025 +0200

    fuse: check if copy_file_range() returns larger than requested size
    
    commit e5203209b3935041dac541bc5b37efb44220cc0b upstream.
    
    Just like write(), copy_file_range() should check if the return value is
    less or equal to the requested number of bytes.
    
    Reported-by: Chunsheng Luo <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: 88bc7d5097a1 ("fuse: add support for copy_file_range()")
    Cc: <[email protected]> # v4.20
    Signed-off-by: Miklos Szeredi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

fuse: prevent overflow in copy_file_range return value [+ + +]
Author: Miklos Szeredi <[email protected]>
Date:   Tue Aug 12 14:46:34 2025 +0200

    fuse: prevent overflow in copy_file_range return value
    
    commit 1e08938c3694f707bb165535df352ac97a8c75c9 upstream.
    
    The FUSE protocol uses struct fuse_write_out to convey the return value of
    copy_file_range, which is restricted to uint32_t.  But the COPY_FILE_RANGE
    interface supports a 64-bit size copies.
    
    Currently the number of bytes copied is silently truncated to 32-bit, which
    may result in poor performance or even failure to copy in case of
    truncation to zero.
    
    Reported-by: Florian Weimer <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: 88bc7d5097a1 ("fuse: add support for copy_file_range()")
    Cc: <[email protected]> # v4.20
    Signed-off-by: Miklos Szeredi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
genirq: Provide new interfaces for affinity hints [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Fri Sep 3 11:24:17 2021 -0400

    genirq: Provide new interfaces for affinity hints
    
    [ Upstream commit 65c7cdedeb3026fabcc967a7aae2f755ad4d0783 ]
    
    The discussion about removing the side effect of irq_set_affinity_hint() of
    actually applying the cpumask (if not NULL) as affinity to the interrupt,
    unearthed a few unpleasantries:
    
      1) The modular perf drivers rely on the current behaviour for the very
         wrong reasons.
    
      2) While none of the other drivers prevents user space from changing
         the affinity, a cursorily inspection shows that there are at least
         expectations in some drivers.
    
    #1 needs to be cleaned up anyway, so that's not a problem
    
    #2 might result in subtle regressions especially when irqbalanced (which
       nowadays ignores the affinity hint) is disabled.
    
    Provide new interfaces:
    
      irq_update_affinity_hint()  - Only sets the affinity hint pointer
      irq_set_affinity_and_hint() - Set the pointer and apply the affinity to
                                    the interrupt
    
    Make irq_set_affinity_hint() a wrapper around irq_apply_affinity_hint() and
    document it to be phased out.
    
    Signed-off-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Nitesh Narayan Lal <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 915470e1b44e ("i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path")
    Signed-off-by: Sasha Levin <[email protected]>

 
hrtimer: Remove unused function [+ + +]
Author: Jiapeng Chong <[email protected]>
Date:   Fri Mar 22 15:04:41 2024 +0800

    hrtimer: Remove unused function
    
    [ Upstream commit 82ccdf062a64f3c4ac575c16179ce68edbbbe8e4 ]
    
    The function is defined, but not called anywhere:
    
      kernel/time/hrtimer.c:1880:20: warning: unused function '__hrtimer_peek_ahead_timers'.
    
    Remove it.
    
    Reported-by: Abaci Robot <[email protected]>
    Signed-off-by: Jiapeng Chong <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=8611
    Stable-dep-of: e895f8e29119 ("hrtimers: Unconditionally update target CPU base after offline timer migration")
    Signed-off-by: Sasha Levin <[email protected]>

hrtimer: Rename __hrtimer_hres_active() to hrtimer_hres_active() [+ + +]
Author: Jiapeng Chong <[email protected]>
Date:   Thu Apr 18 10:30:00 2024 +0800

    hrtimer: Rename __hrtimer_hres_active() to hrtimer_hres_active()
    
    [ Upstream commit b7c8e1f8a7b4352c1d0b4310686385e3cf6c104a ]
    
    The function hrtimer_hres_active() are defined in the hrtimer.c file, but
    not called elsewhere, so rename __hrtimer_hres_active() to
    hrtimer_hres_active() and remove the old hrtimer_hres_active() function.
    
    kernel/time/hrtimer.c:653:19: warning: unused function 'hrtimer_hres_active'.
    
    Fixes: 82ccdf062a64 ("hrtimer: Remove unused function")
    Reported-by: Abaci Robot <[email protected]>
    Signed-off-by: Jiapeng Chong <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=8778
    Stable-dep-of: e895f8e29119 ("hrtimers: Unconditionally update target CPU base after offline timer migration")
    Signed-off-by: Sasha Levin <[email protected]>

 
hrtimers: Unconditionally update target CPU base after offline timer migration [+ + +]
Author: Xiongfeng Wang <[email protected]>
Date:   Tue Aug 5 16:10:25 2025 +0800

    hrtimers: Unconditionally update target CPU base after offline timer migration
    
    [ Upstream commit e895f8e29119c8c966ea794af9e9100b10becb88 ]
    
    When testing softirq based hrtimers on an ARM32 board, with high resolution
    mode and NOHZ inactive, softirq based hrtimers fail to expire after being
    moved away from an offline CPU:
    
    CPU0                            CPU1
                                    hrtimer_start(..., HRTIMER_MODE_SOFT);
    cpu_down(CPU1)                  ...
                                    hrtimers_cpu_dying()
                                      // Migrate timers to CPU0
                                      smp_call_function_single(CPU0, returgger_next_event);
      retrigger_next_event()
        if (!highres && !nohz)
            return;
    
    As retrigger_next_event() is a NOOP when both high resolution timers and
    NOHZ are inactive CPU0's hrtimer_cpu_base::softirq_expires_next is not
    updated and the migrated softirq timers never expire unless there is a
    softirq based hrtimer queued on CPU0 later.
    
    Fix this by removing the hrtimer_hres_active() and tick_nohz_active() check
    in retrigger_next_event(), which enforces a full update of the CPU base.
    As this is not a fast path the extra cost does not matter.
    
    [ tglx: Massaged change log ]
    
    Fixes: 5c0930ccaad5 ("hrtimers: Push pending hrtimers away from outgoing CPU earlier")
    Co-developed-by: Frederic Weisbecker <[email protected]>
    Signed-off-by: Frederic Weisbecker <[email protected]>
    Signed-off-by: Xiongfeng Wang <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Fri Sep 5 09:15:32 2025 +0000

    hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr
    
    [ Upstream commit 393c841fe4333cdd856d0ca37b066d72746cfaa6 ]
    
    hsr_port_get_hsr() iterates over ports using hsr_for_each_port(),
    but many of its callers do not hold the required RCU lock.
    
    Switch to hsr_for_each_port_rtnl(), since most callers already hold
    the rtnl lock. After review, all callers are covered by either the rtnl
    lock or the RCU lock, except hsr_dev_xmit(). Fix this by adding an
    RCU read lock there.
    
    Fixes: c5a759117210 ("net/hsr: Use list_head (and rcu) instead of array for slave devices.")
    Signed-off-by: Hangbin Liu <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hsr: use rtnl lock when iterating over ports [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Fri Sep 5 09:15:31 2025 +0000

    hsr: use rtnl lock when iterating over ports
    
    [ Upstream commit 8884c693991333ae065830554b9b0c96590b1bb2 ]
    
    hsr_for_each_port is called in many places without holding the RCU read
    lock, this may trigger warnings on debug kernels. Most of the callers
    are actually hold rtnl lock. So add a new helper hsr_for_each_port_rtnl
    to allow callers in suitable contexts to iterate ports safely without
    explicit RCU locking.
    
    This patch only fixed the callers that is hold rtnl lock. Other caller
    issues will be fixed in later patches.
    
    Fixes: c5a759117210 ("net/hsr: Use list_head (and rcu) instead of array for slave devices.")
    Signed-off-by: Hangbin Liu <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i40e: add mask to apply valid bits for itr_idx [+ + +]
Author: Lukasz Czapnik <[email protected]>
Date:   Wed Aug 13 12:45:17 2025 +0200

    i40e: add mask to apply valid bits for itr_idx
    
    commit eac04428abe9f9cb203ffae4600791ea1d24eb18 upstream.
    
    The ITR index (itr_idx) is only 2 bits wide. When constructing the
    register value for QINT_RQCTL, all fields are ORed together. Without
    masking, higher bits from itr_idx may overwrite adjacent fields in the
    register.
    
    Apply I40E_QINT_RQCTL_ITR_INDX_MASK to ensure only the intended bits are
    set.
    
    Fixes: 5c3c48ac6bf5 ("i40e: implement virtual device interface")
    Cc: [email protected]
    Signed-off-by: Lukasz Czapnik <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: add max boundary check for VF filters [+ + +]
Author: Lukasz Czapnik <[email protected]>
Date:   Wed Aug 13 12:45:16 2025 +0200

    i40e: add max boundary check for VF filters
    
    commit cb79fa7118c150c3c76a327894bb2eb878c02619 upstream.
    
    There is no check for max filters that VF can request. Add it.
    
    Fixes: e284fc280473 ("i40e: Add and delete cloud filter")
    Cc: [email protected]
    Signed-off-by: Lukasz Czapnik <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: add validation for ring_len param [+ + +]
Author: Lukasz Czapnik <[email protected]>
Date:   Mon Sep 29 10:38:50 2025 -0400

    i40e: add validation for ring_len param
    
    [ Upstream commit 55d225670def06b01af2e7a5e0446fbe946289e8 ]
    
    The `ring_len` parameter provided by the virtual function (VF)
    is assigned directly to the hardware memory context (HMC) without
    any validation.
    
    To address this, introduce an upper boundary check for both Tx and Rx
    queue lengths. The maximum number of descriptors supported by the
    hardware is 8k-32.
    Additionally, enforce alignment constraints: Tx rings must be a multiple
    of 8, and Rx rings must be a multiple of 32.
    
    Fixes: 5c3c48ac6bf5 ("i40e: implement virtual device interface")
    Cc: [email protected]
    Signed-off-by: Lukasz Czapnik <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: fix idx validation in config queues msg [+ + +]
Author: Lukasz Czapnik <[email protected]>
Date:   Mon Sep 29 10:46:03 2025 -0400

    i40e: fix idx validation in config queues msg
    
    [ Upstream commit f1ad24c5abe1eaef69158bac1405a74b3c365115 ]
    
    Ensure idx is within range of active/initialized TCs when iterating over
    vf->ch[idx] in i40e_vc_config_queues_msg().
    
    Fixes: c27eac48160d ("i40e: Enable ADq and create queue channel/s on VF")
    Cc: [email protected]
    Signed-off-by: Lukasz Czapnik <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Kamakshi Nellore <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: fix idx validation in i40e_validate_queue_map [+ + +]
Author: Lukasz Czapnik <[email protected]>
Date:   Wed Aug 13 12:45:12 2025 +0200

    i40e: fix idx validation in i40e_validate_queue_map
    
    commit aa68d3c3ac8d1dcec40d52ae27e39f6d32207009 upstream.
    
    Ensure idx is within range of active/initialized TCs when iterating over
    vf->ch[idx] in i40e_validate_queue_map().
    
    Fixes: c27eac48160d ("i40e: Enable ADq and create queue channel/s on VF")
    Cc: [email protected]
    Signed-off-by: Lukasz Czapnik <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Kamakshi Nellore <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: fix input validation logic for action_meta [+ + +]
Author: Lukasz Czapnik <[email protected]>
Date:   Wed Aug 13 12:45:14 2025 +0200

    i40e: fix input validation logic for action_meta
    
    commit 9739d5830497812b0bdeaee356ddefbe60830b88 upstream.
    
    Fix condition to check 'greater or equal' to prevent OOB dereference.
    
    Fixes: e284fc280473 ("i40e: Add and delete cloud filter")
    Cc: [email protected]
    Signed-off-by: Lukasz Czapnik <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path [+ + +]
Author: Michal Schmidt <[email protected]>
Date:   Mon Aug 18 17:39:03 2025 +0200

    i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path
    
    [ Upstream commit 915470e1b44e71d1dd07ee067276f003c3521ee3 ]
    
    If request_irq() in i40e_vsi_request_irq_msix() fails in an iteration
    later than the first, the error path wants to free the IRQs requested
    so far. However, it uses the wrong dev_id argument for free_irq(), so
    it does not free the IRQs correctly and instead triggers the warning:
    
     Trying to free already-free IRQ 173
     WARNING: CPU: 25 PID: 1091 at kernel/irq/manage.c:1829 __free_irq+0x192/0x2c0
     Modules linked in: i40e(+) [...]
     CPU: 25 UID: 0 PID: 1091 Comm: NetworkManager Not tainted 6.17.0-rc1+ #1 PREEMPT(lazy)
     Hardware name: [...]
     RIP: 0010:__free_irq+0x192/0x2c0
     [...]
     Call Trace:
      <TASK>
      free_irq+0x32/0x70
      i40e_vsi_request_irq_msix.cold+0x63/0x8b [i40e]
      i40e_vsi_request_irq+0x79/0x80 [i40e]
      i40e_vsi_open+0x21f/0x2f0 [i40e]
      i40e_open+0x63/0x130 [i40e]
      __dev_open+0xfc/0x210
      __dev_change_flags+0x1fc/0x240
      netif_change_flags+0x27/0x70
      do_setlink.isra.0+0x341/0xc70
      rtnl_newlink+0x468/0x860
      rtnetlink_rcv_msg+0x375/0x450
      netlink_rcv_skb+0x5c/0x110
      netlink_unicast+0x288/0x3c0
      netlink_sendmsg+0x20d/0x430
      ____sys_sendmsg+0x3a2/0x3d0
      ___sys_sendmsg+0x99/0xe0
      __sys_sendmsg+0x8a/0xf0
      do_syscall_64+0x82/0x2c0
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
      [...]
      </TASK>
     ---[ end trace 0000000000000000 ]---
    
    Use the same dev_id for free_irq() as for request_irq().
    
    I tested this with inserting code to fail intentionally.
    
    Fixes: 493fb30011b3 ("i40e: Move q_vectors from pointer to array to array of pointers")
    Signed-off-by: Michal Schmidt <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Reviewed-by: Subbaraya Sundeep <[email protected]>
    Tested-by: Rinitha S <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i40e: fix validation of VF state in get resources [+ + +]
Author: Lukasz Czapnik <[email protected]>
Date:   Mon Sep 29 10:53:57 2025 -0400

    i40e: fix validation of VF state in get resources
    
    [ Upstream commit 877b7e6ffc23766448236e8732254534c518ba42 ]
    
    VF state I40E_VF_STATE_ACTIVE is not the only state in which
    VF is actually active so it should not be used to determine
    if a VF is allowed to obtain resources.
    
    Use I40E_VF_STATE_RESOURCES_LOADED that is set only in
    i40e_vc_get_vf_resources_msg() and cleared during reset.
    
    Fixes: 61125b8be85d ("i40e: Fix failed opcode appearing if handling messages from VF")
    Cc: [email protected]
    Signed-off-by: Lukasz Czapnik <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: increase max descriptors for XL710 [+ + +]
Author: Justin Bronder <[email protected]>
Date:   Mon Sep 29 10:38:49 2025 -0400

    i40e: increase max descriptors for XL710
    
    [ Upstream commit aa6908ca3bd1e713fd6cd8d7193a008f060bf7d9 ]
    
    In Tables 8-12 and 8-22 in the X710/XXV710/XL710 datasheet, the QLEN
    description states that the maximum size of the descriptor queue is 8k
    minus 32, or 8160.
    
    Signed-off-by: Justin Bronder <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Tested-by: Pucha Himasekhar Reddy <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 55d225670def ("i40e: add validation for ring_len param")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i40e: remove redundant memory barrier when cleaning Tx descs [+ + +]
Author: Maciej Fijalkowski <[email protected]>
Date:   Fri Aug 22 17:16:17 2025 +0200

    i40e: remove redundant memory barrier when cleaning Tx descs
    
    [ Upstream commit e37084a26070c546ae7961ee135bbfb15fbe13fd ]
    
    i40e has a feature which writes to memory location last descriptor
    successfully sent. Memory barrier in i40e_clean_tx_irq() was used to
    avoid forward-reading descriptor fields in case DD bit was not set.
    Having mentioned feature in place implies that such situation will not
    happen as we know in advance how many descriptors HW has dealt with.
    
    Besides, this barrier placement was wrong. Idea is to have this
    protection *after* reading DD bit from HW descriptor, not before.
    Digging through git history showed me that indeed barrier was before DD
    bit check, anyways the commit introducing i40e_get_head() should have
    wiped it out altogether.
    
    Also, there was one commit doing s/read_barrier_depends/smp_rmb when get
    head feature was already in place, but it was only theoretical based on
    ixgbe experiences, which is different in these terms as that driver has
    to read DD bit from HW descriptor.
    
    Fixes: 1943d8ba9507 ("i40e/i40evf: enable hardware feature head write back")
    Signed-off-by: Maciej Fijalkowski <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Tested-by: Rinitha S <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i40e: Use irq_update_affinity_hint() [+ + +]
Author: Nitesh Narayan Lal <[email protected]>
Date:   Fri Sep 3 11:24:19 2021 -0400

    i40e: Use irq_update_affinity_hint()
    
    [ Upstream commit d34c54d1739c2cdf2e4437b74e6da269147f4987 ]
    
    The driver uses irq_set_affinity_hint() for two purposes:
    
     - To set the affinity_hint which is consumed by the userspace for
       distributing the interrupts
    
     - To apply an affinity that it provides for the i40e interrupts
    
    The latter is done to ensure that all the interrupts are evenly spread
    across all available CPUs. However, since commit a0c9259dc4e1 ("irq/matrix:
    Spread interrupts on allocation") the spreading of interrupts is
    dynamically performed at the time of allocation. Hence, there is no need
    for the drivers to enforce their own affinity for the spreading of
    interrupts.
    
    Also, irq_set_affinity_hint() applying the provided cpumask as an affinity
    for the interrupt is an undocumented side effect. To remove this side
    effect irq_set_affinity_hint() has been marked as deprecated and new
    interfaces have been introduced. Hence, replace the irq_set_affinity_hint()
    with the new interface irq_update_affinity_hint() that only sets the
    pointer for the affinity_hint.
    
    Signed-off-by: Nitesh Narayan Lal <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Acked-by: Jesse Brandeburg <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 915470e1b44e ("i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path")
    Signed-off-by: Sasha Levin <[email protected]>

 
IB/mlx5: Fix obj_type mismatch for SRQ event subscriptions [+ + +]
Author: Or Har-Toov <[email protected]>
Date:   Wed Aug 13 15:43:20 2025 +0300

    IB/mlx5: Fix obj_type mismatch for SRQ event subscriptions
    
    [ Upstream commit 85fe9f565d2d5af95ac2bbaa5082b8ce62b039f5 ]
    
    Fix a bug where the driver's event subscription logic for SRQ-related
    events incorrectly sets obj_type for RMP objects.
    
    When subscribing to SRQ events, get_legacy_obj_type() did not handle
    the MLX5_CMD_OP_CREATE_RMP case, which caused obj_type to be 0
    (default).
    This led to a mismatch between the obj_type used during subscription
    (0) and the value used during notification (1, taken from the event's
    type field). As a result, event mapping for SRQ objects could fail and
    event notification would not be delivered correctly.
    
    This fix adds handling for MLX5_CMD_OP_CREATE_RMP in get_legacy_obj_type,
    returning MLX5_EVENT_QUEUE_TYPE_RQ so obj_type is consistent between
    subscription and notification.
    
    Fixes: 759738537142 ("IB/mlx5: Enable subscription for device events over DEVX")
    Link: https://patch.msgid.link/r/8f1048e3fdd1fde6b90607ce0ed251afaf8a148c.1755088962.git.leon@kernel.org
    Signed-off-by: Or Har-Toov <[email protected]>
    Reviewed-by: Edward Srouji <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
igb: fix link test skipping when interface is admin down [+ + +]
Author: Kohei Enju <[email protected]>
Date:   Fri Aug 15 15:26:31 2025 +0900

    igb: fix link test skipping when interface is admin down
    
    [ Upstream commit d709f178abca22a4d3642513df29afe4323a594b ]
    
    The igb driver incorrectly skips the link test when the network
    interface is admin down (if_running == false), causing the test to
    always report PASS regardless of the actual physical link state.
    
    This behavior is inconsistent with other drivers (e.g. i40e, ice, ixgbe,
    etc.) which correctly test the physical link state regardless of admin
    state.
    Remove the if_running check to ensure link test always reflects the
    physical link state.
    
    Fixes: 8d420a1b3ea6 ("igb: correct link test not being run when link is down")
    Signed-off-by: Kohei Enju <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Tested-by: Rinitha S <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Input: i8042 - add TUXEDO InfinityBook Pro Gen10 AMD to i8042 quirk table [+ + +]
Author: Christoffer Sandberg <[email protected]>
Date:   Tue Aug 26 16:26:06 2025 +0200

    Input: i8042 - add TUXEDO InfinityBook Pro Gen10 AMD to i8042 quirk table
    
    commit 1939a9fcb80353dd8b111aa1e79c691afbde08b4 upstream.
    
    Occasionally wakes up from suspend with missing input on the internal
    keyboard. Setting the quirks appears to fix the issue for this device as
    well.
    
    Signed-off-by: Christoffer Sandberg <[email protected]>
    Signed-off-by: Werner Sembach <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ksmbd: smbdirect: validate data_offset and data_length field of smb_direct_data_transfer [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Sun Sep 21 11:00:33 2025 -0400

    ksmbd: smbdirect: validate data_offset and data_length field of smb_direct_data_transfer
    
    [ Upstream commit 5282491fc49d5614ac6ddcd012e5743eecb6a67c ]
    
    If data_offset and data_length of smb_direct_data_transfer struct are
    invalid, out of bounds issue could happen.
    This patch validate data_offset and data_length field in recv_done.
    
    Cc: [email protected]
    Fixes: 2ea086e35c3d ("ksmbd: add buffer validation for smb direct")
    Reviewed-by: Stefan Metzmacher <[email protected]>
    Reported-by: Luigino Camastra, Aisle Research <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    [ Applied to fs/ksmbd/transport_rdma.c instead of fs/smb/server/transport_rdma.c ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kunit: kasan_test: disable fortify string checker on kasan_strings() test [+ + +]
Author: Yeoreum Yun <[email protected]>
Date:   Fri Aug 1 13:02:36 2025 +0100

    kunit: kasan_test: disable fortify string checker on kasan_strings() test
    
    commit 7a19afee6fb39df63ddea7ce78976d8c521178c6 upstream.
    
    Similar to commit 09c6304e38e4 ("kasan: test: fix compatibility with
    FORTIFY_SOURCE") the kernel is panicing in kasan_string().
    
    This is due to the `src` and `ptr` not being hidden from the optimizer
    which would disable the runtime fortify string checker.
    
    Call trace:
      __fortify_panic+0x10/0x20 (P)
      kasan_strings+0x980/0x9b0
      kunit_try_run_case+0x68/0x190
      kunit_generic_run_threadfn_adapter+0x34/0x68
      kthread+0x1c4/0x228
      ret_from_fork+0x10/0x20
     Code: d503233f a9bf7bfd 910003fd 9424b243 (d4210000)
     ---[ end trace 0000000000000000 ]---
     note: kunit_try_catch[128] exited with irqs disabled
     note: kunit_try_catch[128] exited with preempt_count 1
         # kasan_strings: try faulted: last
    ** replaying previous printk message **
         # kasan_strings: try faulted: last line seen mm/kasan/kasan_test_c.c:1600
         # kasan_strings: internal error occurred preventing test case from running: -4
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 73228c7ecc5e ("KASAN: port KASAN Tests to KUnit")
    Signed-off-by: Yeoreum Yun <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Andrey Konovalov <[email protected]>
    Cc: Andrey Ryabinin <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Vincenzo Frascino <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Yeoreum Yun <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
KVM: SVM: Return TSA_SQ_NO and TSA_L1_NO bits in __do_cpuid_func() [+ + +]
Author: Boris Ostrovsky <[email protected]>
Date:   Tue Sep 9 20:28:25 2025 -0400

    KVM: SVM: Return TSA_SQ_NO and TSA_L1_NO bits in __do_cpuid_func()
    
    Commit c334ae4a545a ("KVM: SVM: Advertise TSA CPUID bits to guests")
    set VERW_CLEAR, TSA_SQ_NO and TSA_L1_NO kvm_caps bits that are
    supposed to be provided to guest when it requests CPUID 0x80000021.
    However, the latter two (in the %ecx register) are instead returned as
    zeroes in __do_cpuid_func().
    
    Return values of TSA_SQ_NO and TSA_L1_NO as set in the kvm_cpu_caps.
    
    This fix is stable-only.
    
    Cc: <[email protected]> # 5.15.y
    Fixes: c334ae4a545a ("KVM: SVM: Advertise TSA CPUID bits to guests")
    Signed-off-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: SVM: Set synthesized TSA CPUID flags [+ + +]
Author: Borislav Petkov (AMD) <[email protected]>
Date:   Tue Sep 9 20:28:26 2025 -0400

    KVM: SVM: Set synthesized TSA CPUID flags
    
    Commit f3f9deccfc68a6b7c8c1cc51e902edba23d309d4 LTS
    
    VERW_CLEAR is supposed to be set only by the hypervisor to denote TSA
    mitigation support to a guest. SQ_NO and L1_NO are both synthesizable,
    and are going to be set by hw CPUID on future machines.
    
    So keep the kvm_cpu_cap_init_kvm_defined() invocation *and* set them
    when synthesized.
    
    This fix is stable-only.
    
    Co-developed-by: Jinpu Wang <[email protected]>
    Signed-off-by: Jinpu Wang <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Cc: <[email protected]> # 5.15.y
    Signed-off-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: SVM: Sync TPR from LAPIC into VMCB::V_TPR even if AVIC is active [+ + +]
Author: Maciej S. Szmigiero <[email protected]>
Date:   Mon Aug 25 18:44:28 2025 +0200

    KVM: SVM: Sync TPR from LAPIC into VMCB::V_TPR even if AVIC is active
    
    commit d02e48830e3fce9701265f6c5a58d9bdaf906a76 upstream.
    
    Commit 3bbf3565f48c ("svm: Do not intercept CR8 when enable AVIC")
    inhibited pre-VMRUN sync of TPR from LAPIC into VMCB::V_TPR in
    sync_lapic_to_cr8() when AVIC is active.
    
    AVIC does automatically sync between these two fields, however it does
    so only on explicit guest writes to one of these fields, not on a bare
    VMRUN.
    
    This meant that when AVIC is enabled host changes to TPR in the LAPIC
    state might not get automatically copied into the V_TPR field of VMCB.
    
    This is especially true when it is the userspace setting LAPIC state via
    KVM_SET_LAPIC ioctl() since userspace does not have access to the guest
    VMCB.
    
    Practice shows that it is the V_TPR that is actually used by the AVIC to
    decide whether to issue pending interrupts to the CPU (not TPR in TASKPRI),
    so any leftover value in V_TPR will cause serious interrupt delivery issues
    in the guest when AVIC is enabled.
    
    Fix this issue by doing pre-VMRUN TPR sync from LAPIC into VMCB::V_TPR
    even when AVIC is enabled.
    
    Fixes: 3bbf3565f48c ("svm: Do not intercept CR8 when enable AVIC")
    Cc: [email protected]
    Signed-off-by: Maciej S. Szmigiero <[email protected]>
    Reviewed-by: Naveen N Rao (AMD) <[email protected]>
    Link: https://lore.kernel.org/r/c231be64280b1461e854e1ce3595d70cde3a2e9d.1756139678.git.maciej.szmigiero@oracle.com
    [sean: tag for stable@]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

KVM: x86: Move open-coded CPUID leaf 0x80000021 EAX bit propagation code [+ + +]
Author: Kim Phillips <[email protected]>
Date:   Tue Sep 9 20:28:24 2025 -0400

    KVM: x86: Move open-coded CPUID leaf 0x80000021 EAX bit propagation code
    
    Commit c35ac8c4bf600ee23bacb20f863aa7830efb23fb upstream
    
    Move code from __do_cpuid_func() to kvm_set_cpu_caps() in preparation for adding
    the features in their native leaf.
    
    Also drop the bit description comments as it will be more self-describing once
    the individual features are added.
    
    Whilst there, switch to using the more efficient cpu_feature_enabled() instead
    of static_cpu_has().
    
    Note, LFENCE_RDTSC and "NULL selector clears base" are currently synthetic,
    Linux-defined feature flags as Linux tracking of the features predates AMD's
    definition.  Keep the manual propagation of the flags from their synthetic
    counterparts until the kernel fully converts to AMD's definition, otherwise KVM
    would stop synthesizing the flags as intended.
    
    Signed-off-by: Kim Phillips <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Acked-by: Sean Christopherson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    
    Move setting of VERW_CLEAR bit to the new
    kvm_cpu_cap_mask(CPUID_8000_0021_EAX, ...) site.
    
    Cc: <[email protected]> # 5.15.y
    Signed-off-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
libceph: fix invalid accesses to ceph_connection_v1_info [+ + +]
Author: Ilya Dryomov <[email protected]>
Date:   Thu Jul 3 12:10:50 2025 +0200

    libceph: fix invalid accesses to ceph_connection_v1_info
    
    commit cdbc9836c7afadad68f374791738f118263c5371 upstream.
    
    There is a place where generic code in messenger.c is reading and
    another place where it is writing to con->v1 union member without
    checking that the union member is active (i.e. msgr1 is in use).
    
    On 64-bit systems, con->v1.auth_retry overlaps with con->v2.out_iter,
    so such a read is almost guaranteed to return a bogus value instead of
    0 when msgr2 is in use.  This ends up being fairly benign because the
    side effect is just the invalidation of the authorizer and successive
    fetching of new tickets.
    
    con->v1.connect_seq overlaps with con->v2.conn_bufs and the fact that
    it's being written to can cause more serious consequences, but luckily
    it's not something that happens often.
    
    Cc: [email protected]
    Fixes: cd1a677cad99 ("libceph, ceph: implement msgr2.1 protocol (crc and secure modes)")
    Signed-off-by: Ilya Dryomov <[email protected]>
    Reviewed-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Linux 5.15.194 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Oct 2 13:39:15 2025 +0200

    Linux 5.15.194
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Vijayendra Suman <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
media: i2c: imx214: Fix link frequency validation [+ + +]
Author: André Apitzsch <[email protected]>
Date:   Mon Sep 8 16:46:50 2025 -0400

    media: i2c: imx214: Fix link frequency validation
    
    [ Upstream commit acc294519f1749041e1b8c74d46bbf6c57d8b061 ]
    
    The driver defines IMX214_DEFAULT_LINK_FREQ 480000000, and then
    IMX214_DEFAULT_PIXEL_RATE ((IMX214_DEFAULT_LINK_FREQ * 8LL) / 10),
    which works out as 384MPix/s. (The 8 is 4 lanes and DDR.)
    
    Parsing the PLL registers with the defined 24MHz input. We're in single
    PLL mode, so MIPI frequency is directly linked to pixel rate.  VTCK ends
    up being 1200MHz, and VTPXCK and OPPXCK both are 120MHz.  Section 5.3
    "Frame rate calculation formula" says "Pixel rate
    [pixels/s] = VTPXCK [MHz] * 4", so 120 * 4 = 480MPix/s, which basically
    agrees with my number above.
    
    3.1.4. MIPI global timing setting says "Output bitrate = OPPXCK * reg
    0x113[7:0]", so 120MHz * 10, or 1200Mbit/s. That would be a link
    frequency of 600MHz due to DDR.
    That also matches to 480MPix/s * 10bpp / 4 lanes / 2 for DDR.
    
    Keep the previous link frequency for backward compatibility.
    
    Acked-by: Ricardo Ribalda <[email protected]>
    Signed-off-by: André Apitzsch <[email protected]>
    Fixes: 436190596241 ("media: imx214: Add imx214 camera sensor driver")
    Cc: [email protected]
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [ changed dev_err() to dev_err_probe() for the final error case ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: mtk-vcodec: venc: avoid -Wenum-compare-conditional warning [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Mon Sep 8 17:10:54 2025 -0400

    media: mtk-vcodec: venc: avoid -Wenum-compare-conditional warning
    
    [ Upstream commit 07df4f23ef3ffe6fee697cd2e03623ad27108843 ]
    
    This is one of three clang warnings about incompatible enum types
    in a conditional expression:
    
    drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c:597:29: error: conditional expression between different enumeration types ('enum scp_ipi_id' and 'enum ipi_id') [-Werror,-Wenum-compare-conditional]
      597 |         inst->vpu_inst.id = is_ext ? SCP_IPI_VENC_H264 : IPI_VENC_H264;
          |                                    ^ ~~~~~~~~~~~~~~~~~   ~~~~~~~~~~~~~
    
    The code is correct, so just rework it to avoid the warning.
    
    Fixes: 0dc4b3286125 ("media: mtk-vcodec: venc: support SCP firmware")
    Cc: [email protected]
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Nathan Chancellor <[email protected]>
    Reviewed-by: Alexandre Courbot <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [ Adapted file path ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/hugetlb: fix folio is still mapped when deleted [+ + +]
Author: Jinjiang Tu <[email protected]>
Date:   Mon Sep 29 15:44:23 2025 -0400

    mm/hugetlb: fix folio is still mapped when deleted
    
    [ Upstream commit 7b7387650dcf2881fd8bb55bcf3c8bd6c9542dd7 ]
    
    Migration may be raced with fallocating hole.  remove_inode_single_folio
    will unmap the folio if the folio is still mapped.  However, it's called
    without folio lock.  If the folio is migrated and the mapped pte has been
    converted to migration entry, folio_mapped() returns false, and won't
    unmap it.  Due to extra refcount held by remove_inode_single_folio,
    migration fails, restores migration entry to normal pte, and the folio is
    mapped again.  As a result, we triggered BUG in filemap_unaccount_folio.
    
    The log is as follows:
     BUG: Bad page cache in process hugetlb  pfn:156c00
     page: refcount:515 mapcount:0 mapping:0000000099fef6e1 index:0x0 pfn:0x156c00
     head: order:9 mapcount:1 entire_mapcount:1 nr_pages_mapped:0 pincount:0
     aops:hugetlbfs_aops ino:dcc dentry name(?):"my_hugepage_file"
     flags: 0x17ffffc00000c1(locked|waiters|head|node=0|zone=2|lastcpupid=0x1fffff)
     page_type: f4(hugetlb)
     page dumped because: still mapped when deleted
     CPU: 1 UID: 0 PID: 395 Comm: hugetlb Not tainted 6.17.0-rc5-00044-g7aac71907bde-dirty #484 NONE
     Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 0.0.0 02/06/2015
     Call Trace:
      <TASK>
      dump_stack_lvl+0x4f/0x70
      filemap_unaccount_folio+0xc4/0x1c0
      __filemap_remove_folio+0x38/0x1c0
      filemap_remove_folio+0x41/0xd0
      remove_inode_hugepages+0x142/0x250
      hugetlbfs_fallocate+0x471/0x5a0
      vfs_fallocate+0x149/0x380
    
    Hold folio lock before checking if the folio is mapped to avold race with
    migration.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 4aae8d1c051e ("mm/hugetlbfs: unmap pages if page fault raced with hole punch")
    Signed-off-by: Jinjiang Tu <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: Kefeng Wang <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Oscar Salvador <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    [ folio -> page ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/khugepaged: fix the address passed to notifier on testing young [+ + +]
Author: Wei Yang <[email protected]>
Date:   Fri Aug 22 06:33:18 2025 +0000

    mm/khugepaged: fix the address passed to notifier on testing young
    
    commit 394bfac1c7f7b701c2c93834c5761b9c9ceeebcf upstream.
    
    Commit 8ee53820edfd ("thp: mmu_notifier_test_young") introduced
    mmu_notifier_test_young(), but we are passing the wrong address.
    In xxx_scan_pmd(), the actual iteration address is "_address" not
    "address".  We seem to misuse the variable on the very beginning.
    
    Change it to the right one.
    
    [[email protected] fix whitespace, per everyone]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 8ee53820edfd ("thp: mmu_notifier_test_young")
    Signed-off-by: Wei Yang <[email protected]>
    Reviewed-by: Dev Jain <[email protected]>
    Reviewed-by: Zi Yan <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Cc: Baolin Wang <[email protected]>
    Cc: Liam R. Howlett <[email protected]>
    Cc: Nico Pache <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Barry Song <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/memory-failure: fix VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory [+ + +]
Author: Miaohe Lin <[email protected]>
Date:   Sun Sep 14 09:12:01 2025 -0400

    mm/memory-failure: fix VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory
    
    [ Upstream commit d613f53c83ec47089c4e25859d5e8e0359f6f8da ]
    
    When I did memory failure tests, below panic occurs:
    
    page dumped because: VM_BUG_ON_PAGE(PagePoisoned(page))
    kernel BUG at include/linux/page-flags.h:616!
    Oops: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
    CPU: 3 PID: 720 Comm: bash Not tainted 6.10.0-rc1-00195-g148743902568 #40
    RIP: 0010:unpoison_memory+0x2f3/0x590
    RSP: 0018:ffffa57fc8787d60 EFLAGS: 00000246
    RAX: 0000000000000037 RBX: 0000000000000009 RCX: ffff9be25fcdc9c8
    RDX: 0000000000000000 RSI: 0000000000000027 RDI: ffff9be25fcdc9c0
    RBP: 0000000000300000 R08: ffffffffb4956f88 R09: 0000000000009ffb
    R10: 0000000000000284 R11: ffffffffb4926fa0 R12: ffffe6b00c000000
    R13: ffff9bdb453dfd00 R14: 0000000000000000 R15: fffffffffffffffe
    FS:  00007f08f04e4740(0000) GS:ffff9be25fcc0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000564787a30410 CR3: 000000010d4e2000 CR4: 00000000000006f0
    Call Trace:
     <TASK>
     unpoison_memory+0x2f3/0x590
     simple_attr_write_xsigned.constprop.0.isra.0+0xb3/0x110
     debugfs_attr_write+0x42/0x60
     full_proxy_write+0x5b/0x80
     vfs_write+0xd5/0x540
     ksys_write+0x64/0xe0
     do_syscall_64+0xb9/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f08f0314887
    RSP: 002b:00007ffece710078 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000000009 RCX: 00007f08f0314887
    RDX: 0000000000000009 RSI: 0000564787a30410 RDI: 0000000000000001
    RBP: 0000564787a30410 R08: 000000000000fefe R09: 000000007fffffff
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000009
    R13: 00007f08f041b780 R14: 00007f08f0417600 R15: 00007f08f0416a00
     </TASK>
    Modules linked in: hwpoison_inject
    ---[ end trace 0000000000000000 ]---
    RIP: 0010:unpoison_memory+0x2f3/0x590
    RSP: 0018:ffffa57fc8787d60 EFLAGS: 00000246
    RAX: 0000000000000037 RBX: 0000000000000009 RCX: ffff9be25fcdc9c8
    RDX: 0000000000000000 RSI: 0000000000000027 RDI: ffff9be25fcdc9c0
    RBP: 0000000000300000 R08: ffffffffb4956f88 R09: 0000000000009ffb
    R10: 0000000000000284 R11: ffffffffb4926fa0 R12: ffffe6b00c000000
    R13: ffff9bdb453dfd00 R14: 0000000000000000 R15: fffffffffffffffe
    FS:  00007f08f04e4740(0000) GS:ffff9be25fcc0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000564787a30410 CR3: 000000010d4e2000 CR4: 00000000000006f0
    Kernel panic - not syncing: Fatal exception
    Kernel Offset: 0x31c00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    ---[ end Kernel panic - not syncing: Fatal exception ]---
    
    The root cause is that unpoison_memory() tries to check the PG_HWPoison
    flags of an uninitialized page.  So VM_BUG_ON_PAGE(PagePoisoned(page)) is
    triggered.  This can be reproduced by below steps:
    
    1.Offline memory block:
    
     echo offline > /sys/devices/system/memory/memory12/state
    
    2.Get offlined memory pfn:
    
     page-types -b n -rlN
    
    3.Write pfn to unpoison-pfn
    
     echo <pfn> > /sys/kernel/debug/hwpoison/unpoison-pfn
    
    This scenario can be identified by pfn_to_online_page() returning NULL.
    And ZONE_DEVICE pages are never expected, so we can simply fail if
    pfn_to_online_page() == NULL to fix the bug.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: f1dd2cd13c4b ("mm, memory_hotplug: do not associate hotadded memory to zones until online")
    Signed-off-by: Miaohe Lin <[email protected]>
    Suggested-by: David Hildenbrand <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Naoya Horiguchi <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize() [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Mon Feb 10 17:13:17 2025 +0100

    mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize()
    
    commit 41cddf83d8b00f29fd105e7a0777366edc69a5cf upstream.
    
    If migration succeeded, we called
    folio_migrate_flags()->mem_cgroup_migrate() to migrate the memcg from the
    old to the new folio.  This will set memcg_data of the old folio to 0.
    
    Similarly, if migration failed, memcg_data of the dst folio is left unset.
    
    If we call folio_putback_lru() on such folios (memcg_data == 0), we will
    add the folio to be freed to the LRU, making memcg code unhappy.  Running
    the hmm selftests:
    
      # ./hmm-tests
      ...
      #  RUN           hmm.hmm_device_private.migrate ...
      [  102.078007][T14893] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x7ff27d200 pfn:0x13cc00
      [  102.079974][T14893] anon flags: 0x17ff00000020018(uptodate|dirty|swapbacked|node=0|zone=2|lastcpupid=0x7ff)
      [  102.082037][T14893] raw: 017ff00000020018 dead000000000100 dead000000000122 ffff8881353896c9
      [  102.083687][T14893] raw: 00000007ff27d200 0000000000000000 00000001ffffffff 0000000000000000
      [  102.085331][T14893] page dumped because: VM_WARN_ON_ONCE_FOLIO(!memcg && !mem_cgroup_disabled())
      [  102.087230][T14893] ------------[ cut here ]------------
      [  102.088279][T14893] WARNING: CPU: 0 PID: 14893 at ./include/linux/memcontrol.h:726 folio_lruvec_lock_irqsave+0x10e/0x170
      [  102.090478][T14893] Modules linked in:
      [  102.091244][T14893] CPU: 0 UID: 0 PID: 14893 Comm: hmm-tests Not tainted 6.13.0-09623-g6c216bc522fd #151
      [  102.093089][T14893] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014
      [  102.094848][T14893] RIP: 0010:folio_lruvec_lock_irqsave+0x10e/0x170
      [  102.096104][T14893] Code: ...
      [  102.099908][T14893] RSP: 0018:ffffc900236c37b0 EFLAGS: 00010293
      [  102.101152][T14893] RAX: 0000000000000000 RBX: ffffea0004f30000 RCX: ffffffff8183f426
      [  102.102684][T14893] RDX: ffff8881063cb880 RSI: ffffffff81b8117f RDI: ffff8881063cb880
      [  102.104227][T14893] RBP: 0000000000000000 R08: 0000000000000005 R09: 0000000000000000
      [  102.105757][T14893] R10: 0000000000000001 R11: 0000000000000002 R12: ffffc900236c37d8
      [  102.107296][T14893] R13: ffff888277a2bcb0 R14: 000000000000001f R15: 0000000000000000
      [  102.108830][T14893] FS:  00007ff27dbdd740(0000) GS:ffff888277a00000(0000) knlGS:0000000000000000
      [  102.110643][T14893] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  102.111924][T14893] CR2: 00007ff27d400000 CR3: 000000010866e000 CR4: 0000000000750ef0
      [  102.113478][T14893] PKRU: 55555554
      [  102.114172][T14893] Call Trace:
      [  102.114805][T14893]  <TASK>
      [  102.115397][T14893]  ? folio_lruvec_lock_irqsave+0x10e/0x170
      [  102.116547][T14893]  ? __warn.cold+0x110/0x210
      [  102.117461][T14893]  ? folio_lruvec_lock_irqsave+0x10e/0x170
      [  102.118667][T14893]  ? report_bug+0x1b9/0x320
      [  102.119571][T14893]  ? handle_bug+0x54/0x90
      [  102.120494][T14893]  ? exc_invalid_op+0x17/0x50
      [  102.121433][T14893]  ? asm_exc_invalid_op+0x1a/0x20
      [  102.122435][T14893]  ? __wake_up_klogd.part.0+0x76/0xd0
      [  102.123506][T14893]  ? dump_page+0x4f/0x60
      [  102.124352][T14893]  ? folio_lruvec_lock_irqsave+0x10e/0x170
      [  102.125500][T14893]  folio_batch_move_lru+0xd4/0x200
      [  102.126577][T14893]  ? __pfx_lru_add+0x10/0x10
      [  102.127505][T14893]  __folio_batch_add_and_move+0x391/0x720
      [  102.128633][T14893]  ? __pfx_lru_add+0x10/0x10
      [  102.129550][T14893]  folio_putback_lru+0x16/0x80
      [  102.130564][T14893]  migrate_device_finalize+0x9b/0x530
      [  102.131640][T14893]  dmirror_migrate_to_device.constprop.0+0x7c5/0xad0
      [  102.133047][T14893]  dmirror_fops_unlocked_ioctl+0x89b/0xc80
    
    Likely, nothing else goes wrong: putting the last folio reference will
    remove the folio from the LRU again.  So besides memcg complaining, adding
    the folio to be freed to the LRU is just an unnecessary step.
    
    The new flow resembles what we have in migrate_folio_move(): add the dst
    to the lru, remove migration ptes, unlock and unref dst.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 8763cb45ab96 ("mm/migrate: new memory migration helper for use with device memory")
    Signed-off-by: David Hildenbrand <[email protected]>
    Cc: Jérôme Glisse <[email protected]>
    Cc: John Hubbard <[email protected]>
    Cc: Alistair Popple <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: David Hildenbrand <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    --
     mm/migrate.c |   12 ++++--------
     1 file changed, 4 insertions(+), 8 deletions(-)

 
mm/rmap: reject hugetlb folios in folio_make_device_exclusive() [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Sun Sep 7 18:26:20 2025 -0400

    mm/rmap: reject hugetlb folios in folio_make_device_exclusive()
    
    [ Upstream commit bc3fe6805cf09a25a086573a17d40e525208c5d8 ]
    
    Even though FOLL_SPLIT_PMD on hugetlb now always fails with -EOPNOTSUPP,
    let's add a safety net in case FOLL_SPLIT_PMD usage would ever be
    reworked.
    
    In particular, before commit 9cb28da54643 ("mm/gup: handle hugetlb in the
    generic follow_page_mask code"), GUP(FOLL_SPLIT_PMD) would just have
    returned a page.  In particular, hugetlb folios that are not PMD-sized
    would never have been prone to FOLL_SPLIT_PMD.
    
    hugetlb folios can be anonymous, and page_make_device_exclusive_one() is
    not really prepared for handling them at all.  So let's spell that out.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: b756a3b5e7ea ("mm: device exclusive memory access")
    Signed-off-by: David Hildenbrand <[email protected]>
    Reviewed-by: Alistair Popple <[email protected]>
    Tested-by: Alistair Popple <[email protected]>
    Cc: Alex Shi <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Dave Airlie <[email protected]>
    Cc: Jann Horn <[email protected]>
    Cc: Jason Gunthorpe <[email protected]>
    Cc: Jerome Glisse <[email protected]>
    Cc: John Hubbard <[email protected]>
    Cc: Jonathan Corbet <[email protected]>
    Cc: Karol Herbst <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Lyude <[email protected]>
    Cc: "Masami Hiramatsu (Google)" <[email protected]>
    Cc: Oleg Nesterov <[email protected]>
    Cc: Pasha Tatashin <[email protected]>
    Cc: Peter Xu <[email protected]>
    Cc: Peter Zijlstra (Intel) <[email protected]>
    Cc: SeongJae Park <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: Yanteng Si <[email protected]>
    Cc: Barry Song <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    [ folio_test_hugetlb() => PageHuge() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: introduce and use {pgd,p4d}_populate_kernel() [+ + +]
Author: Harry Yoo <[email protected]>
Date:   Mon Aug 18 11:02:05 2025 +0900

    mm: introduce and use {pgd,p4d}_populate_kernel()
    
    commit f2d2f9598ebb0158a3fe17cda0106d7752e654a2 upstream.
    
    Introduce and use {pgd,p4d}_populate_kernel() in core MM code when
    populating PGD and P4D entries for the kernel address space.  These
    helpers ensure proper synchronization of page tables when updating the
    kernel portion of top-level page tables.
    
    Until now, the kernel has relied on each architecture to handle
    synchronization of top-level page tables in an ad-hoc manner.  For
    example, see commit 9b861528a801 ("x86-64, mem: Update all PGDs for direct
    mapping and vmemmap mapping changes").
    
    However, this approach has proven fragile for following reasons:
    
      1) It is easy to forget to perform the necessary page table
         synchronization when introducing new changes.
         For instance, commit 4917f55b4ef9 ("mm/sparse-vmemmap: improve memory
         savings for compound devmaps") overlooked the need to synchronize
         page tables for the vmemmap area.
    
      2) It is also easy to overlook that the vmemmap and direct mapping areas
         must not be accessed before explicit page table synchronization.
         For example, commit 8d400913c231 ("x86/vmemmap: handle unpopulated
         sub-pmd ranges")) caused crashes by accessing the vmemmap area
         before calling sync_global_pgds().
    
    To address this, as suggested by Dave Hansen, introduce _kernel() variants
    of the page table population helpers, which invoke architecture-specific
    hooks to properly synchronize page tables.  These are introduced in a new
    header file, include/linux/pgalloc.h, so they can be called from common
    code.
    
    They reuse existing infrastructure for vmalloc and ioremap.
    Synchronization requirements are determined by ARCH_PAGE_TABLE_SYNC_MASK,
    and the actual synchronization is performed by
    arch_sync_kernel_mappings().
    
    This change currently targets only x86_64, so only PGD and P4D level
    helpers are introduced.  Currently, these helpers are no-ops since no
    architecture sets PGTBL_{PGD,P4D}_MODIFIED in ARCH_PAGE_TABLE_SYNC_MASK.
    
    In theory, PUD and PMD level helpers can be added later if needed by other
    architectures.  For now, 32-bit architectures (x86-32 and arm) only handle
    PGTBL_PMD_MODIFIED, so p*d_populate_kernel() will never affect them unless
    we introduce a PMD level helper.
    
    [[email protected]: fix KASAN build error due to p*d_populate_kernel()]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 8d400913c231 ("x86/vmemmap: handle unpopulated sub-pmd ranges")
    Signed-off-by: Harry Yoo <[email protected]>
    Suggested-by: Dave Hansen <[email protected]>
    Acked-by: Kiryl Shutsemau <[email protected]>
    Reviewed-by: Mike Rapoport (Microsoft) <[email protected]>
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Alistair Popple <[email protected]>
    Cc: Andrey Konovalov <[email protected]>
    Cc: Andrey Ryabinin <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: "Aneesh Kumar K.V" <[email protected]>
    Cc: Anshuman Khandual <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: bibo mao <[email protected]>
    Cc: Borislav Betkov <[email protected]>
    Cc: Christoph Lameter (Ampere) <[email protected]>
    Cc: Dennis Zhou <[email protected]>
    Cc: Dev Jain <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Gwan-gyeong Mun <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Jane Chu <[email protected]>
    Cc: Joao Martins <[email protected]>
    Cc: Joerg Roedel <[email protected]>
    Cc: John Hubbard <[email protected]>
    Cc: Kevin Brodsky <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Oscar Salvador <[email protected]>
    Cc: Peter Xu <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Qi Zheng <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: Tejun Heo <[email protected]>
    Cc: Thomas Gleinxer <[email protected]>
    Cc: Thomas Huth <[email protected]>
    Cc: "Uladzislau Rezki (Sony)" <[email protected]>
    Cc: Vincenzo Frascino <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    [ Adjust context. mm/percpu.c is untouched because there is no generic
      pcpu_populate_pte() implementation in 5.15.y ]
    Signed-off-by: Harry Yoo <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mmc: mvsdio: Fix dma_unmap_sg() nents value [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Tue Aug 26 09:58:08 2025 +0200

    mmc: mvsdio: Fix dma_unmap_sg() nents value
    
    commit 8ab2f1c35669bff7d7ed1bb16bf5cc989b3e2e17 upstream.
    
    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: 236caa7cc351 ("mmc: SDIO driver for Marvell SoCs")
    Signed-off-by: Thomas Fourier <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Cc: [email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mptcp: propagate shutdown to subflows when possible [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sun Sep 21 20:56:12 2025 -0400

    mptcp: propagate shutdown to subflows when possible
    
    [ Upstream commit f755be0b1ff429a2ecf709beeb1bcd7abc111c2b ]
    
    When the MPTCP DATA FIN have been ACKed, there is no more MPTCP related
    metadata to exchange, and all subflows can be safely shutdown.
    
    Before this patch, the subflows were actually terminated at 'close()'
    time. That's certainly fine most of the time, but not when the userspace
    'shutdown()' a connection, without close()ing it. When doing so, the
    subflows were staying in LAST_ACK state on one side -- and consequently
    in FIN_WAIT2 on the other side -- until the 'close()' of the MPTCP
    socket.
    
    Now, when the DATA FIN have been ACKed, all subflows are shutdown. A
    consequence of this is that the TCP 'FIN' flag can be set earlier now,
    but the end result is the same. This affects the packetdrill tests
    looking at the end of the MPTCP connections, but for a good reason.
    
    Note that tcp_shutdown() will check the subflow state, so no need to do
    that again before calling it.
    
    Fixes: 3721b9b64676 ("mptcp: Track received DATA_FIN sequence number and add related helpers")
    Cc: [email protected]
    Fixes: 16a9a9da1723 ("mptcp: Add helper to process acks of DATA_FIN")
    Reviewed-by: Mat Martineau <[email protected]>
    Reviewed-by: Geliang Tang <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: set remote_deny_join_id0 on SYN recv [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Sat Sep 20 01:17:44 2025 +0200

    mptcp: set remote_deny_join_id0 on SYN recv
    
    commit 96939cec994070aa5df852c10fad5fc303a97ea3 upstream.
    
    When a SYN containing the 'C' flag (deny join id0) was received, this
    piece of information was not propagated to the path-manager.
    
    Even if this flag is mainly set on the server side, a client can also
    tell the server it cannot try to establish new subflows to the client's
    initial IP address and port. The server's PM should then record such
    info when received, and before sending events about the new connection.
    
    Fixes: df377be38725 ("mptcp: add deny_join_id0 in mptcp_options_received")
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/20250912-net-mptcp-pm-uspace-deny_join_id0-v1-1-40171884ade8@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    [ Conflicts in subflow.c, because of differences in the context, e.g.
      introduced by commit 3a236aef280e ("mptcp: refactor passive socket
      initialization"), which is not in this version. The same lines --
      using 'mptcp_sk(new_msk)' instead of 'owner' -- can still be added
      approximately at the same place, before calling
      mptcp_pm_new_connection(). ]
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: sockopt: make sync_socket_options propagate SOCK_KEEPOPEN [+ + +]
Author: Krister Johansen <[email protected]>
Date:   Mon Sep 8 11:16:01 2025 -0700

    mptcp: sockopt: make sync_socket_options propagate SOCK_KEEPOPEN
    
    commit 648de37416b301f046f62f1b65715c7fa8ebaa67 upstream.
    
    Users reported a scenario where MPTCP connections that were configured
    with SO_KEEPALIVE prior to connect would fail to enable their keepalives
    if MTPCP fell back to TCP mode.
    
    After investigating, this affects keepalives for any connection where
    sync_socket_options is called on a socket that is in the closed or
    listening state.  Joins are handled properly. For connects,
    sync_socket_options is called when the socket is still in the closed
    state.  The tcp_set_keepalive() function does not act on sockets that
    are closed or listening, hence keepalive is not immediately enabled.
    Since the SO_KEEPOPEN flag is absent, it is not enabled later in the
    connect sequence via tcp_finish_connect.  Setting the keepalive via
    sockopt after connect does work, but would not address any subsequently
    created flows.
    
    Fortunately, the fix here is straight-forward: set SOCK_KEEPOPEN on the
    subflow when calling sync_socket_options.
    
    The fix was valdidated both by using tcpdump to observe keepalive
    packets not being sent before the fix, and being sent after the fix.  It
    was also possible to observe via ss that the keepalive timer was not
    enabled on these sockets before the fix, but was enabled afterwards.
    
    Fixes: 1b3e7ede1365 ("mptcp: setsockopt: handle SO_KEEPALIVE and SO_PRIORITY")
    Cc: [email protected]
    Signed-off-by: Krister Johansen <[email protected]>
    Reviewed-by: Geliang Tang <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mtd: nand: raw: atmel: Fix comment in timings preparation [+ + +]
Author: Alexander Dahl <[email protected]>
Date:   Sat Sep 13 11:12:50 2025 -0400

    mtd: nand: raw: atmel: Fix comment in timings preparation
    
    [ Upstream commit 1c60e027ffdebd36f4da766d9c9abbd1ea4dd8f9 ]
    
    Looks like a copy'n'paste mistake introduced when initially adding the
    dynamic timings feature with commit f9ce2eddf176 ("mtd: nand: atmel: Add
    ->setup_data_interface() hooks").  The context around this and
    especially the code itself suggests 'read' is meant instead of write.
    
    Signed-off-by: Alexander Dahl <[email protected]>
    Reviewed-by: Nicolas Ferre <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Link: https://lore.kernel.org/linux-mtd/[email protected]
    Stable-dep-of: fd779eac2d65 ("mtd: nand: raw: atmel: Respect tAR, tCLR in read setup timing")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mtd: nand: raw: atmel: Respect tAR, tCLR in read setup timing [+ + +]
Author: Alexander Sverdlin <[email protected]>
Date:   Sat Sep 13 11:12:51 2025 -0400

    mtd: nand: raw: atmel: Respect tAR, tCLR in read setup timing
    
    [ Upstream commit fd779eac2d659668be4d3dbdac0710afd5d6db12 ]
    
    Having setup time 0 violates tAR, tCLR of some chips, for instance
    TOSHIBA TC58NVG2S3ETAI0 cannot be detected successfully (first ID byte
    being read duplicated, i.e. 98 98 dc 90 15 76 14 03 instead of
    98 dc 90 15 76 ...).
    
    Atmel Application Notes postulated 1 cycle NRD_SETUP without explanation
    [1], but it looks more appropriate to just calculate setup time properly.
    
    [1] Link: https://ww1.microchip.com/downloads/aemDocuments/documents/MPU32/ApplicationNotes/ApplicationNotes/doc6255.pdf
    
    Cc: [email protected]
    Fixes: f9ce2eddf176 ("mtd: nand: atmel: Add ->setup_data_interface() hooks")
    Signed-off-by: Alexander Sverdlin <[email protected]>
    Tested-by: Alexander Dahl <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer [+ + +]
Author: Christophe Kerello <[email protected]>
Date:   Sat Sep 13 11:09:17 2025 -0400

    mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer
    
    [ Upstream commit 513c40e59d5a414ab763a9c84797534b5e8c208d ]
    
    Avoid below overlapping mappings by using a contiguous
    non-cacheable buffer.
    
    [    4.077708] DMA-API: stm32_fmc2_nfc 48810000.nand-controller: cacheline tracking EEXIST,
    overlapping mappings aren't supported
    [    4.089103] WARNING: CPU: 1 PID: 44 at kernel/dma/debug.c:568 add_dma_entry+0x23c/0x300
    [    4.097071] Modules linked in:
    [    4.100101] CPU: 1 PID: 44 Comm: kworker/u4:2 Not tainted 6.1.82 #1
    [    4.106346] Hardware name: STMicroelectronics STM32MP257F VALID1 SNOR / MB1704 (LPDDR4 Power discrete) + MB1703 + MB1708 (SNOR MB1730) (DT)
    [    4.118824] Workqueue: events_unbound deferred_probe_work_func
    [    4.124674] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    4.131624] pc : add_dma_entry+0x23c/0x300
    [    4.135658] lr : add_dma_entry+0x23c/0x300
    [    4.139792] sp : ffff800009dbb490
    [    4.143016] x29: ffff800009dbb4a0 x28: 0000000004008022 x27: ffff8000098a6000
    [    4.150174] x26: 0000000000000000 x25: ffff8000099e7000 x24: ffff8000099e7de8
    [    4.157231] x23: 00000000ffffffff x22: 0000000000000000 x21: ffff8000098a6a20
    [    4.164388] x20: ffff000080964180 x19: ffff800009819ba0 x18: 0000000000000006
    [    4.171545] x17: 6361727420656e69 x16: 6c6568636163203a x15: 72656c6c6f72746e
    [    4.178602] x14: 6f632d646e616e2e x13: ffff800009832f58 x12: 00000000000004ec
    [    4.185759] x11: 00000000000001a4 x10: ffff80000988af58 x9 : ffff800009832f58
    [    4.192916] x8 : 00000000ffffefff x7 : ffff80000988af58 x6 : 80000000fffff000
    [    4.199972] x5 : 000000000000bff4 x4 : 0000000000000000 x3 : 0000000000000000
    [    4.207128] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000812d2c40
    [    4.214185] Call trace:
    [    4.216605]  add_dma_entry+0x23c/0x300
    [    4.220338]  debug_dma_map_sg+0x198/0x350
    [    4.224373]  __dma_map_sg_attrs+0xa0/0x110
    [    4.228411]  dma_map_sg_attrs+0x10/0x2c
    [    4.232247]  stm32_fmc2_nfc_xfer.isra.0+0x1c8/0x3fc
    [    4.237088]  stm32_fmc2_nfc_seq_read_page+0xc8/0x174
    [    4.242127]  nand_read_oob+0x1d4/0x8e0
    [    4.245861]  mtd_read_oob_std+0x58/0x84
    [    4.249596]  mtd_read_oob+0x90/0x150
    [    4.253231]  mtd_read+0x68/0xac
    
    Signed-off-by: Christophe Kerello <[email protected]>
    Cc: [email protected]
    Fixes: 2cd457f328c1 ("mtd: rawnand: stm32_fmc2: add STM32 FMC2 NAND flash controller driver")
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mtd: rawnand: stm32_fmc2: Fix dma_map_sg error check [+ + +]
Author: Jack Wang <[email protected]>
Date:   Sat Sep 13 11:09:16 2025 -0400

    mtd: rawnand: stm32_fmc2: Fix dma_map_sg error check
    
    [ Upstream commit 43b81c2a3e6e07915151045aa13a6e8a9bd64419 ]
    
    dma_map_sg return 0 on error, in case of error return -EIO.
    
    Cc: Miquel Raynal <[email protected]>
    Cc: Richard Weinberger <[email protected]>
    Cc: Vignesh Raghavendra <[email protected]>
    Cc: Maxime Coquelin <[email protected]>
    Cc: Alexandre Torgue <[email protected]>
    Cc: Philipp Zabel <[email protected]>
    Cc: Christophe Kerello <[email protected]>
    Cc: Cai Huoqing <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Jack Wang <[email protected]>
    Reviewed-by: Christophe Kerello <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Link: https://lore.kernel.org/linux-mtd/[email protected]
    Stable-dep-of: 513c40e59d5a ("mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mtd: rawnand: stm32_fmc2: fix ECC overwrite [+ + +]
Author: Christophe Kerello <[email protected]>
Date:   Tue Aug 12 09:30:08 2025 +0200

    mtd: rawnand: stm32_fmc2: fix ECC overwrite
    
    commit 811c0da4542df3c065f6cb843ced68780e27bb44 upstream.
    
    In case OOB write is requested during a data write, ECC is currently
    lost. Avoid this issue by only writing in the free spare area.
    This issue has been seen with a YAFFS2 file system.
    
    Signed-off-by: Christophe Kerello <[email protected]>
    Cc: [email protected]
    Fixes: 2cd457f328c1 ("mtd: rawnand: stm32_fmc2: add STM32 FMC2 NAND flash controller driver")
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net: dsa: lantiq_gswip: do also enable or disable cpu port [+ + +]
Author: Martin Schiller <[email protected]>
Date:   Tue Jun 11 15:54:28 2024 +0200

    net: dsa: lantiq_gswip: do also enable or disable cpu port
    
    [ Upstream commit 86b9ea6412af41914ef6549f85a849c3b987f4f3 ]
    
    Before commit 74be4babe72f ("net: dsa: do not enable or disable non user
    ports"), gswip_port_enable/disable() were also executed for the cpu port
    in gswip_setup() which disabled the cpu port during initialization.
    
    Let's restore this by removing the dsa_is_user_port checks. Also, let's
    clean up the gswip_port_enable() function so that we only have to check
    for the cpu port once. The operation reordering done here is safe.
    
    Signed-off-by: Martin Schiller <[email protected]>
    Acked-by: Hauke Mehrtens <[email protected]>
    Reviewed-by: Vladimir Oltean <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: c0054b25e2f1 ("net: dsa: lantiq_gswip: move gswip_add_single_port_br() call to port_setup()")
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: lantiq_gswip: move gswip_add_single_port_br() call to port_setup() [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Thu Sep 18 10:21:41 2025 +0300

    net: dsa: lantiq_gswip: move gswip_add_single_port_br() call to port_setup()
    
    [ Upstream commit c0054b25e2f1045f47b4954cf13a539e5e6047df ]
    
    A port added to a "single port bridge" operates as standalone, and this
    is mutually exclusive to being part of a Linux bridge. In fact,
    gswip_port_bridge_join() calls gswip_add_single_port_br() with
    add=false, i.e. removes the port from the "single port bridge" to enable
    autonomous forwarding.
    
    The blamed commit seems to have incorrectly thought that ds->ops->port_enable()
    is called one time per port, during the setup phase of the switch.
    
    However, it is actually called during the ndo_open() implementation of
    DSA user ports, which is to say that this sequence of events:
    
    1. ip link set swp0 down
    2. ip link add br0 type bridge
    3. ip link set swp0 master br0
    4. ip link set swp0 up
    
    would cause swp0 to join back the "single port bridge" which step 3 had
    just removed it from.
    
    The correct DSA hook for one-time actions per port at switch init time
    is ds->ops->port_setup(). This is what seems to match the coder's
    intention; also see the comment at the beginning of the file:
    
     * At the initialization the driver allocates one bridge table entry for
       ~~~~~~~~~~~~~~~~~~~~~
     * each switch port which is used when the port is used without an
     * explicit bridge.
    
    Fixes: 8206e0ce96b3 ("net: dsa: lantiq: Add VLAN unaware bridge offloading")
    Signed-off-by: Vladimir Oltean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Tested-by: Daniel Golle <[email protected]>
    Reviewed-by: Daniel Golle <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: lantiq_gswip: suppress -EINVAL errors for bridge FDB entries added to the CPU port [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Thu Sep 18 10:21:42 2025 +0300

    net: dsa: lantiq_gswip: suppress -EINVAL errors for bridge FDB entries added to the CPU port
    
    [ Upstream commit 987afe147965ef7a8e7d144ffef0d70af14bb1d4 ]
    
    The blamed commit and others in that patch set started the trend
    of reusing existing DSA driver API for a new purpose: calling
    ds->ops->port_fdb_add() on the CPU port.
    
    The lantiq_gswip driver was not prepared to handle that, as can be seen
    from the many errors that Daniel presents in the logs:
    
    [  174.050000] gswip 1e108000.switch: port 2 failed to add fa:aa:72:f4:8b:1e vid 1 to fdb: -22
    [  174.060000] gswip 1e108000.switch lan2: entered promiscuous mode
    [  174.070000] gswip 1e108000.switch: port 2 failed to add 00:01:02:03:04:02 vid 0 to fdb: -22
    [  174.090000] gswip 1e108000.switch: port 2 failed to add 00:01:02:03:04:02 vid 1 to fdb: -22
    [  174.090000] gswip 1e108000.switch: port 2 failed to delete fa:aa:72:f4:8b:1e vid 1 from fdb: -2
    
    The errors are because gswip_port_fdb() wants to get a handle to the
    bridge that originated these FDB events, to associate it with a FID.
    Absolutely honourable purpose, however this only works for user ports.
    
    To get the bridge that generated an FDB entry for the CPU port, one
    would need to look at the db.bridge.dev argument. But this was
    introduced in commit c26933639b54 ("net: dsa: request drivers to perform
    FDB isolation"), first appeared in v5.18, and when the blamed commit was
    introduced in v5.14, no such API existed.
    
    So the core DSA feature was introduced way too soon for lantiq_gswip.
    Not acting on these host FDB entries and suppressing any errors has no
    other negative effect, and practically returns us to not supporting the
    host filtering feature at all - peacefully, this time.
    
    Fixes: 10fae4ac89ce ("net: dsa: include bridge addresses which are local in the host fdb list")
    Reported-by: Daniel Golle <[email protected]>
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Vladimir Oltean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Tested-by: Daniel Golle <[email protected]>
    Reviewed-by: Daniel Golle <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: fec: Fix possible NPD in fec_enet_phy_reset_after_clk_enable() [+ + +]
Author: Stefan Wahren <[email protected]>
Date:   Thu Sep 4 11:13:34 2025 +0200

    net: fec: Fix possible NPD in fec_enet_phy_reset_after_clk_enable()
    
    [ Upstream commit 03e79de4608bdd48ad6eec272e196124cefaf798 ]
    
    The function of_phy_find_device may return NULL, so we need to take
    care before dereferencing phy_dev.
    
    Fixes: 64a632da538a ("net: fec: Fix phy_device lookup for phy_reset_after_clk_enable()")
    Signed-off-by: Stefan Wahren <[email protected]>
    Cc: Christoph Niedermaier <[email protected]>
    Cc: Richard Leitner <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Wei Fang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: Fix null-ptr-deref by sock_lock_init_class_and_name() and rmmod. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Mon Sep 8 15:48:11 2025 -0400

    net: Fix null-ptr-deref by sock_lock_init_class_and_name() and rmmod.
    
    [ Upstream commit 0bb2f7a1ad1f11d861f58e5ee5051c8974ff9569 ]
    
    When I ran the repro [0] and waited a few seconds, I observed two
    LOCKDEP splats: a warning immediately followed by a null-ptr-deref. [1]
    
    Reproduction Steps:
    
      1) Mount CIFS
      2) Add an iptables rule to drop incoming FIN packets for CIFS
      3) Unmount CIFS
      4) Unload the CIFS module
      5) Remove the iptables rule
    
    At step 3), the CIFS module calls sock_release() for the underlying
    TCP socket, and it returns quickly.  However, the socket remains in
    FIN_WAIT_1 because incoming FIN packets are dropped.
    
    At this point, the module's refcnt is 0 while the socket is still
    alive, so the following rmmod command succeeds.
    
      # ss -tan
      State      Recv-Q Send-Q Local Address:Port  Peer Address:Port
      FIN-WAIT-1 0      477        10.0.2.15:51062   10.0.0.137:445
    
      # lsmod | grep cifs
      cifs                 1159168  0
    
    This highlights a discrepancy between the lifetime of the CIFS module
    and the underlying TCP socket.  Even after CIFS calls sock_release()
    and it returns, the TCP socket does not die immediately in order to
    close the connection gracefully.
    
    While this is generally fine, it causes an issue with LOCKDEP because
    CIFS assigns a different lock class to the TCP socket's sk->sk_lock
    using sock_lock_init_class_and_name().
    
    Once an incoming packet is processed for the socket or a timer fires,
    sk->sk_lock is acquired.
    
    Then, LOCKDEP checks the lock context in check_wait_context(), where
    hlock_class() is called to retrieve the lock class.  However, since
    the module has already been unloaded, hlock_class() logs a warning
    and returns NULL, triggering the null-ptr-deref.
    
    If LOCKDEP is enabled, we must ensure that a module calling
    sock_lock_init_class_and_name() (CIFS, NFS, etc) cannot be unloaded
    while such a socket is still alive to prevent this issue.
    
    Let's hold the module reference in sock_lock_init_class_and_name()
    and release it when the socket is freed in sk_prot_free().
    
    Note that sock_lock_init() clears sk->sk_owner for svc_create_socket()
    that calls sock_lock_init_class_and_name() for a listening socket,
    which clones a socket by sk_clone_lock() without GFP_ZERO.
    
    [0]:
    CIFS_SERVER="10.0.0.137"
    CIFS_PATH="//${CIFS_SERVER}/Users/Administrator/Desktop/CIFS_TEST"
    DEV="enp0s3"
    CRED="/root/WindowsCredential.txt"
    
    MNT=$(mktemp -d /tmp/XXXXXX)
    mount -t cifs ${CIFS_PATH} ${MNT} -o vers=3.0,credentials=${CRED},cache=none,echo_interval=1
    
    iptables -A INPUT -s ${CIFS_SERVER} -j DROP
    
    for i in $(seq 10);
    do
        umount ${MNT}
        rmmod cifs
        sleep 1
    done
    
    rm -r ${MNT}
    
    iptables -D INPUT -s ${CIFS_SERVER} -j DROP
    
    [1]:
    DEBUG_LOCKS_WARN_ON(1)
    WARNING: CPU: 10 PID: 0 at kernel/locking/lockdep.c:234 hlock_class (kernel/locking/lockdep.c:234 kernel/locking/lockdep.c:223)
    Modules linked in: cifs_arc4 nls_ucs2_utils cifs_md4 [last unloaded: cifs]
    CPU: 10 UID: 0 PID: 0 Comm: swapper/10 Not tainted 6.14.0 #36
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
    RIP: 0010:hlock_class (kernel/locking/lockdep.c:234 kernel/locking/lockdep.c:223)
    ...
    Call Trace:
     <IRQ>
     __lock_acquire (kernel/locking/lockdep.c:4853 kernel/locking/lockdep.c:5178)
     lock_acquire (kernel/locking/lockdep.c:469 kernel/locking/lockdep.c:5853 kernel/locking/lockdep.c:5816)
     _raw_spin_lock_nested (kernel/locking/spinlock.c:379)
     tcp_v4_rcv (./include/linux/skbuff.h:1678 ./include/net/tcp.h:2547 net/ipv4/tcp_ipv4.c:2350)
    ...
    
    BUG: kernel NULL pointer dereference, address: 00000000000000c4
     PF: supervisor read access in kernel mode
     PF: error_code(0x0000) - not-present page
    PGD 0
    Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI
    CPU: 10 UID: 0 PID: 0 Comm: swapper/10 Tainted: G        W          6.14.0 #36
    Tainted: [W]=WARN
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
    RIP: 0010:__lock_acquire (kernel/locking/lockdep.c:4852 kernel/locking/lockdep.c:5178)
    Code: 15 41 09 c7 41 8b 44 24 20 25 ff 1f 00 00 41 09 c7 8b 84 24 a0 00 00 00 45 89 7c 24 20 41 89 44 24 24 e8 e1 bc ff ff 4c 89 e7 <44> 0f b6 b8 c4 00 00 00 e8 d1 bc ff ff 0f b6 80 c5 00 00 00 88 44
    RSP: 0018:ffa0000000468a10 EFLAGS: 00010046
    RAX: 0000000000000000 RBX: ff1100010091cc38 RCX: 0000000000000027
    RDX: ff1100081f09ca48 RSI: 0000000000000001 RDI: ff1100010091cc88
    RBP: ff1100010091c200 R08: ff1100083fe6e228 R09: 00000000ffffbfff
    R10: ff1100081eca0000 R11: ff1100083fe10dc0 R12: ff1100010091cc88
    R13: 0000000000000001 R14: 0000000000000000 R15: 00000000000424b1
    FS:  0000000000000000(0000) GS:ff1100081f080000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000000000c4 CR3: 0000000002c4a003 CR4: 0000000000771ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     <IRQ>
     lock_acquire (kernel/locking/lockdep.c:469 kernel/locking/lockdep.c:5853 kernel/locking/lockdep.c:5816)
     _raw_spin_lock_nested (kernel/locking/spinlock.c:379)
     tcp_v4_rcv (./include/linux/skbuff.h:1678 ./include/net/tcp.h:2547 net/ipv4/tcp_ipv4.c:2350)
     ip_protocol_deliver_rcu (net/ipv4/ip_input.c:205 (discriminator 1))
     ip_local_deliver_finish (./include/linux/rcupdate.h:878 net/ipv4/ip_input.c:234)
     ip_sublist_rcv_finish (net/ipv4/ip_input.c:576)
     ip_list_rcv_finish (net/ipv4/ip_input.c:628)
     ip_list_rcv (net/ipv4/ip_input.c:670)
     __netif_receive_skb_list_core (net/core/dev.c:5939 net/core/dev.c:5986)
     netif_receive_skb_list_internal (net/core/dev.c:6040 net/core/dev.c:6129)
     napi_complete_done (./include/linux/list.h:37 ./include/net/gro.h:519 ./include/net/gro.h:514 net/core/dev.c:6496)
     e1000_clean (drivers/net/ethernet/intel/e1000/e1000_main.c:3815)
     __napi_poll.constprop.0 (net/core/dev.c:7191)
     net_rx_action (net/core/dev.c:7262 net/core/dev.c:7382)
     handle_softirqs (kernel/softirq.c:561)
     __irq_exit_rcu (kernel/softirq.c:596 kernel/softirq.c:435 kernel/softirq.c:662)
     irq_exit_rcu (kernel/softirq.c:680)
     common_interrupt (arch/x86/kernel/irq.c:280 (discriminator 14))
      </IRQ>
     <TASK>
     asm_common_interrupt (./arch/x86/include/asm/idtentry.h:693)
    RIP: 0010:default_idle (./arch/x86/include/asm/irqflags.h:37 ./arch/x86/include/asm/irqflags.h:92 arch/x86/kernel/process.c:744)
    Code: 4c 01 c7 4c 29 c2 e9 72 ff ff ff 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa eb 07 0f 00 2d c3 2b 15 00 fb f4 <fa> c3 cc cc cc cc 66 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90
    RSP: 0018:ffa00000000ffee8 EFLAGS: 00000202
    RAX: 000000000000640b RBX: ff1100010091c200 RCX: 0000000000061aa4
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff812f30c5
    RBP: 000000000000000a R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000002 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
     ? do_idle (kernel/sched/idle.c:186 kernel/sched/idle.c:325)
     default_idle_call (./include/linux/cpuidle.h:143 kernel/sched/idle.c:118)
     do_idle (kernel/sched/idle.c:186 kernel/sched/idle.c:325)
     cpu_startup_entry (kernel/sched/idle.c:422 (discriminator 1))
     start_secondary (arch/x86/kernel/smpboot.c:315)
     common_startup_64 (arch/x86/kernel/head_64.S:421)
     </TASK>
    Modules linked in: cifs_arc4 nls_ucs2_utils cifs_md4 [last unloaded: cifs]
    CR2: 00000000000000c4
    
    Fixes: ed07536ed673 ("[PATCH] lockdep: annotate nfs/nfsd in-kernel sockets")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    [ no ns_tracker and sk_user_frags fields ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: hsr: Add support for MC filtering at the slave device [+ + +]
Author: Murali Karicheri <[email protected]>
Date:   Tue Nov 21 11:07:53 2023 +0530

    net: hsr: Add support for MC filtering at the slave device
    
    [ Upstream commit 36b20fcdd9663ced36d3aef96f0eff8eb79de4b8 ]
    
    When MC (multicast) list is updated by the networking layer due to a
    user command and as well as when allmulti flag is set, it needs to be
    passed to the enslaved Ethernet devices. This patch allows this
    to happen by implementing ndo_change_rx_flags() and ndo_set_rx_mode()
    API calls that in turns pass it to the slave devices using
    existing API calls.
    
    Signed-off-by: Murali Karicheri <[email protected]>
    Signed-off-by: Ravi Gunasekaran <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 8884c6939913 ("hsr: use rtnl lock when iterating over ports")
    Signed-off-by: Sasha Levin <[email protected]>

net: hsr: Add VLAN CTAG filter support [+ + +]
Author: Murali Karicheri <[email protected]>
Date:   Wed Nov 6 14:47:08 2024 +0530

    net: hsr: Add VLAN CTAG filter support
    
    [ Upstream commit 1a8a63a5305e95519de6f941922dfcd8179f82e5 ]
    
    This patch adds support for VLAN ctag based filtering at slave devices.
    The slave ethernet device may be capable of filtering ethernet packets
    based on VLAN ID. This requires that when the VLAN interface is created
    over an HSR/PRP interface, it passes the VID information to the
    associated slave ethernet devices so that it updates the hardware
    filters to filter ethernet frames based on VID. This patch adds the
    required functions to propagate the vid information to the slave
    devices.
    
    Signed-off-by: Murali Karicheri <[email protected]>
    Signed-off-by: MD Danish Anwar <[email protected]>
    Reviewed-by: Jiri Pirko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 8884c6939913 ("hsr: use rtnl lock when iterating over ports")
    Signed-off-by: Sasha Levin <[email protected]>

net: hsr: Disable promiscuous mode in offload mode [+ + +]
Author: Ravi Gunasekaran <[email protected]>
Date:   Wed Jun 14 17:17:10 2023 +0530

    net: hsr: Disable promiscuous mode in offload mode
    
    [ Upstream commit e748d0fd66abc4b1c136022e4e053004fce2b792 ]
    
    When port-to-port forwarding for interfaces in HSR node is enabled,
    disable promiscuous mode since L2 frame forward happens at the
    offloaded hardware.
    
    Signed-off-by: Ravi Gunasekaran <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 8884c6939913 ("hsr: use rtnl lock when iterating over ports")
    Signed-off-by: Sasha Levin <[email protected]>

net: hsr: hsr_slave: Fix the promiscuous mode in offload mode [+ + +]
Author: Ravi Gunasekaran <[email protected]>
Date:   Fri Mar 22 15:34:47 2024 +0530

    net: hsr: hsr_slave: Fix the promiscuous mode in offload mode
    
    commit b11c81731c810efe592e510bb0110e0db6877419 upstream.
    
    commit e748d0fd66ab ("net: hsr: Disable promiscuous mode in
    offload mode") disables promiscuous mode of slave devices
    while creating an HSR interface. But while deleting the
    HSR interface, it does not take care of it. It decreases the
    promiscuous mode count, which eventually enables promiscuous
    mode on the slave devices when creating HSR interface again.
    
    Fix this by not decrementing the promiscuous mode count while
    deleting the HSR interface when offload is enabled.
    
    Fixes: e748d0fd66ab ("net: hsr: Disable promiscuous mode in offload mode")
    Signed-off-by: Ravi Gunasekaran <[email protected]>
    Reviewed-by: Jiri Pirko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: liquidio: fix overflow in octeon_init_instr_queue() [+ + +]
Author: Alexey Nepomnyashih <[email protected]>
Date:   Wed Sep 17 15:30:58 2025 +0000

    net: liquidio: fix overflow in octeon_init_instr_queue()
    
    [ Upstream commit cca7b1cfd7b8a0eff2a3510c5e0f10efe8fa3758 ]
    
    The expression `(conf->instr_type == 64) << iq_no` can overflow because
    `iq_no` may be as high as 64 (`CN23XX_MAX_RINGS_PER_PF`). Casting the
    operand to `u64` ensures correct 64-bit arithmetic.
    
    Fixes: f21fb3ed364b ("Add support of Cavium Liquidio ethernet adapters")
    Signed-off-by: Alexey Nepomnyashih <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: natsemi: fix `rx_dropped` double accounting on `netif_rx()` failure [+ + +]
Author: Yeounsu Moon <[email protected]>
Date:   Sat Sep 13 15:01:36 2025 +0900

    net: natsemi: fix `rx_dropped` double accounting on `netif_rx()` failure
    
    [ Upstream commit 93ab4881a4e2b9657bdce4b8940073bfb4ed5eab ]
    
    `netif_rx()` already increments `rx_dropped` core stat when it fails.
    The driver was also updating `ndev->stats.rx_dropped` in the same path.
    Since both are reported together via `ip -s -s` command, this resulted
    in drops being counted twice in user-visible stats.
    
    Keep the driver update on `if (unlikely(!skb))`, but skip it after
    `netif_rx()` errors.
    
    Fixes: caf586e5f23c ("net: add a core netdev->rx_dropped counter")
    Signed-off-by: Yeounsu Moon <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: rfkill: gpio: add DT support [+ + +]
Author: Philipp Zabel <[email protected]>
Date:   Sun Sep 21 19:37:08 2025 -0400

    net: rfkill: gpio: add DT support
    
    [ Upstream commit d64c732dfc9edcd57feb693c23162117737e426b ]
    
    Allow probing rfkill-gpio via device tree. This hooks up the already
    existing support that was started in commit 262c91ee5e52 ("net:
    rfkill: gpio: prepare for DT and ACPI support") via the "rfkill-gpio"
    compatible, with the "name" and "type" properties renamed to "label"
    and "radio-type", respectively, in the device tree case.
    
    Signed-off-by: Philipp Zabel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Stable-dep-of: b6f56a44e4c1 ("net: rfkill: gpio: Fix crash due to dereferencering uninitialized pointer")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: rfkill: gpio: Fix crash due to dereferencering uninitialized pointer [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Sun Sep 21 19:37:09 2025 -0400

    net: rfkill: gpio: Fix crash due to dereferencering uninitialized pointer
    
    [ Upstream commit b6f56a44e4c1014b08859dcf04ed246500e310e5 ]
    
    Since commit 7d5e9737efda ("net: rfkill: gpio: get the name and type from
    device property") rfkill_find_type() gets called with the possibly
    uninitialized "const char *type_name;" local variable.
    
    On x86 systems when rfkill-gpio binds to a "BCM4752" or "LNV4752"
    acpi_device, the rfkill->type is set based on the ACPI acpi_device_id:
    
            rfkill->type = (unsigned)id->driver_data;
    
    and there is no "type" property so device_property_read_string() will fail
    and leave type_name uninitialized, leading to a potential crash.
    
    rfkill_find_type() does accept a NULL pointer, fix the potential crash
    by initializing type_name to NULL.
    
    Note likely sofar this has not been caught because:
    
    1. Not many x86 machines actually have a "BCM4752"/"LNV4752" acpi_device
    2. The stack happened to contain NULL where type_name is stored
    
    Fixes: 7d5e9737efda ("net: rfkill: gpio: get the name and type from device property")
    Cc: [email protected]
    Cc: Heikki Krogerus <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nexthop: Forbid FDB status change while nexthop is in a group [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Sun Sep 21 18:08:22 2025 +0300

    nexthop: Forbid FDB status change while nexthop is in a group
    
    [ Upstream commit 390b3a300d7872cef9588f003b204398be69ce08 ]
    
    The kernel forbids the creation of non-FDB nexthop groups with FDB
    nexthops:
    
     # ip nexthop add id 1 via 192.0.2.1 fdb
     # ip nexthop add id 2 group 1
     Error: Non FDB nexthop group cannot have fdb nexthops.
    
    And vice versa:
    
     # ip nexthop add id 3 via 192.0.2.2 dev dummy1
     # ip nexthop add id 4 group 3 fdb
     Error: FDB nexthop group can only have fdb nexthops.
    
    However, as long as no routes are pointing to a non-FDB nexthop group,
    the kernel allows changing the type of a nexthop from FDB to non-FDB and
    vice versa:
    
     # ip nexthop add id 5 via 192.0.2.2 dev dummy1
     # ip nexthop add id 6 group 5
     # ip nexthop replace id 5 via 192.0.2.2 fdb
     # echo $?
     0
    
    This configuration is invalid and can result in a NPD [1] since FDB
    nexthops are not associated with a nexthop device:
    
     # ip route add 198.51.100.1/32 nhid 6
     # ping 198.51.100.1
    
    Fix by preventing nexthop FDB status change while the nexthop is in a
    group:
    
     # ip nexthop add id 7 via 192.0.2.2 dev dummy1
     # ip nexthop add id 8 group 7
     # ip nexthop replace id 7 via 192.0.2.2 fdb
     Error: Cannot change nexthop FDB status while in a group.
    
    [1]
    BUG: kernel NULL pointer dereference, address: 00000000000003c0
    [...]
    Oops: Oops: 0000 [#1] SMP
    CPU: 6 UID: 0 PID: 367 Comm: ping Not tainted 6.17.0-rc6-virtme-gb65678cacc03 #1 PREEMPT(voluntary)
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-4.fc41 04/01/2014
    RIP: 0010:fib_lookup_good_nhc+0x1e/0x80
    [...]
    Call Trace:
     <TASK>
     fib_table_lookup+0x541/0x650
     ip_route_output_key_hash_rcu+0x2ea/0x970
     ip_route_output_key_hash+0x55/0x80
     __ip4_datagram_connect+0x250/0x330
     udp_connect+0x2b/0x60
     __sys_connect+0x9c/0xd0
     __x64_sys_connect+0x18/0x20
     do_syscall_64+0xa4/0x2a0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: 38428d68719c ("nexthop: support for fdb ecmp nexthops")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Tested-by: [email protected]
    Signed-off-by: Ido Schimmel <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4/flexfiles: Fix layout merge mirror check. [+ + +]
Author: Jonathan Curley <[email protected]>
Date:   Mon Sep 8 17:35:16 2025 +0000

    NFSv4/flexfiles: Fix layout merge mirror check.
    
    [ Upstream commit dd2fa82473453661d12723c46c9f43d9876a7efd ]
    
    Typo in ff_lseg_match_mirrors makes the diff ineffective. This results
    in merge happening all the time. Merge happening all the time is
    problematic because it marks lsegs invalid. Marking lsegs invalid
    causes all outstanding IO to get restarted with EAGAIN and connections
    to get closed.
    
    Closing connections constantly triggers race conditions in the RDMA
    implementation...
    
    Fixes: 660d1eb22301c ("pNFS/flexfile: Don't merge layout segments if the mirrors don't match")
    Signed-off-by: Jonathan Curley <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4: Clear the NFS_CAP_FS_LOCATIONS flag if it is not set [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Fri Aug 29 09:07:22 2025 -0700

    NFSv4: Clear the NFS_CAP_FS_LOCATIONS flag if it is not set
    
    [ Upstream commit dd5a8621b886b02f8341c5d4ea68eb2c552ebd3e ]
    
    _nfs4_server_capabilities() is expected to clear any flags that are not
    supported by the server.
    
    Fixes: 8a59bb93b7e3 ("NFSv4 store server support for fs_location attribute")
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

NFSv4: Clear the NFS_CAP_XATTR flag if not supported by the server [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Fri Aug 29 09:15:12 2025 -0700

    NFSv4: Clear the NFS_CAP_XATTR flag if not supported by the server
    
    [ Upstream commit 4fb2b677fc1f70ee642c0beecc3cabf226ef5707 ]
    
    nfs_server_set_fsinfo() shouldn't assume that NFS_CAP_XATTR is unset
    on entry to the function.
    
    Fixes: b78ef845c35d ("NFSv4.2: query the server for extended attribute support")
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

NFSv4: Don't clear capabilities that won't be reset [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Fri Aug 29 09:02:16 2025 -0700

    NFSv4: Don't clear capabilities that won't be reset
    
    [ Upstream commit 31f1a960ad1a14def94fa0b8c25d62b4c032813f ]
    
    Don't clear the capabilities that are not going to get reset by the call
    to _nfs4_server_capabilities().
    
    Reported-by: Scott Haiden <[email protected]>
    Fixes: b01f21cacde9 ("NFS: Fix the setting of capabilities when automounting a new filesystem")
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nilfs2: fix CFI failure when accessing /sys/fs/nilfs2/features/* [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Sat Sep 6 23:43:34 2025 +0900

    nilfs2: fix CFI failure when accessing /sys/fs/nilfs2/features/*
    
    commit 025e87f8ea2ae3a28bf1fe2b052bfa412c27ed4a upstream.
    
    When accessing one of the files under /sys/fs/nilfs2/features when
    CONFIG_CFI_CLANG is enabled, there is a CFI violation:
    
      CFI failure at kobj_attr_show+0x59/0x80 (target: nilfs_feature_revision_show+0x0/0x30; expected type: 0xfc392c4d)
      ...
      Call Trace:
       <TASK>
       sysfs_kf_seq_show+0x2a6/0x390
       ? __cfi_kobj_attr_show+0x10/0x10
       kernfs_seq_show+0x104/0x15b
       seq_read_iter+0x580/0xe2b
      ...
    
    When the kobject of the kset for /sys/fs/nilfs2 is initialized, its ktype
    is set to kset_ktype, which has a ->sysfs_ops of kobj_sysfs_ops.  When
    nilfs_feature_attr_group is added to that kobject via
    sysfs_create_group(), the kernfs_ops of each files is sysfs_file_kfops_rw,
    which will call sysfs_kf_seq_show() when ->seq_show() is called.
    sysfs_kf_seq_show() in turn calls kobj_attr_show() through
    ->sysfs_ops->show().  kobj_attr_show() casts the provided attribute out to
    a 'struct kobj_attribute' via container_of() and calls ->show(), resulting
    in the CFI violation since neither nilfs_feature_revision_show() nor
    nilfs_feature_README_show() match the prototype of ->show() in 'struct
    kobj_attribute'.
    
    Resolve the CFI violation by adjusting the second parameter in
    nilfs_feature_{revision,README}_show() from 'struct attribute' to 'struct
    kobj_attribute' to match the expected prototype.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: aebe17f68444 ("nilfs2: add /sys/fs/nilfs2/features group")
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]/
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ocfs2: fix recursive semaphore deadlock in fiemap call [+ + +]
Author: Mark Tinguely <[email protected]>
Date:   Fri Aug 29 10:18:15 2025 -0500

    ocfs2: fix recursive semaphore deadlock in fiemap call
    
    commit 04100f775c2ea501927f508f17ad824ad1f23c8d upstream.
    
    syzbot detected a OCFS2 hang due to a recursive semaphore on a
    FS_IOC_FIEMAP of the extent list on a specially crafted mmap file.
    
    context_switch kernel/sched/core.c:5357 [inline]
       __schedule+0x1798/0x4cc0 kernel/sched/core.c:6961
       __schedule_loop kernel/sched/core.c:7043 [inline]
       schedule+0x165/0x360 kernel/sched/core.c:7058
       schedule_preempt_disabled+0x13/0x30 kernel/sched/core.c:7115
       rwsem_down_write_slowpath+0x872/0xfe0 kernel/locking/rwsem.c:1185
       __down_write_common kernel/locking/rwsem.c:1317 [inline]
       __down_write kernel/locking/rwsem.c:1326 [inline]
       down_write+0x1ab/0x1f0 kernel/locking/rwsem.c:1591
       ocfs2_page_mkwrite+0x2ff/0xc40 fs/ocfs2/mmap.c:142
       do_page_mkwrite+0x14d/0x310 mm/memory.c:3361
       wp_page_shared mm/memory.c:3762 [inline]
       do_wp_page+0x268d/0x5800 mm/memory.c:3981
       handle_pte_fault mm/memory.c:6068 [inline]
       __handle_mm_fault+0x1033/0x5440 mm/memory.c:6195
       handle_mm_fault+0x40a/0x8e0 mm/memory.c:6364
       do_user_addr_fault+0x764/0x1390 arch/x86/mm/fault.c:1387
       handle_page_fault arch/x86/mm/fault.c:1476 [inline]
       exc_page_fault+0x76/0xf0 arch/x86/mm/fault.c:1532
       asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623
    RIP: 0010:copy_user_generic arch/x86/include/asm/uaccess_64.h:126 [inline]
    RIP: 0010:raw_copy_to_user arch/x86/include/asm/uaccess_64.h:147 [inline]
    RIP: 0010:_inline_copy_to_user include/linux/uaccess.h:197 [inline]
    RIP: 0010:_copy_to_user+0x85/0xb0 lib/usercopy.c:26
    Code: e8 00 bc f7 fc 4d 39 fc 72 3d 4d 39 ec 77 38 e8 91 b9 f7 fc 4c 89
    f7 89 de e8 47 25 5b fd 0f 01 cb 4c 89 ff 48 89 d9 4c 89 f6 <f3> a4 0f
    1f 00 48 89 cb 0f 01 ca 48 89 d8 5b 41 5c 41 5d 41 5e 41
    RSP: 0018:ffffc9000403f950 EFLAGS: 00050256
    RAX: ffffffff84c7f101 RBX: 0000000000000038 RCX: 0000000000000038
    RDX: 0000000000000000 RSI: ffffc9000403f9e0 RDI: 0000200000000060
    RBP: ffffc9000403fa90 R08: ffffc9000403fa17 R09: 1ffff92000807f42
    R10: dffffc0000000000 R11: fffff52000807f43 R12: 0000200000000098
    R13: 00007ffffffff000 R14: ffffc9000403f9e0 R15: 0000200000000060
       copy_to_user include/linux/uaccess.h:225 [inline]
       fiemap_fill_next_extent+0x1c0/0x390 fs/ioctl.c:145
       ocfs2_fiemap+0x888/0xc90 fs/ocfs2/extent_map.c:806
       ioctl_fiemap fs/ioctl.c:220 [inline]
       do_vfs_ioctl+0x1173/0x1430 fs/ioctl.c:532
       __do_sys_ioctl fs/ioctl.c:596 [inline]
       __se_sys_ioctl+0x82/0x170 fs/ioctl.c:584
       do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
       do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f5f13850fd9
    RSP: 002b:00007ffe3b3518b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 0000200000000000 RCX: 00007f5f13850fd9
    RDX: 0000200000000040 RSI: 00000000c020660b RDI: 0000000000000004
    RBP: 6165627472616568 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffe3b3518f0
    R13: 00007ffe3b351b18 R14: 431bde82d7b634db R15: 00007f5f1389a03b
    
    ocfs2_fiemap() takes a read lock of the ip_alloc_sem semaphore (since
    v2.6.22-527-g7307de80510a) and calls fiemap_fill_next_extent() to read the
    extent list of this running mmap executable.  The user supplied buffer to
    hold the fiemap information page faults calling ocfs2_page_mkwrite() which
    will take a write lock (since v2.6.27-38-g00dc417fa3e7) of the same
    semaphore.  This recursive semaphore will hold filesystem locks and causes
    a hang of the fileystem.
    
    The ip_alloc_sem protects the inode extent list and size.  Release the
    read semphore before calling fiemap_fill_next_extent() in ocfs2_fiemap()
    and ocfs2_fiemap_inline().  This does an unnecessary semaphore lock/unlock
    on the last extent but simplifies the error path.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 00dc417fa3e7 ("ocfs2: fiemap support")
    Signed-off-by: Mark Tinguely <[email protected]>
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=541dcc6ee768f77103e7
    Reviewed-by: Joseph Qi <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pcmcia: omap_cf: Mark driver struct with __refdata to prevent section mismatch [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Wed Aug 13 17:50:14 2025 +0200

    pcmcia: omap_cf: Mark driver struct with __refdata to prevent section mismatch
    
    [ Upstream commit d1dfcdd30140c031ae091868fb5bed084132bca1 ]
    
    As described in the added code comment, a reference to .exit.text is ok
    for drivers registered via platform_driver_probe().  Make this explicit
    to prevent the following section mismatch warning
    
        WARNING: modpost: drivers/pcmcia/omap_cf: section mismatch in reference: omap_cf_driver+0x4 (section: .data) -> omap_cf_remove (section: .exit.text)
    
    that triggers on an omap1_defconfig + CONFIG_OMAP_CF=m build.
    
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Acked-by: Aaro Koskinen <[email protected]>
    Reviewed-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Dominik Brodowski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
phy: broadcom: ns-usb3: fix Wvoid-pointer-to-enum-cast warning [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Sep 17 09:32:50 2025 -0400

    phy: broadcom: ns-usb3: fix Wvoid-pointer-to-enum-cast warning
    
    [ Upstream commit bd6e74a2f0a0c76dda8e44d26f9b91a797586c3b ]
    
    'family' is an enum, thus cast of pointer on 64-bit compile test with
    W=1 causes:
    
      drivers/phy/broadcom/phy-bcm-ns-usb3.c:209:17: error: cast to smaller integer type 'enum bcm_ns_family' from 'const void *' [-Werror,-Wvoid-pointer-to-enum-cast]
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 64961557efa1 ("phy: ti: omap-usb2: fix device leak at unbind")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: tegra: xusb: fix device and OF node leak at probe [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Thu Jul 24 15:12:04 2025 +0200

    phy: tegra: xusb: fix device and OF node leak at probe
    
    commit bca065733afd1e3a89a02f05ffe14e966cd5f78e upstream.
    
    Make sure to drop the references taken to the PMC OF node and device by
    of_parse_phandle() and of_find_device_by_node() during probe.
    
    Note the holding a reference to the PMC device does not prevent the
    PMC regmap from going away (e.g. if the PMC driver is unbound) so there
    is no need to keep the reference.
    
    Fixes: 2d1021487273 ("phy: tegra: xusb: Add wake/sleepwalk for Tegra210")
    Cc: [email protected]      # 5.14
    Cc: JC Kuo <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: ti-pipe3: fix device leak at unbind [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Thu Jul 24 15:12:06 2025 +0200

    phy: ti-pipe3: fix device leak at unbind
    
    commit e19bcea99749ce8e8f1d359f68ae03210694ad56 upstream.
    
    Make sure to drop the reference to the control device taken by
    of_find_device_by_node() during probe when the driver is unbound.
    
    Fixes: 918ee0d21ba4 ("usb: phy: omap-usb3: Don't use omap_get_control_dev()")
    Cc: [email protected]      # 3.13
    Cc: Roger Quadros <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: ti: omap-usb2: fix device leak at unbind [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Wed Sep 17 09:32:52 2025 -0400

    phy: ti: omap-usb2: fix device leak at unbind
    
    [ Upstream commit 64961557efa1b98f375c0579779e7eeda1a02c42 ]
    
    Make sure to drop the reference to the control device taken by
    of_find_device_by_node() during probe when the driver is unbound.
    
    Fixes: 478b6c7436c2 ("usb: phy: omap-usb2: Don't use omap_get_control_dev()")
    Cc: [email protected]      # 3.13
    Cc: Roger Quadros <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: Use device_get_match_data() [+ + +]
Author: Rob Herring <[email protected]>
Date:   Wed Sep 17 09:32:51 2025 -0400

    phy: Use device_get_match_data()
    
    [ Upstream commit 21bf6fc47a1e45031ba8a7084343b7cfd09ed1d3 ]
    
    Use preferred device_get_match_data() instead of of_match_device() to
    get the driver match data. With this, adjust the includes to explicitly
    include the correct headers.
    
    Signed-off-by: Rob Herring <[email protected]>
    Reviewed-by: Heiko Stuebner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 64961557efa1 ("phy: ti: omap-usb2: fix device leak at unbind")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
power: supply: bq27xxx: fix error return in case of no bq27000 hdq battery [+ + +]
Author: H. Nikolaus Schaller <[email protected]>
Date:   Sat Aug 23 12:34:56 2025 +0200

    power: supply: bq27xxx: fix error return in case of no bq27000 hdq battery
    
    commit 2c334d038466ac509468fbe06905a32d202117db upstream.
    
    Since commit
    
            commit f16d9fb6cf03 ("power: supply: bq27xxx: Retrieve again when busy")
    
    the console log of some devices with hdq enabled but no bq27000 battery
    (like e.g. the Pandaboard) is flooded with messages like:
    
    [   34.247833] power_supply bq27000-battery: driver failed to report 'status' property: -1
    
    as soon as user-space is finding a /sys entry and trying to read the
    "status" property.
    
    It turns out that the offending commit changes the logic to now return the
    value of cache.flags if it is <0. This is likely under the assumption that
    it is an error number. In normal errors from bq27xxx_read() this is indeed
    the case.
    
    But there is special code to detect if no bq27000 is installed or accessible
    through hdq/1wire and wants to report this. In that case, the cache.flags
    are set historically by
    
            commit 3dd843e1c26a ("bq27000: report missing device better.")
    
    to constant -1 which did make reading properties return -ENODEV. So everything
    appeared to be fine before the return value was passed upwards.
    
    Now the -1 is returned as -EPERM instead of -ENODEV, triggering the error
    condition in power_supply_format_property() which then floods the console log.
    
    So we change the detection of missing bq27000 battery to simply set
    
            cache.flags = -ENODEV
    
    instead of -1.
    
    Fixes: f16d9fb6cf03 ("power: supply: bq27xxx: Retrieve again when busy")
    Cc: Jerry Lv <[email protected]>
    Cc: [email protected]
    Signed-off-by: H. Nikolaus Schaller <[email protected]>
    Link: https://lore.kernel.org/r/692f79eb6fd541adb397038ea6e750d4de2deddf.1755945297.git.hns@goldelico.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

power: supply: bq27xxx: restrict no-battery detection to bq27000 [+ + +]
Author: H. Nikolaus Schaller <[email protected]>
Date:   Sat Aug 23 12:34:57 2025 +0200

    power: supply: bq27xxx: restrict no-battery detection to bq27000
    
    commit 1e451977e1703b6db072719b37cd1b8e250b9cc9 upstream.
    
    There are fuel gauges in the bq27xxx series (e.g. bq27z561) which may in some
    cases report 0xff as the value of BQ27XXX_REG_FLAGS that should not be
    interpreted as "no battery" like for a disconnected battery with some built
    in bq27000 chip.
    
    So restrict the no-battery detection originally introduced by
    
        commit 3dd843e1c26a ("bq27000: report missing device better.")
    
    to the bq27000.
    
    There is no need to backport further because this was hidden before
    
            commit f16d9fb6cf03 ("power: supply: bq27xxx: Retrieve again when busy")
    
    Fixes: f16d9fb6cf03 ("power: supply: bq27xxx: Retrieve again when busy")
    Suggested-by: Jerry Lv <[email protected]>
    Cc: [email protected]
    Signed-off-by: H. Nikolaus Schaller <[email protected]>
    Link: https://lore.kernel.org/r/dd979fa6855fd051ee5117016c58daaa05966e24.1755945297.git.hns@goldelico.com
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
qed: Don't collect too many protection override GRC elements [+ + +]
Author: Jamie Bainbridge <[email protected]>
Date:   Wed Sep 10 16:29:16 2025 +1000

    qed: Don't collect too many protection override GRC elements
    
    [ Upstream commit 56c0a2a9ddc2f5b5078c5fb0f81ab76bbc3d4c37 ]
    
    In the protection override dump path, the firmware can return far too
    many GRC elements, resulting in attempting to write past the end of the
    previously-kmalloc'ed dump buffer.
    
    This will result in a kernel panic with reason:
    
     BUG: unable to handle kernel paging request at ADDRESS
    
    where "ADDRESS" is just past the end of the protection override dump
    buffer. The start address of the buffer is:
     p_hwfn->cdev->dbg_features[DBG_FEATURE_PROTECTION_OVERRIDE].dump_buf
    and the size of the buffer is buf_size in the same data structure.
    
    The panic can be arrived at from either the qede Ethernet driver path:
    
        [exception RIP: qed_grc_dump_addr_range+0x108]
     qed_protection_override_dump at ffffffffc02662ed [qed]
     qed_dbg_protection_override_dump at ffffffffc0267792 [qed]
     qed_dbg_feature at ffffffffc026aa8f [qed]
     qed_dbg_all_data at ffffffffc026b211 [qed]
     qed_fw_fatal_reporter_dump at ffffffffc027298a [qed]
     devlink_health_do_dump at ffffffff82497f61
     devlink_health_report at ffffffff8249cf29
     qed_report_fatal_error at ffffffffc0272baf [qed]
     qede_sp_task at ffffffffc045ed32 [qede]
     process_one_work at ffffffff81d19783
    
    or the qedf storage driver path:
    
        [exception RIP: qed_grc_dump_addr_range+0x108]
     qed_protection_override_dump at ffffffffc068b2ed [qed]
     qed_dbg_protection_override_dump at ffffffffc068c792 [qed]
     qed_dbg_feature at ffffffffc068fa8f [qed]
     qed_dbg_all_data at ffffffffc0690211 [qed]
     qed_fw_fatal_reporter_dump at ffffffffc069798a [qed]
     devlink_health_do_dump at ffffffff8aa95e51
     devlink_health_report at ffffffff8aa9ae19
     qed_report_fatal_error at ffffffffc0697baf [qed]
     qed_hw_err_notify at ffffffffc06d32d7 [qed]
     qed_spq_post at ffffffffc06b1011 [qed]
     qed_fcoe_destroy_conn at ffffffffc06b2e91 [qed]
     qedf_cleanup_fcport at ffffffffc05e7597 [qedf]
     qedf_rport_event_handler at ffffffffc05e7bf7 [qedf]
     fc_rport_work at ffffffffc02da715 [libfc]
     process_one_work at ffffffff8a319663
    
    Resolve this by clamping the firmware's return value to the maximum
    number of legal elements the firmware should return.
    
    Fixes: d52c89f120de8 ("qed*: Utilize FW 8.37.2.0")
    Signed-off-by: Jamie Bainbridge <[email protected]>
    Link: https://patch.msgid.link/f8e1182934aa274c18d0682a12dbaf347595469c.1757485536.git.jamie.bainbridge@gmail.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rds: ib: Increment i_fastreg_wrs before bailing out [+ + +]
Author: HÃ¥kon Bugge <[email protected]>
Date:   Thu Sep 11 15:33:34 2025 +0200

    rds: ib: Increment i_fastreg_wrs before bailing out
    
    commit 4351ca3fcb3ffecf12631b4996bf085a2dad0db6 upstream.
    
    We need to increment i_fastreg_wrs before we bail out from
    rds_ib_post_reg_frmr().
    
    We have a fixed budget of how many FRWR operations that can be
    outstanding using the dedicated QP used for memory registrations and
    de-registrations. This budget is enforced by the atomic_t
    i_fastreg_wrs. If we bail out early in rds_ib_post_reg_frmr(), we will
    "leak" the possibility of posting an FRWR operation, and if that
    accumulates, no FRWR operation can be carried out.
    
    Fixes: 1659185fb4d0 ("RDS: IB: Support Fastreg MR (FRMR) memory registration mode")
    Fixes: 3a2886cca703 ("net/rds: Keep track of and wait for FRWR segments in use upon shutdown")
    Cc: [email protected]
    Signed-off-by: HÃ¥kon Bugge <[email protected]>
    Reviewed-by: Allison Henderson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
regulator: sy7636a: fix lifecycle of power good gpio [+ + +]
Author: Andreas Kemnade <[email protected]>
Date:   Sat Sep 6 11:09:13 2025 +0200

    regulator: sy7636a: fix lifecycle of power good gpio
    
    [ Upstream commit c05d0b32eebadc8be6e53196e99c64cf2bed1d99 ]
    
    Attach the power good gpio to the regulator device devres instead of the
    parent device to fix problems if probe is run multiple times
    (rmmod/insmod or some deferral).
    
    Fixes: 8c485bedfb785 ("regulator: sy7636a: Initial commit")
    Signed-off-by: Andreas Kemnade <[email protected]>
    Reviewed-by: Alistair Francis <[email protected]>
    Reviewed-by: Peng Fan <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "fbdev: Disable sysfb device registration when removing conflicting FBs" [+ + +]
Author: Brett A C Sheffield <[email protected]>
Date:   Wed Sep 10 09:38:03 2025 +0000

    Revert "fbdev: Disable sysfb device registration when removing conflicting FBs"
    
    This reverts commit 13d28e0c79cbf69fc6f145767af66905586c1249.
    
    Commit ee7a69aa38d8 ("fbdev: Disable sysfb device registration when
    removing conflicting FBs") was backported to 5.15.y LTS. This causes a
    regression where all virtual consoles stop responding during boot at:
    
    "Populating /dev with existing devices through uevents ..."
    
    Reverting the commit fixes the regression.
    
    Signed-off-by: Brett A C Sheffield <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
 
Revert "net/mlx5e: Update and set Xon/Xoff upon port speed set" [+ + +]
Author: Tariq Toukan <[email protected]>
Date:   Wed Sep 17 16:48:54 2025 +0300

    Revert "net/mlx5e: Update and set Xon/Xoff upon port speed set"
    
    [ Upstream commit 3fbfe251cc9f6d391944282cdb9bcf0bd02e01f8 ]
    
    This reverts commit d24341740fe48add8a227a753e68b6eedf4b385a.
    It causes errors when trying to configure QoS, as well as
    loss of L2 connectivity (on multi-host devices).
    
    Reported-by: Jakub Kicinski <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: d24341740fe4 ("net/mlx5e: Update and set Xon/Xoff upon port speed set")
    Signed-off-by: Tariq Toukan <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: fib_nexthops: Fix creation of non-FDB nexthops [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Sun Sep 21 18:08:23 2025 +0300

    selftests: fib_nexthops: Fix creation of non-FDB nexthops
    
    [ Upstream commit c29913109c70383cdf90b6fc792353e1009f24f5 ]
    
    The test creates non-FDB nexthops without a nexthop device which leads
    to the expected failure, but for the wrong reason:
    
     # ./fib_nexthops.sh -t "ipv6_fdb_grp_fcnal ipv4_fdb_grp_fcnal" -v
    
     IPv6 fdb groups functional
     --------------------------
     [...]
     COMMAND: ip -netns me-nRsN3E nexthop add id 63 via 2001:db8:91::4
     Error: Device attribute required for non-blackhole and non-fdb nexthops.
     COMMAND: ip -netns me-nRsN3E nexthop add id 64 via 2001:db8:91::5
     Error: Device attribute required for non-blackhole and non-fdb nexthops.
     COMMAND: ip -netns me-nRsN3E nexthop add id 103 group 63/64 fdb
     Error: Invalid nexthop id.
     TEST: Fdb Nexthop group with non-fdb nexthops                       [ OK ]
     [...]
    
     IPv4 fdb groups functional
     --------------------------
     [...]
     COMMAND: ip -netns me-nRsN3E nexthop add id 14 via 172.16.1.2
     Error: Device attribute required for non-blackhole and non-fdb nexthops.
     COMMAND: ip -netns me-nRsN3E nexthop add id 15 via 172.16.1.3
     Error: Device attribute required for non-blackhole and non-fdb nexthops.
     COMMAND: ip -netns me-nRsN3E nexthop add id 103 group 14/15 fdb
     Error: Invalid nexthop id.
     TEST: Fdb Nexthop group with non-fdb nexthops                       [ OK ]
    
     COMMAND: ip -netns me-nRsN3E nexthop add id 16 via 172.16.1.2 fdb
     COMMAND: ip -netns me-nRsN3E nexthop add id 17 via 172.16.1.3 fdb
     COMMAND: ip -netns me-nRsN3E nexthop add id 104 group 14/15
     Error: Invalid nexthop id.
     TEST: Non-Fdb Nexthop group with fdb nexthops                       [ OK ]
     [...]
     COMMAND: ip -netns me-0dlhyd ro add 172.16.0.0/22 nhid 15
     Error: Nexthop id does not exist.
     TEST: Route add with fdb nexthop                                    [ OK ]
    
    In addition, as can be seen in the above output, a couple of IPv4 test
    cases used the non-FDB nexthops (14 and 15) when they intended to use
    the FDB nexthops (16 and 17). These test cases only passed because
    failure was expected, but they failed for the wrong reason.
    
    Fix the test to create the non-FDB nexthops with a nexthop device and
    adjust the IPv4 test cases to use the FDB nexthops instead of the
    non-FDB nexthops.
    
    Output after the fix:
    
     # ./fib_nexthops.sh -t "ipv6_fdb_grp_fcnal ipv4_fdb_grp_fcnal" -v
    
     IPv6 fdb groups functional
     --------------------------
     [...]
     COMMAND: ip -netns me-lNzfHP nexthop add id 63 via 2001:db8:91::4 dev veth1
     COMMAND: ip -netns me-lNzfHP nexthop add id 64 via 2001:db8:91::5 dev veth1
     COMMAND: ip -netns me-lNzfHP nexthop add id 103 group 63/64 fdb
     Error: FDB nexthop group can only have fdb nexthops.
     TEST: Fdb Nexthop group with non-fdb nexthops                       [ OK ]
     [...]
    
     IPv4 fdb groups functional
     --------------------------
     [...]
     COMMAND: ip -netns me-lNzfHP nexthop add id 14 via 172.16.1.2 dev veth1
     COMMAND: ip -netns me-lNzfHP nexthop add id 15 via 172.16.1.3 dev veth1
     COMMAND: ip -netns me-lNzfHP nexthop add id 103 group 14/15 fdb
     Error: FDB nexthop group can only have fdb nexthops.
     TEST: Fdb Nexthop group with non-fdb nexthops                       [ OK ]
    
     COMMAND: ip -netns me-lNzfHP nexthop add id 16 via 172.16.1.2 fdb
     COMMAND: ip -netns me-lNzfHP nexthop add id 17 via 172.16.1.3 fdb
     COMMAND: ip -netns me-lNzfHP nexthop add id 104 group 16/17
     Error: Non FDB nexthop group cannot have fdb nexthops.
     TEST: Non-Fdb Nexthop group with fdb nexthops                       [ OK ]
     [...]
     COMMAND: ip -netns me-lNzfHP ro add 172.16.0.0/22 nhid 16
     Error: Route cannot point to a fdb nexthop.
     TEST: Route add with fdb nexthop                                    [ OK ]
     [...]
     Tests passed:  30
     Tests failed:   0
     Tests skipped:  0
    
    Fixes: 0534c5489c11 ("selftests: net: add fdb nexthop tests")
    Signed-off-by: Ido Schimmel <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: sc16is7xx: fix bug in flow control levels init [+ + +]
Author: Hugo Villeneuve <[email protected]>
Date:   Wed Sep 17 08:39:57 2025 -0400

    serial: sc16is7xx: fix bug in flow control levels init
    
    [ Upstream commit 535fd4c98452c87537a40610abba45daf5761ec6 ]
    
    When trying to set MCR[2], XON1 is incorrectly accessed instead. And when
    writing to the TCR register to configure flow control levels, we are
    incorrectly writing to the MSR register. The default value of $00 is then
    used for TCR, which means that selectable trigger levels in FCR are used
    in place of TCR.
    
    TCR/TLR access requires EFR[4] (enable enhanced functions) and MCR[2]
    to be set. EFR[4] is already set in probe().
    
    MCR access requires LCR[7] to be zero.
    
    Since LCR is set to $BF when trying to set MCR[2], XON1 is incorrectly
    accessed instead because MCR shares the same address space as XON1.
    
    Since MCR[2] is unmodified and still zero, when writing to TCR we are in
    fact writing to MSR because TCR/TLR registers share the same address space
    as MSR/SPR.
    
    Fix by first removing useless reconfiguration of EFR[4] (enable enhanced
    functions), as it is already enabled in sc16is7xx_probe() since commit
    43c51bb573aa ("sc16is7xx: make sure device is in suspend once probed").
    Now LCR is $00, which means that MCR access is enabled.
    
    Also remove regcache_cache_bypass() calls since we no longer access the
    enhanced registers set, and TCR is already declared as volatile (in fact
    by declaring MSR as volatile, which shares the same address).
    
    Finally disable access to TCR/TLR registers after modifying them by
    clearing MCR[2].
    
    Note: the comment about "... and internal clock div" is wrong and can be
          ignored/removed as access to internal clock div registers (DLL/DLH)
          is permitted only when LCR[7] is logic 1, not when enhanced features
          is enabled. And DLL/DLH access is not needed in sc16is7xx_startup().
    
    Fixes: dfeae619d781 ("serial: sc16is7xx")
    Cc: [email protected]
    Signed-off-by: Hugo Villeneuve <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    [ changed regmap variable from one->regmap to s->regmap ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
soc: qcom: mdt_loader: Deal with zero e_shentsize [+ + +]
Author: Bjorn Andersson <[email protected]>
Date:   Wed Jul 30 15:51:51 2025 -0500

    soc: qcom: mdt_loader: Deal with zero e_shentsize
    
    commit 25daf9af0ac1bf12490b723b5efaf8dcc85980bc upstream.
    
    Firmware that doesn't provide section headers leave both e_shentsize and
    e_shnum 0, which obvious isn't compatible with the newly introduced
    stricter checks.
    
    Make the section-related checks conditional on either of these values
    being non-zero.
    
    Fixes: 9f9967fed9d0 ("soc: qcom: mdt_loader: Ensure we don't read past the ELF header")
    Reported-by: Val Packett <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Reported-by: Neil Armstrong <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Bjorn Andersson <[email protected]>
    Fixes: 9f35ab0e53cc ("soc: qcom: mdt_loader: Fix error return values in mdt_header_valid()")
    Tested-by: Neil Armstrong <[email protected]> # on SM8650-QRD
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/20250730-mdt-loader-shentsize-zero-v1-1-04f43186229c@oss.qualcomm.com
    Signed-off-by: Bjorn Andersson <[email protected]>
    Cc: Yongqin Liu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tcp: Clear tcp_sk(sk)->fastopen_rsk in tcp_disconnect(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Mon Sep 15 17:56:46 2025 +0000

    tcp: Clear tcp_sk(sk)->fastopen_rsk in tcp_disconnect().
    
    [ Upstream commit 45c8a6cc2bcd780e634a6ba8e46bffbdf1fc5c01 ]
    
    syzbot reported the splat below where a socket had tcp_sk(sk)->fastopen_rsk
    in the TCP_ESTABLISHED state. [0]
    
    syzbot reused the server-side TCP Fast Open socket as a new client before
    the TFO socket completes 3WHS:
    
      1. accept()
      2. connect(AF_UNSPEC)
      3. connect() to another destination
    
    As of accept(), sk->sk_state is TCP_SYN_RECV, and tcp_disconnect() changes
    it to TCP_CLOSE and makes connect() possible, which restarts timers.
    
    Since tcp_disconnect() forgot to clear tcp_sk(sk)->fastopen_rsk, the
    retransmit timer triggered the warning and the intended packet was not
    retransmitted.
    
    Let's call reqsk_fastopen_remove() in tcp_disconnect().
    
    [0]:
    WARNING: CPU: 2 PID: 0 at net/ipv4/tcp_timer.c:542 tcp_retransmit_timer (net/ipv4/tcp_timer.c:542 (discriminator 7))
    Modules linked in:
    CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Not tainted 6.17.0-rc5-g201825fb4278 #62 PREEMPT(voluntary)
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    RIP: 0010:tcp_retransmit_timer (net/ipv4/tcp_timer.c:542 (discriminator 7))
    Code: 41 55 41 54 55 53 48 8b af b8 08 00 00 48 89 fb 48 85 ed 0f 84 55 01 00 00 0f b6 47 12 3c 03 74 0c 0f b6 47 12 3c 04 74 04 90 <0f> 0b 90 48 8b 85 c0 00 00 00 48 89 ef 48 8b 40 30 e8 6a 4f 06 3e
    RSP: 0018:ffffc900002f8d40 EFLAGS: 00010293
    RAX: 0000000000000002 RBX: ffff888106911400 RCX: 0000000000000017
    RDX: 0000000002517619 RSI: ffffffff83764080 RDI: ffff888106911400
    RBP: ffff888106d5c000 R08: 0000000000000001 R09: ffffc900002f8de8
    R10: 00000000000000c2 R11: ffffc900002f8ff8 R12: ffff888106911540
    R13: ffff888106911480 R14: ffff888106911840 R15: ffffc900002f8de0
    FS:  0000000000000000(0000) GS:ffff88907b768000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f8044d69d90 CR3: 0000000002c30003 CR4: 0000000000370ef0
    Call Trace:
     <IRQ>
     tcp_write_timer (net/ipv4/tcp_timer.c:738)
     call_timer_fn (kernel/time/timer.c:1747)
     __run_timers (kernel/time/timer.c:1799 kernel/time/timer.c:2372)
     timer_expire_remote (kernel/time/timer.c:2385 kernel/time/timer.c:2376 kernel/time/timer.c:2135)
     tmigr_handle_remote_up (kernel/time/timer_migration.c:944 kernel/time/timer_migration.c:1035)
     __walk_groups.isra.0 (kernel/time/timer_migration.c:533 (discriminator 1))
     tmigr_handle_remote (kernel/time/timer_migration.c:1096)
     handle_softirqs (./arch/x86/include/asm/jump_label.h:36 ./include/trace/events/irq.h:142 kernel/softirq.c:580)
     irq_exit_rcu (kernel/softirq.c:614 kernel/softirq.c:453 kernel/softirq.c:680 kernel/softirq.c:696)
     sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1050 (discriminator 35) arch/x86/kernel/apic/apic.c:1050 (discriminator 35))
     </IRQ>
    
    Fixes: 8336886f786f ("tcp: TCP Fast Open Server - support TFO listeners")
    Reported-by: syzkaller <[email protected]>
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tcp_bpf: Call sk_msg_free() when tcp_bpf_send_verdict() fails to allocate psock->cork. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Tue Sep 9 23:26:12 2025 +0000

    tcp_bpf: Call sk_msg_free() when tcp_bpf_send_verdict() fails to allocate psock->cork.
    
    [ Upstream commit a3967baad4d533dc254c31e0d221e51c8d223d58 ]
    
    syzbot reported the splat below. [0]
    
    The repro does the following:
    
      1. Load a sk_msg prog that calls bpf_msg_cork_bytes(msg, cork_bytes)
      2. Attach the prog to a SOCKMAP
      3. Add a socket to the SOCKMAP
      4. Activate fault injection
      5. Send data less than cork_bytes
    
    At 5., the data is carried over to the next sendmsg() as it is
    smaller than the cork_bytes specified by bpf_msg_cork_bytes().
    
    Then, tcp_bpf_send_verdict() tries to allocate psock->cork to hold
    the data, but this fails silently due to fault injection + __GFP_NOWARN.
    
    If the allocation fails, we need to revert the sk->sk_forward_alloc
    change done by sk_msg_alloc().
    
    Let's call sk_msg_free() when tcp_bpf_send_verdict fails to allocate
    psock->cork.
    
    The "*copied" also needs to be updated such that a proper error can
    be returned to the caller, sendmsg. It fails to allocate psock->cork.
    Nothing has been corked so far, so this patch simply sets "*copied"
    to 0.
    
    [0]:
    WARNING: net/ipv4/af_inet.c:156 at inet_sock_destruct+0x623/0x730 net/ipv4/af_inet.c:156, CPU#1: syz-executor/5983
    Modules linked in:
    CPU: 1 UID: 0 PID: 5983 Comm: syz-executor Not tainted syzkaller #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/12/2025
    RIP: 0010:inet_sock_destruct+0x623/0x730 net/ipv4/af_inet.c:156
    Code: 0f 0b 90 e9 62 fe ff ff e8 7a db b5 f7 90 0f 0b 90 e9 95 fe ff ff e8 6c db b5 f7 90 0f 0b 90 e9 bb fe ff ff e8 5e db b5 f7 90 <0f> 0b 90 e9 e1 fe ff ff 89 f9 80 e1 07 80 c1 03 38 c1 0f 8c 9f fc
    RSP: 0018:ffffc90000a08b48 EFLAGS: 00010246
    RAX: ffffffff8a09d0b2 RBX: dffffc0000000000 RCX: ffff888024a23c80
    RDX: 0000000000000100 RSI: 0000000000000fff RDI: 0000000000000000
    RBP: 0000000000000fff R08: ffff88807e07c627 R09: 1ffff1100fc0f8c4
    R10: dffffc0000000000 R11: ffffed100fc0f8c5 R12: ffff88807e07c380
    R13: dffffc0000000000 R14: ffff88807e07c60c R15: 1ffff1100fc0f872
    FS:  00005555604c4500(0000) GS:ffff888125af1000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00005555604df5c8 CR3: 0000000032b06000 CR4: 00000000003526f0
    Call Trace:
     <IRQ>
     __sk_destruct+0x86/0x660 net/core/sock.c:2339
     rcu_do_batch kernel/rcu/tree.c:2605 [inline]
     rcu_core+0xca8/0x1770 kernel/rcu/tree.c:2861
     handle_softirqs+0x286/0x870 kernel/softirq.c:579
     __do_softirq kernel/softirq.c:613 [inline]
     invoke_softirq kernel/softirq.c:453 [inline]
     __irq_exit_rcu+0xca/0x1f0 kernel/softirq.c:680
     irq_exit_rcu+0x9/0x30 kernel/softirq.c:696
     instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1052 [inline]
     sysvec_apic_timer_interrupt+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1052
     </IRQ>
    
    Fixes: 4f738adba30a ("bpf: create tcp_bpf_ulp allowing BPF to monitor socket TX/RX data")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing: Do not add length to print format in synthetic events [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Sun Sep 7 20:23:21 2025 -0400

    tracing: Do not add length to print format in synthetic events
    
    [ Upstream commit e1a453a57bc76be678bd746f84e3d73f378a9511 ]
    
    The following causes a vsnprintf fault:
    
      # echo 's:wake_lat char[] wakee; u64 delta;' >> /sys/kernel/tracing/dynamic_events
      # echo 'hist:keys=pid:ts=common_timestamp.usecs if !(common_flags & 0x18)' > /sys/kernel/tracing/events/sched/sched_waking/trigger
      # echo 'hist:keys=next_pid:delta=common_timestamp.usecs-$ts:onmatch(sched.sched_waking).trace(wake_lat,next_comm,$delta)' > /sys/kernel/tracing/events/sched/sched_switch/trigger
    
    Because the synthetic event's "wakee" field is created as a dynamic string
    (even though the string copied is not). The print format to print the
    dynamic string changed from "%*s" to "%s" because another location
    (__set_synth_event_print_fmt()) exported this to user space, and user
    space did not need that. But it is still used in print_synth_event(), and
    the output looks like:
    
              <idle>-0       [001] d..5.   193.428167: wake_lat: wakee=(efault)sshd-sessiondelta=155
        sshd-session-879     [001] d..5.   193.811080: wake_lat: wakee=(efault)kworker/u34:5delta=58
              <idle>-0       [002] d..5.   193.811198: wake_lat: wakee=(efault)bashdelta=91
                bash-880     [002] d..5.   193.811371: wake_lat: wakee=(efault)kworker/u35:2delta=21
              <idle>-0       [001] d..5.   193.811516: wake_lat: wakee=(efault)sshd-sessiondelta=129
        sshd-session-879     [001] d..5.   193.967576: wake_lat: wakee=(efault)kworker/u34:5delta=50
    
    The length isn't needed as the string is always nul terminated. Just print
    the string and not add the length (which was hard coded to the max string
    length anyway).
    
    Cc: [email protected]
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Tom Zanussi <[email protected]>
    Cc: Douglas Raillard <[email protected]>
    Acked-by: Masami Hiramatsu (Google) <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: 4d38328eb442d ("tracing: Fix synth event printk format for str fields");
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    [ offset calculations instead of union-based data structures ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

tracing: dynevent: Add a missing lockdown check on dynevent [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Fri Sep 19 10:15:56 2025 +0900

    tracing: dynevent: Add a missing lockdown check on dynevent
    
    commit 456c32e3c4316654f95f9d49c12cbecfb77d5660 upstream.
    
    Since dynamic_events interface on tracefs is compatible with
    kprobe_events and uprobe_events, it should also check the lockdown
    status and reject if it is set.
    
    Link: https://lore.kernel.org/all/175824455687.45175.3734166065458520748.stgit@devnote2/
    
    Fixes: 17911ff38aa5 ("tracing: Add locked_down checks to the open calls of files created for tracefs")
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

tracing: Fix tracing_marker may trigger page fault during preempt_disable [+ + +]
Author: Luo Gengkun <[email protected]>
Date:   Tue Aug 19 10:51:52 2025 +0000

    tracing: Fix tracing_marker may trigger page fault during preempt_disable
    
    [ Upstream commit 3d62ab32df065e4a7797204a918f6489ddb8a237 ]
    
    Both tracing_mark_write and tracing_mark_raw_write call
    __copy_from_user_inatomic during preempt_disable. But in some case,
    __copy_from_user_inatomic may trigger page fault, and will call schedule()
    subtly. And if a task is migrated to other cpu, the following warning will
    be trigger:
            if (RB_WARN_ON(cpu_buffer,
                           !local_read(&cpu_buffer->committing)))
    
    An example can illustrate this issue:
    
    process flow                                            CPU
    ---------------------------------------------------------------------
    
    tracing_mark_raw_write():                               cpu:0
       ...
       ring_buffer_lock_reserve():                          cpu:0
          ...
          cpu = raw_smp_processor_id()                      cpu:0
          cpu_buffer = buffer->buffers[cpu]                 cpu:0
          ...
       ...
       __copy_from_user_inatomic():                         cpu:0
          ...
          # page fault
          do_mem_abort():                                   cpu:0
             ...
             # Call schedule
             schedule()                                     cpu:0
             ...
       # the task schedule to cpu1
       __buffer_unlock_commit():                            cpu:1
          ...
          ring_buffer_unlock_commit():                      cpu:1
             ...
             cpu = raw_smp_processor_id()                   cpu:1
             cpu_buffer = buffer->buffers[cpu]              cpu:1
    
    As shown above, the process will acquire cpuid twice and the return values
    are not the same.
    
    To fix this problem using copy_from_user_nofault instead of
    __copy_from_user_inatomic, as the former performs 'access_ok' before
    copying.
    
    Link: https://lore.kernel.org/[email protected]
    Fixes: 656c7f0d2d2b ("tracing: Replace kmap with copy_from_user() in trace_marker writing")
    Signed-off-by: Luo Gengkun <[email protected]>
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tty: hvc_console: Call hvc_kick in hvc_write unconditionally [+ + +]
Author: Fabian Vogt <[email protected]>
Date:   Fri Aug 15 13:33:28 2025 +0200

    tty: hvc_console: Call hvc_kick in hvc_write unconditionally
    
    commit cfd956dcb101aa3d25bac321fae923323a47c607 upstream.
    
    After hvc_write completes, call hvc_kick also in the case the output
    buffer has been drained, to ensure tty_wakeup gets called.
    
    This fixes that functions which wait for a drained buffer got stuck
    occasionally.
    
    Cc: stable <[email protected]>
    Closes: https://bugzilla.opensuse.org/show_bug.cgi?id=1230062
    Signed-off-by: Fabian Vogt <[email protected]>
    Link: https://lore.kernel.org/r/2011735.PYKUYFuaPT@fvogt-thinkpad
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tunnels: reset the GSO metadata before reusing the skb [+ + +]
Author: Antoine Tenart <[email protected]>
Date:   Thu Sep 4 14:53:50 2025 +0200

    tunnels: reset the GSO metadata before reusing the skb
    
    [ Upstream commit e3c674db356c4303804b2415e7c2b11776cdd8c3 ]
    
    If a GSO skb is sent through a Geneve tunnel and if Geneve options are
    added, the split GSO skb might not fit in the MTU anymore and an ICMP
    frag needed packet can be generated. In such case the ICMP packet might
    go through the segmentation logic (and dropped) later if it reaches a
    path were the GSO status is checked and segmentation is required.
    
    This is especially true when an OvS bridge is used with a Geneve tunnel
    attached to it. The following set of actions could lead to the ICMP
    packet being wrongfully segmented:
    
    1. An skb is constructed by the TCP layer (e.g. gso_type SKB_GSO_TCPV4,
       segs >= 2).
    
    2. The skb hits the OvS bridge where Geneve options are added by an OvS
       action before being sent through the tunnel.
    
    3. When the skb is xmited in the tunnel, the split skb does not fit
       anymore in the MTU and iptunnel_pmtud_build_icmp is called to
       generate an ICMP fragmentation needed packet. This is done by reusing
       the original (GSO!) skb. The GSO metadata is not cleared.
    
    4. The ICMP packet being sent back hits the OvS bridge again and because
       skb_is_gso returns true, it goes through queue_gso_packets...
    
    5. ...where __skb_gso_segment is called. The skb is then dropped.
    
    6. Note that in the above example on re-transmission the skb won't be a
       GSO one as it would be segmented (len > MSS) and the ICMP packet
       should go through.
    
    Fix this by resetting the GSO information before reusing an skb in
    iptunnel_pmtud_build_icmp and iptunnel_pmtud_build_icmpv6.
    
    Fixes: 4cb47a8644cc ("tunnels: PMTU discovery support for directly bridged IP packets")
    Reported-by: Adrian Moreno <[email protected]>
    Signed-off-by: Antoine Tenart <[email protected]>
    Reviewed-by: Stefano Brivio <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
um: virtio_uml: Fix use-after-free after put_device in probe [+ + +]
Author: Miaoqian Lin <[email protected]>
Date:   Thu Aug 28 15:00:51 2025 +0800

    um: virtio_uml: Fix use-after-free after put_device in probe
    
    [ Upstream commit 7ebf70cf181651fe3f2e44e95e7e5073d594c9c0 ]
    
    When register_virtio_device() fails in virtio_uml_probe(),
    the code sets vu_dev->registered = 1 even though
    the device was not successfully registered.
    This can lead to use-after-free or other issues.
    
    Fixes: 04e5b1fb0183 ("um: virtio: Remove device on disconnect")
    Signed-off-by: Miaoqian Lin <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: core: Add 0x prefix to quirks debug output [+ + +]
Author: Jiayi Li <[email protected]>
Date:   Tue Jun 3 15:10:45 2025 +0800

    usb: core: Add 0x prefix to quirks debug output
    
    [ Upstream commit 47c428fce0b41b15ab321d8ede871f780ccd038f ]
    
    Use "0x%x" format for quirks debug print to clarify it's a hexadecimal
    value. Improves readability and consistency with other hex outputs.
    
    Signed-off-by: Jiayi Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
USB: gadget: dummy-hcd: Fix locking bug in RT-enabled kernels [+ + +]
Author: Alan Stern <[email protected]>
Date:   Wed Sep 17 09:17:54 2025 -0400

    USB: gadget: dummy-hcd: Fix locking bug in RT-enabled kernels
    
    [ Upstream commit 8d63c83d8eb922f6c316320f50c82fa88d099bea ]
    
    Yunseong Kim and the syzbot fuzzer both reported a problem in
    RT-enabled kernels caused by the way dummy-hcd mixes interrupt
    management and spin-locking.  The pattern was:
    
            local_irq_save(flags);
            spin_lock(&dum->lock);
            ...
            spin_unlock(&dum->lock);
            ...             // calls usb_gadget_giveback_request()
            local_irq_restore(flags);
    
    The code was written this way because usb_gadget_giveback_request()
    needs to be called with interrupts disabled and the private lock not
    held.
    
    While this pattern works fine in non-RT kernels, it's not good when RT
    is enabled.  RT kernels handle spinlocks much like mutexes; in particular,
    spin_lock() may sleep.  But sleeping is not allowed while local
    interrupts are disabled.
    
    To fix the problem, rewrite the code to conform to the pattern used
    elsewhere in dummy-hcd and other UDC drivers:
    
            spin_lock_irqsave(&dum->lock, flags);
            ...
            spin_unlock(&dum->lock);
            usb_gadget_giveback_request(...);
            spin_lock(&dum->lock);
            ...
            spin_unlock_irqrestore(&dum->lock, flags);
    
    This approach satisfies the RT requirements.
    
    Signed-off-by: Alan Stern <[email protected]>
    Cc: stable <[email protected]>
    Fixes: b4dbda1a22d2 ("USB: dummy-hcd: disable interrupts during req->complete")
    Reported-by: Yunseong Kim <[email protected]>
    Closes: <https://lore.kernel.org/linux-usb/[email protected]/>
    Reported-by: [email protected]
    Closes: <https://lore.kernel.org/linux-usb/[email protected]/>
    Tested-by: [email protected]
    CC: Sebastian Andrzej Siewior <[email protected]>
    CC: [email protected]
    Reviewed-by: Sebastian Andrzej Siewior <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: gadget: dummy_hcd: remove usage of list iterator past the loop body [+ + +]
Author: Jakob Koschel <[email protected]>
Date:   Wed Sep 17 09:17:53 2025 -0400

    usb: gadget: dummy_hcd: remove usage of list iterator past the loop body
    
    [ Upstream commit 7975f080d3557725160a878b1a64339043ba3d91 ]
    
    To move the list iterator variable into the list_for_each_entry_*()
    macro in the future it should be avoided to use the list iterator
    variable after the loop body.
    
    To *never* use the list iterator variable after the loop it was
    concluded to use a separate iterator variable [1].
    
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Jakob Koschel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 8d63c83d8eb9 ("USB: gadget: dummy-hcd: Fix locking bug in RT-enabled kernels")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
USB: serial: option: add Telit Cinterion FN990A w/audio compositions [+ + +]
Author: Fabio Porcedda <[email protected]>
Date:   Wed Aug 6 14:09:26 2025 +0200

    USB: serial: option: add Telit Cinterion FN990A w/audio compositions
    
    commit cba70aff623b104085ab5613fedd21f6ea19095a upstream.
    
    Add the following Telit Cinterion FN990A w/audio compositions:
    
    0x1077: tty (diag) + adb + rmnet + audio + tty (AT/NMEA) + tty (AT) +
    tty (AT) + tty (AT)
    T:  Bus=01 Lev=01 Prnt=01 Port=09 Cnt=01 Dev#=  8 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1077 Rev=05.04
    S:  Manufacturer=Telit Wireless Solutions
    S:  Product=FN990
    S:  SerialNumber=67e04c35
    C:  #Ifs=10 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
    I:  If#= 4 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
    E:  Ad=03(O) Atr=0d(Isoc) MxPS=  68 Ivl=1ms
    I:  If#= 5 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=0d(Isoc) MxPS=  68 Ivl=1ms
    I:  If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8c(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    
    0x1078: tty (diag) + adb + MBIM + audio + tty (AT/NMEA) + tty (AT) +
    tty (AT) + tty (AT)
    T:  Bus=01 Lev=01 Prnt=01 Port=09 Cnt=01 Dev#= 21 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1078 Rev=05.04
    S:  Manufacturer=Telit Wireless Solutions
    S:  Product=FN990
    S:  SerialNumber=67e04c35
    C:  #Ifs=11 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#=10 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8c(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#= 3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
    I:  If#= 5 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
    I:  If#= 6 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=0d(Isoc) MxPS=  68 Ivl=1ms
    I:  If#= 7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    
    0x1079: RNDIS + tty (diag) + adb + audio + tty (AT/NMEA) + tty (AT) +
    tty (AT) + tty (AT)
    T:  Bus=01 Lev=01 Prnt=01 Port=09 Cnt=01 Dev#= 23 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1079 Rev=05.04
    S:  Manufacturer=Telit Wireless Solutions
    S:  Product=FN990
    S:  SerialNumber=67e04c35
    C:  #Ifs=11 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#=10 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8c(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
    I:  If#= 5 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
    I:  If#= 6 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=0d(Isoc) MxPS=  68 Ivl=1ms
    I:  If#= 7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    
    Cc: [email protected]
    Signed-off-by: Fabio Porcedda <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: option: add Telit Cinterion LE910C4-WWX new compositions [+ + +]
Author: Fabio Porcedda <[email protected]>
Date:   Fri Aug 22 11:08:39 2025 +0200

    USB: serial: option: add Telit Cinterion LE910C4-WWX new compositions
    
    commit a5a261bea9bf8444300d1067b4a73bedee5b5227 upstream.
    
    Add the following Telit Cinterion LE910C4-WWX new compositions:
    
    0x1034: tty (AT) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  8 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1034 Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x1036: tty (AT) + tty (AT)
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1036 Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x1037: tty (diag) + tty (Telit custom) + tty (AT) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 15 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1037 Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x1038: tty (Telit custom) + tty (AT) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  9 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1038 Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x103b: tty (diag) + tty (Telit custom) + tty (AT) + tty (AT)
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=103b Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x103c: tty (Telit custom) + tty (AT) + tty (AT)
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=103c Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Cc: [email protected]
    Signed-off-by: Fabio Porcedda <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
wifi: mac80211: fix incorrect type for ret [+ + +]
Author: Liao Yuanhong <[email protected]>
Date:   Mon Aug 25 10:29:11 2025 +0800

    wifi: mac80211: fix incorrect type for ret
    
    [ Upstream commit a33b375ab5b3a9897a0ab76be8258d9f6b748628 ]
    
    The variable ret is declared as a u32 type, but it is assigned a value
    of -EOPNOTSUPP. Since unsigned types cannot correctly represent negative
    values, the type of ret should be changed to int.
    
    Signed-off-by: Liao Yuanhong <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfs: short circuit xfs_growfs_data_private() if delta is zero [+ + +]
Author: Eric Sandeen <[email protected]>
Date:   Wed Sep 10 12:16:21 2025 +0200

    xfs: short circuit xfs_growfs_data_private() if delta is zero
    
    [ Upstream commit 84712492e6dab803bf595fb8494d11098b74a652 ]
    
    Although xfs_growfs_data() doesn't call xfs_growfs_data_private()
    if in->newblocks == mp->m_sb.sb_dblocks, xfs_growfs_data_private()
    further massages the new block count so that we don't i.e. try
    to create a too-small new AG.
    
    This may lead to a delta of "0" in xfs_growfs_data_private(), so
    we end up in the shrink case and emit the EXPERIMENTAL warning
    even if we're not changing anything at all.
    
    Fix this by returning straightaway if the block delta is zero.
    
    (nb: in older kernels, the result of entering the shrink case
    with delta == 0 may actually let an -ENOSPC escape to userspace,
    which is confusing for users.)
    
    Fixes: fb2fc1720185 ("xfs: support shrinking unused space in the last AG")
    Signed-off-by: Eric Sandeen <[email protected]>
    Reviewed-by: "Darrick J. Wong" <[email protected]>
    Signed-off-by: Chandan Babu R <[email protected]>
    Signed-off-by: Amir Goldstein <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xhci: dbc: decouple endpoint allocation from initialization [+ + +]
Author: Mathias Nyman <[email protected]>
Date:   Wed Sep 17 10:04:31 2025 -0400

    xhci: dbc: decouple endpoint allocation from initialization
    
    [ Upstream commit 220a0ffde02f962c13bc752b01aa570b8c65a37b ]
    
    Decouple allocation of endpoint ring buffer from initialization
    of the buffer, and initialization of endpoint context parts from
    from the rest of the contexts.
    
    It allows driver to clear up and reinitialize endpoint rings
    after disconnect without reallocating everything.
    
    This is a prerequisite for the next patch that prevents the transfer
    ring from filling up with cancelled (no-op) TRBs if a debug cable is
    reconnected several times without transferring anything.
    
    Cc: [email protected]
    Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver")
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

xhci: dbc: Fix full DbC transfer ring after several reconnects [+ + +]
Author: Mathias Nyman <[email protected]>
Date:   Wed Sep 17 10:04:32 2025 -0400

    xhci: dbc: Fix full DbC transfer ring after several reconnects
    
    [ Upstream commit a5c98e8b1398534ae1feb6e95e2d3ee5215538ed ]
    
    Pending requests will be flushed on disconnect, and the corresponding
    TRBs will be turned into No-op TRBs, which are ignored by the xHC
    controller once it starts processing the ring.
    
    If the USB debug cable repeatedly disconnects before ring is started
    then the ring will eventually be filled with No-op TRBs.
    No new transfers can be queued when the ring is full, and driver will
    print the following error message:
    
        "xhci_hcd 0000:00:14.0: failed to queue trbs"
    
    This is a normal case for 'in' transfers where TRBs are always enqueued
    in advance, ready to take on incoming data. If no data arrives, and
    device is disconnected, then ring dequeue will remain at beginning of
    the ring while enqueue points to first free TRB after last cancelled
    No-op TRB.
    s
    Solve this by reinitializing the rings when the debug cable disconnects
    and DbC is leaving the configured state.
    Clear the whole ring buffer and set enqueue and dequeue to the beginning
    of ring, and set cycle bit to its initial state.
    
    Cc: [email protected]
    Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver")
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>