Changelog in Linux kernel 6.6.96

 
af_unix: Define locking order for U_LOCK_SECOND in unix_state_double_lock(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jun 20 13:56:14 2024 -0700

    af_unix: Define locking order for U_LOCK_SECOND in unix_state_double_lock().
    
    [ Upstream commit ed99822817cb728eee8786c1c921c69c6be206fe ]
    
    unix_dgram_connect() and unix_dgram_{send,recv}msg() lock the socket
    and peer in ascending order of the socket address.
    
    Let's define the order as unix_state_lock_cmp_fn() instead of using
    unix_state_lock_nested().
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Kent Overstreet <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 32ca245464e1 ("af_unix: Don't leave consecutive consumed OOB skbs.")
    Signed-off-by: Sasha Levin <[email protected]>

af_unix: Define locking order for U_RECVQ_LOCK_EMBRYO in unix_collect_skb(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jun 20 13:56:20 2024 -0700

    af_unix: Define locking order for U_RECVQ_LOCK_EMBRYO in unix_collect_skb().
    
    [ Upstream commit 8647ece4814f3bfdb5f7a8e19f882c9b89299a07 ]
    
    While GC is cleaning up cyclic references by SCM_RIGHTS,
    unix_collect_skb() collects skb in the socket's recvq.
    
    If the socket is TCP_LISTEN, we need to collect skb in the
    embryo's queue.  Then, both the listener's recvq lock and
    the embroy's one are held.
    
    The locking is always done in the listener -> embryo order.
    
    Let's define it as unix_recvq_lock_cmp_fn() instead of using
    spin_lock_nested().
    
    Note that the reverse order is defined for consistency.
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 32ca245464e1 ("af_unix: Don't leave consecutive consumed OOB skbs.")
    Signed-off-by: Sasha Levin <[email protected]>

af_unix: Define locking order for unix_table_double_lock(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jun 20 13:56:13 2024 -0700

    af_unix: Define locking order for unix_table_double_lock().
    
    [ Upstream commit 3955802f160b5c61ac00d7e54da8d746f2e4a2d5 ]
    
    When created, AF_UNIX socket is put into net->unx.table.buckets[],
    and the hash is stored in sk->sk_hash.
    
      * unbound socket  : 0 <= sk_hash <= UNIX_HASH_MOD
    
    When bind() is called, the socket could be moved to another bucket.
    
      * pathname socket : 0 <= sk_hash <= UNIX_HASH_MOD
      * abstract socket : UNIX_HASH_MOD + 1 <= sk_hash <= UNIX_HASH_MOD * 2 + 1
    
    Then, we call unix_table_double_lock() which locks a single bucket
    or two.
    
    Let's define the order as unix_table_lock_cmp_fn() instead of using
    spin_lock_nested().
    
    The locking is always done in ascending order of sk->sk_hash, which
    is the index of buckets/locks array allocated by kvmalloc_array().
    
      sk_hash_A < sk_hash_B
      <=> &locks[sk_hash_A].dep_map < &locks[sk_hash_B].dep_map
    
    So, the relation of two sk->sk_hash can be derived from the addresses
    of dep_map in the array of locks.
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Kent Overstreet <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 32ca245464e1 ("af_unix: Don't leave consecutive consumed OOB skbs.")
    Signed-off-by: Sasha Levin <[email protected]>

af_unix: Don't call skb_get() for OOB skb. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Aug 16 16:39:21 2024 -0700

    af_unix: Don't call skb_get() for OOB skb.
    
    [ Upstream commit 8594d9b85c07f05e431bd07e895c2a3ad9b85d6f ]
    
    Since introduced, OOB skb holds an additional reference count with no
    special reason and caused many issues.
    
    Also, kfree_skb() and consume_skb() are used to decrement the count,
    which is confusing.
    
    Let's drop the unnecessary skb_get() in queue_oob() and corresponding
    kfree_skb(), consume_skb(), and skb_unref().
    
    Now unix_sk(sk)->oob_skb is just a pointer to skb in the receive queue,
    so special handing is no longer needed in GC.
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 32ca245464e1 ("af_unix: Don't leave consecutive consumed OOB skbs.")
    Signed-off-by: Sasha Levin <[email protected]>

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.
    
    [ Upstream commit 32ca245464e1479bfea8592b9db227fdc1641705 ]
    
    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]>
    Signed-off-by: Sasha Levin <[email protected]>

af_unix: Don't set -ECONNRESET for consumed OOB skb. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Wed Jun 18 21:13:57 2025 -0700

    af_unix: Don't set -ECONNRESET for consumed OOB skb.
    
    [ Upstream commit 2a5a4841846b079b5fca5752fe94e59346fbda40 ]
    
    Christian Brauner reported that even after MSG_OOB data is consumed,
    calling close() on the receiver socket causes the peer's recv() to
    return -ECONNRESET:
    
      1. send() and recv() an OOB data.
    
        >>> from socket import *
        >>> s1, s2 = socketpair(AF_UNIX, SOCK_STREAM)
        >>> s1.send(b'x', MSG_OOB)
        1
        >>> s2.recv(1, MSG_OOB)
        b'x'
    
      2. close() for s2 sets ECONNRESET to s1->sk_err even though
         s2 consumed the OOB data
    
        >>> s2.close()
        >>> s1.recv(10, MSG_DONTWAIT)
        ...
        ConnectionResetError: [Errno 104] Connection reset by peer
    
    Even after being consumed, the skb holding the OOB 1-byte data stays in
    the recv queue to mark the OOB boundary and break recv() at that point.
    
    This must be considered while close()ing a socket.
    
    Let's skip the leading consumed OOB skb while checking the -ECONNRESET
    condition in unix_release_sock().
    
    Fixes: 314001f0bf92 ("af_unix: Add OOB support")
    Reported-by: Christian Brauner <[email protected]>
    Closes: https://lore.kernel.org/netdev/20250529-sinkt-abfeuern-e7b08200c6b0@brauner/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Acked-by: Christian Brauner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA: hda/realtek: Fix built-in mic on ASUS VivoBook X507UAR [+ + +]
Author: Salvatore Bonaccorso <[email protected]>
Date:   Wed Jun 25 20:41:28 2025 +0200

    ALSA: hda/realtek: Fix built-in mic on ASUS VivoBook X507UAR
    
    [ Upstream commit 7ab6847a03229e73bb7c58ca397630f699e79b53 ]
    
    The built-in mic of ASUS VivoBook X507UAR is broken recently by the fix
    of the pin sort. The fixup ALC256_FIXUP_ASUS_MIC_NO_PRESENCE is working
    for addressing the regression, too.
    
    Fixes: 3b4309546b48 ("ALSA: hda: Fix headset detection failure due to unstable sort")
    Reported-by: Igor Tamara <[email protected]>
    Closes: https://bugs.debian.org/1108069
    Signed-off-by: Salvatore Bonaccorso <[email protected]>
    Link: https://lore.kernel.org/CADdHDco7_o=4h_epjEAb92Dj-vUz_PoTC2-W9g5ncT2E0NzfeQ@mail.gmail.com
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda: Add new pci id for AMD GPU display HD audio controller [+ + +]
Author: Vijendar Mukunda <[email protected]>
Date:   Thu May 29 11:08:13 2025 +0530

    ALSA: hda: Add new pci id for AMD GPU display HD audio controller
    
    [ Upstream commit ab72bfce7647522e01a181e3600c3d14ff5c143e ]
    
    Add new pci id for AMD GPU display HD audio controller(device id- 0xab40).
    
    Signed-off-by: Vijendar Mukunda <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda: Ignore unsol events for cards being shut down [+ + +]
Author: Cezary Rojewski <[email protected]>
Date:   Fri May 30 16:13:09 2025 +0200

    ALSA: hda: Ignore unsol events for cards being shut down
    
    [ Upstream commit 3f100f524e75586537e337b34d18c8d604b398e7 ]
    
    For the classic snd_hda_intel driver, codec->card and bus->card point to
    the exact same thing. When snd_card_diconnect() fires, bus->shutdown is
    set thanks to azx_dev_disconnect(). card->shutdown is already set when
    that happens but both provide basically the same functionality.
    
    For the DSP snd_soc_avs driver where multiple codecs are located on
    multiple cards, bus->shutdown 'shortcut' is not sufficient. One codec
    card may be unregistered while other codecs are still operational.
    Proper check in form of card->shutdown must be used to verify whether
    the codec's card is being shut down.
    
    Reviewed-by: Amadeusz Sławiński <[email protected]>
    Signed-off-by: Cezary Rojewski <[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 a quirk for Lenovo Thinkpad Thunderbolt 3 dock [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Tue May 27 12:26:56 2025 -0500

    ALSA: usb-audio: Add a quirk for Lenovo Thinkpad Thunderbolt 3 dock
    
    [ Upstream commit 4919353c7789b8047e06a9b2b943f775a8f72883 ]
    
    The audio controller in the Lenovo Thinkpad Thunderbolt 3 dock doesn't
    support reading the sampling rate.
    
    Add a quirk for it.
    
    Suggested-by: Takashi Iwai <[email protected]>
    Signed-off-by: Mario Limonciello <[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: Fix out-of-bounds read in snd_usb_get_audioformat_uac3() [+ + +]
Author: Youngjun Lee <[email protected]>
Date:   Mon Jun 23 20:05:25 2025 +0900

    ALSA: usb-audio: Fix out-of-bounds read in snd_usb_get_audioformat_uac3()
    
    [ Upstream commit fb4e2a6e8f28a3c0ad382e363aeb9cd822007b8a ]
    
    In snd_usb_get_audioformat_uac3(), the length value returned from
    snd_usb_ctl_msg() is used directly for memory allocation without
    validation. This length is controlled by the USB device.
    
    The allocated buffer is cast to a uac3_cluster_header_descriptor
    and its fields are accessed without verifying that the buffer
    is large enough. If the device returns a smaller than expected
    length, this leads to an out-of-bounds read.
    
    Add a length check to ensure the buffer is large enough for
    uac3_cluster_header_descriptor.
    
    Signed-off-by: Youngjun Lee <[email protected]>
    Fixes: 9a2fe9b801f5 ("ALSA: usb: initial USB Audio Device Class 3.0 support")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
amd/amdkfd: fix a kfd_process ref leak [+ + +]
Author: Yifan Zhang <[email protected]>
Date:   Wed May 21 18:06:28 2025 +0800

    amd/amdkfd: fix a kfd_process ref leak
    
    [ Upstream commit 90237b16ec1d7afa16e2173cc9a664377214cdd9 ]
    
    This patch is to fix a kfd_prcess ref leak.
    
    Signed-off-by: Yifan Zhang <[email protected]>
    Reviewed-by: Philip Yang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: 9354/1: ptrace: Use bitfield helpers [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Mon Feb 26 12:25:01 2024 +0100

    ARM: 9354/1: ptrace: Use bitfield helpers
    
    commit b36e78b216e632d90138751e4ff80044de303656 upstream.
    
    The isa_mode() macro extracts two fields, and recombines them into a
    single value.
    
    Make this more obvious by using the FIELD_GET() helper, and shifting the
    result into its final resting place.
    
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Reviewed-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Russell King (Oracle) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: amd: yc: Add DMI quirk for Lenovo IdeaPad Slim 5 15 [+ + +]
Author: Oliver Schramm <[email protected]>
Date:   Sun Jun 22 00:30:01 2025 +0200

    ASoC: amd: yc: Add DMI quirk for Lenovo IdeaPad Slim 5 15
    
    commit bf39286adc5e10ce3e32eb86ad316ae56f3b52a0 upstream.
    
    It's smaller brother has already received the patch to enable the microphone,
    now add it too to the DMI quirk table.
    
    Cc: [email protected]
    Signed-off-by: Oliver Schramm <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: codec: wcd9335: Convert to GPIO descriptors [+ + +]
Author: Peng Fan <[email protected]>
Date:   Mon Mar 24 19:51:29 2025 +0800

    ASoC: codec: wcd9335: Convert to GPIO descriptors
    
    [ Upstream commit d5099bc1b56417733f4cccf10c61ee74dadd5562 ]
    
    of_gpio.h is deprecated, update the driver to use GPIO descriptors.
    - Use dev_gpiod_get to get GPIO descriptor.
    - Use gpiod_set_value to configure output value.
    
    With legacy of_gpio API, the driver set gpio value 0 to assert reset,
    and 1 to deassert reset. And the reset-gpios use GPIO_ACTIVE_LOW flag in
    DTS, so set GPIOD_OUT_LOW when get GPIO descriptors, and set value 1 means
    output low, set value 0 means output high with gpiod API.
    
    The in-tree DTS files have the right polarity set up already so we can
    expect this to "just work"
    
    Reviewed-by: Linus Walleij <[email protected]>
    Signed-off-by: Peng Fan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: 9079db287fc3 ("ASoC: codecs: wcd9335: Fix missing free of regulator supplies")
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: codecs: wcd9335: Fix missing free of regulator supplies [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Mon May 26 11:47:01 2025 +0200

    ASoC: codecs: wcd9335: Fix missing free of regulator supplies
    
    [ Upstream commit 9079db287fc3e38e040b0edeb0a25770bb679c8e ]
    
    Driver gets and enables all regulator supplies in probe path
    (wcd9335_parse_dt() and wcd9335_power_on_reset()), but does not cleanup
    in final error paths and in unbind (missing remove() callback).  This
    leads to leaked memory and unbalanced regulator enable count during
    probe errors or unbind.
    
    Fix this by converting entire code into devm_regulator_bulk_get_enable()
    which also greatly simplifies the code.
    
    Fixes: 20aedafdf492 ("ASoC: wcd9335: add support to wcd9335 codec")
    Cc: [email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/20250526-b4-b4-asoc-wcd9395-vdd-px-fixes-v1-1-0b8a2993b7d3@linaro.org
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: codecs: wcd9335: Handle nicer probe deferral and simplify with dev_err_probe() [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Jun 12 18:15:17 2024 +0200

    ASoC: codecs: wcd9335: Handle nicer probe deferral and simplify with dev_err_probe()
    
    [ Upstream commit 4a03b5dbad466c902d522f3405daa4e5d80578c5 ]
    
    wcd9335_parse_dt() function is called only from probe(), so printing
    errors on resource acquisition is discouraged, because it can pollute
    dmesg.  Use dev_err_probe() to fix this and also make the code a bit
    simpler.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: 9079db287fc3 ("ASoC: codecs: wcd9335: Fix missing free of regulator supplies")
    Signed-off-by: Sasha Levin <[email protected]>

 
atm: clip: prevent NULL deref in clip_push() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Jun 20 14:28:44 2025 +0000

    atm: clip: prevent NULL deref in clip_push()
    
    [ Upstream commit b993ea46b3b601915ceaaf3c802adf11e7d6bac6 ]
    
    Blamed commit missed that vcc_destroy_socket() calls
    clip_push() with a NULL skb.
    
    If clip_devs is NULL, clip_push() then crashes when reading
    skb->truesize.
    
    Fixes: 93a2014afbac ("atm: fix a UAF in lec_arp_clear_vccs()")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Cong Wang <[email protected]>
    Cc: Gengming Liu <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: Release atm_dev_mutex after removing procfs in atm_dev_deregister(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Tue Jun 24 14:45:00 2025 -0700

    atm: Release atm_dev_mutex after removing procfs in atm_dev_deregister().
    
    [ Upstream commit a433791aeaea6e84df709e0b9584b9bbe040cd1c ]
    
    syzbot reported a warning below during atm_dev_register(). [0]
    
    Before creating a new device and procfs/sysfs for it, atm_dev_register()
    looks up a duplicated device by __atm_dev_lookup().  These operations are
    done under atm_dev_mutex.
    
    However, when removing a device in atm_dev_deregister(), it releases the
    mutex just after removing the device from the list that __atm_dev_lookup()
    iterates over.
    
    So, there will be a small race window where the device does not exist on
    the device list but procfs/sysfs are still not removed, triggering the
    splat.
    
    Let's hold the mutex until procfs/sysfs are removed in
    atm_dev_deregister().
    
    [0]:
    proc_dir_entry 'atm/atmtcp:0' already registered
    WARNING: CPU: 0 PID: 5919 at fs/proc/generic.c:377 proc_register+0x455/0x5f0 fs/proc/generic.c:377
    Modules linked in:
    CPU: 0 UID: 0 PID: 5919 Comm: syz-executor284 Not tainted 6.16.0-rc2-syzkaller-00047-g52da431bf03b #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
    RIP: 0010:proc_register+0x455/0x5f0 fs/proc/generic.c:377
    Code: 48 89 f9 48 c1 e9 03 80 3c 01 00 0f 85 a2 01 00 00 48 8b 44 24 10 48 c7 c7 20 c0 c2 8b 48 8b b0 d8 00 00 00 e8 0c 02 1c ff 90 <0f> 0b 90 90 48 c7 c7 80 f2 82 8e e8 0b de 23 09 48 8b 4c 24 28 48
    RSP: 0018:ffffc9000466fa30 EFLAGS: 00010282
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff817ae248
    RDX: ffff888026280000 RSI: ffffffff817ae255 RDI: 0000000000000001
    RBP: ffff8880232bed48 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000001 R12: ffff888076ed2140
    R13: dffffc0000000000 R14: ffff888078a61340 R15: ffffed100edda444
    FS:  00007f38b3b0c6c0(0000) GS:ffff888124753000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f38b3bdf953 CR3: 0000000076d58000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     proc_create_data+0xbe/0x110 fs/proc/generic.c:585
     atm_proc_dev_register+0x112/0x1e0 net/atm/proc.c:361
     atm_dev_register+0x46d/0x890 net/atm/resources.c:113
     atmtcp_create+0x77/0x210 drivers/atm/atmtcp.c:369
     atmtcp_attach drivers/atm/atmtcp.c:403 [inline]
     atmtcp_ioctl+0x2f9/0xd60 drivers/atm/atmtcp.c:464
     do_vcc_ioctl+0x12c/0x930 net/atm/ioctl.c:159
     sock_do_ioctl+0x115/0x280 net/socket.c:1190
     sock_ioctl+0x227/0x6b0 net/socket.c:1311
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:907 [inline]
     __se_sys_ioctl fs/ioctl.c:893 [inline]
     __x64_sys_ioctl+0x18b/0x210 fs/ioctl.c:893
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xcd/0x4c0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f38b3b74459
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 51 18 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f38b3b0c198 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007f38b3bfe318 RCX: 00007f38b3b74459
    RDX: 0000000000000000 RSI: 0000000000006180 RDI: 0000000000000005
    RBP: 00007f38b3bfe310 R08: 65732f636f72702f R09: 65732f636f72702f
    R10: 65732f636f72702f R11: 0000000000000246 R12: 00007f38b3bcb0ac
    R13: 00007f38b3b0c1a0 R14: 0000200000000200 R15: 00007f38b3bcb03b
     </TASK>
    
    Fixes: 64bf69ddff76 ("[ATM]: deregistration removes device from atm_devs list immediately")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Tested-by: [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]>

 
attach_recursive_mnt(): do not lock the covering tree when sliding something under it [+ + +]
Author: Al Viro <[email protected]>
Date:   Sun Jun 22 18:03:29 2025 -0400

    attach_recursive_mnt(): do not lock the covering tree when sliding something under it
    
    [ Upstream commit ce7df19686530920f2f6b636e71ce5eb1d9303ef ]
    
    If we are propagating across the userns boundary, we need to lock the
    mounts added there.  However, in case when something has already
    been mounted there and we end up sliding a new tree under that,
    the stuff that had been there before should not get locked.
    
    IOW, lock_mnt_tree() should be called before we reparent the
    preexisting tree on top of what we are adding.
    
    Fixes: 3bd045cc9c4b ("separate copying and locking mount tree on cross-userns copies")
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bcache: fix NULL pointer in cache_set_flush() [+ + +]
Author: Linggang Zeng <[email protected]>
Date:   Tue May 27 13:15:59 2025 +0800

    bcache: fix NULL pointer in cache_set_flush()
    
    [ Upstream commit 1e46ed947ec658f89f1a910d880cd05e42d3763e ]
    
    1. LINE#1794 - LINE#1887 is some codes about function of
       bch_cache_set_alloc().
    2. LINE#2078 - LINE#2142 is some codes about function of
       register_cache_set().
    3. register_cache_set() will call bch_cache_set_alloc() in LINE#2098.
    
     1794 struct cache_set *bch_cache_set_alloc(struct cache_sb *sb)
     1795 {
     ...
     1860         if (!(c->devices = kcalloc(c->nr_uuids, sizeof(void *), GFP_KERNEL)) ||
     1861             mempool_init_slab_pool(&c->search, 32, bch_search_cache) ||
     1862             mempool_init_kmalloc_pool(&c->bio_meta, 2,
     1863                                 sizeof(struct bbio) + sizeof(struct bio_vec) *
     1864                                 bucket_pages(c)) ||
     1865             mempool_init_kmalloc_pool(&c->fill_iter, 1, iter_size) ||
     1866             bioset_init(&c->bio_split, 4, offsetof(struct bbio, bio),
     1867                         BIOSET_NEED_BVECS|BIOSET_NEED_RESCUER) ||
     1868             !(c->uuids = alloc_bucket_pages(GFP_KERNEL, c)) ||
     1869             !(c->moving_gc_wq = alloc_workqueue("bcache_gc",
     1870                                                 WQ_MEM_RECLAIM, 0)) ||
     1871             bch_journal_alloc(c) ||
     1872             bch_btree_cache_alloc(c) ||
     1873             bch_open_buckets_alloc(c) ||
     1874             bch_bset_sort_state_init(&c->sort, ilog2(c->btree_pages)))
     1875                 goto err;
                          ^^^^^^^^
     1876
     ...
     1883         return c;
     1884 err:
     1885         bch_cache_set_unregister(c);
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
     1886         return NULL;
     1887 }
     ...
     2078 static const char *register_cache_set(struct cache *ca)
     2079 {
     ...
     2098         c = bch_cache_set_alloc(&ca->sb);
     2099         if (!c)
     2100                 return err;
                          ^^^^^^^^^^
     ...
     2128         ca->set = c;
     2129         ca->set->cache[ca->sb.nr_this_dev] = ca;
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     ...
     2138         return NULL;
     2139 err:
     2140         bch_cache_set_unregister(c);
     2141         return err;
     2142 }
    
    (1) If LINE#1860 - LINE#1874 is true, then do 'goto err'(LINE#1875) and
        call bch_cache_set_unregister()(LINE#1885).
    (2) As (1) return NULL(LINE#1886), LINE#2098 - LINE#2100 would return.
    (3) As (2) has returned, LINE#2128 - LINE#2129 would do *not* give the
        value to c->cache[], it means that c->cache[] is NULL.
    
    LINE#1624 - LINE#1665 is some codes about function of cache_set_flush().
    As (1), in LINE#1885 call
    bch_cache_set_unregister()
    ---> bch_cache_set_stop()
         ---> closure_queue()
              -.-> cache_set_flush() (as below LINE#1624)
    
     1624 static void cache_set_flush(struct closure *cl)
     1625 {
     ...
     1654         for_each_cache(ca, c, i)
     1655                 if (ca->alloc_thread)
                              ^^
     1656                         kthread_stop(ca->alloc_thread);
     ...
     1665 }
    
    (4) In LINE#1655 ca is NULL(see (3)) in cache_set_flush() then the
        kernel crash occurred as below:
    [  846.712887] bcache: register_cache() error drbd6: cannot allocate memory
    [  846.713242] bcache: register_bcache() error : failed to register device
    [  846.713336] bcache: cache_set_free() Cache set 2f84bdc1-498a-4f2f-98a7-01946bf54287 unregistered
    [  846.713768] BUG: unable to handle kernel NULL pointer dereference at 00000000000009f8
    [  846.714790] PGD 0 P4D 0
    [  846.715129] Oops: 0000 [#1] SMP PTI
    [  846.715472] CPU: 19 PID: 5057 Comm: kworker/19:16 Kdump: loaded Tainted: G           OE    --------- -  - 4.18.0-147.5.1.el8_1.5es.3.x86_64 #1
    [  846.716082] Hardware name: ESPAN GI-25212/X11DPL-i, BIOS 2.1 06/15/2018
    [  846.716451] Workqueue: events cache_set_flush [bcache]
    [  846.716808] RIP: 0010:cache_set_flush+0xc9/0x1b0 [bcache]
    [  846.717155] Code: 00 4c 89 a5 b0 03 00 00 48 8b 85 68 f6 ff ff a8 08 0f 84 88 00 00 00 31 db 66 83 bd 3c f7 ff ff 00 48 8b 85 48 ff ff ff 74 28 <48> 8b b8 f8 09 00 00 48 85 ff 74 05 e8 b6 58 a2 e1 0f b7 95 3c f7
    [  846.718026] RSP: 0018:ffffb56dcf85fe70 EFLAGS: 00010202
    [  846.718372] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    [  846.718725] RDX: 0000000000000001 RSI: 0000000040000001 RDI: 0000000000000000
    [  846.719076] RBP: ffffa0ccc0f20df8 R08: ffffa0ce1fedb118 R09: 000073746e657665
    [  846.719428] R10: 8080808080808080 R11: 0000000000000000 R12: ffffa0ce1fee8700
    [  846.719779] R13: ffffa0ccc0f211a8 R14: ffffa0cd1b902840 R15: ffffa0ccc0f20e00
    [  846.720132] FS:  0000000000000000(0000) GS:ffffa0ce1fec0000(0000) knlGS:0000000000000000
    [  846.720726] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  846.721073] CR2: 00000000000009f8 CR3: 00000008ba00a005 CR4: 00000000007606e0
    [  846.721426] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  846.721778] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  846.722131] PKRU: 55555554
    [  846.722467] Call Trace:
    [  846.722814]  process_one_work+0x1a7/0x3b0
    [  846.723157]  worker_thread+0x30/0x390
    [  846.723501]  ? create_worker+0x1a0/0x1a0
    [  846.723844]  kthread+0x112/0x130
    [  846.724184]  ? kthread_flush_work_fn+0x10/0x10
    [  846.724535]  ret_from_fork+0x35/0x40
    
    Now, check whether that ca is NULL in LINE#1655 to fix the issue.
    
    Signed-off-by: Linggang Zeng <[email protected]>
    Signed-off-by: Mingzhe Zou <[email protected]>
    Signed-off-by: Coly Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: L2CAP: Fix L2CAP MTU negotiation [+ + +]
Author: Frédéric Danis <[email protected]>
Date:   Thu Jun 12 09:50:34 2025 +0200

    Bluetooth: L2CAP: Fix L2CAP MTU negotiation
    
    commit 042bb9603c44620dce98717a2d23235ca57a00d7 upstream.
    
    OBEX download from iPhone is currently slow due to small packet size
    used to transfer data which doesn't follow the MTU negotiated during
    L2CAP connection, i.e. 672 bytes instead of 32767:
    
      < ACL Data TX: Handle 11 flags 0x00 dlen 12
          L2CAP: Connection Request (0x02) ident 18 len 4
            PSM: 4103 (0x1007)
            Source CID: 72
      > ACL Data RX: Handle 11 flags 0x02 dlen 16
          L2CAP: Connection Response (0x03) ident 18 len 8
            Destination CID: 14608
            Source CID: 72
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
      < ACL Data TX: Handle 11 flags 0x00 dlen 27
          L2CAP: Configure Request (0x04) ident 20 len 19
            Destination CID: 14608
            Flags: 0x0000
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 32767
            Option: Retransmission and Flow Control (0x04) [mandatory]
              Mode: Enhanced Retransmission (0x03)
              TX window size: 63
              Max transmit: 3
              Retransmission timeout: 2000
              Monitor timeout: 12000
              Maximum PDU size: 1009
      > ACL Data RX: Handle 11 flags 0x02 dlen 26
          L2CAP: Configure Request (0x04) ident 72 len 18
            Destination CID: 72
            Flags: 0x0000
            Option: Retransmission and Flow Control (0x04) [mandatory]
              Mode: Enhanced Retransmission (0x03)
              TX window size: 32
              Max transmit: 255
              Retransmission timeout: 0
              Monitor timeout: 0
              Maximum PDU size: 65527
            Option: Frame Check Sequence (0x05) [mandatory]
              FCS: 16-bit FCS (0x01)
      < ACL Data TX: Handle 11 flags 0x00 dlen 29
          L2CAP: Configure Response (0x05) ident 72 len 21
            Source CID: 14608
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 672
            Option: Retransmission and Flow Control (0x04) [mandatory]
              Mode: Enhanced Retransmission (0x03)
              TX window size: 32
              Max transmit: 255
              Retransmission timeout: 2000
              Monitor timeout: 12000
              Maximum PDU size: 1009
      > ACL Data RX: Handle 11 flags 0x02 dlen 32
          L2CAP: Configure Response (0x05) ident 20 len 24
            Source CID: 72
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 32767
            Option: Retransmission and Flow Control (0x04) [mandatory]
              Mode: Enhanced Retransmission (0x03)
              TX window size: 63
              Max transmit: 3
              Retransmission timeout: 2000
              Monitor timeout: 12000
              Maximum PDU size: 1009
            Option: Frame Check Sequence (0x05) [mandatory]
              FCS: 16-bit FCS (0x01)
      ...
      > ACL Data RX: Handle 11 flags 0x02 dlen 680
          Channel: 72 len 676 ctrl 0x0202 [PSM 4103 mode Enhanced Retransmission (0x03)] {chan 8}
          I-frame: Unsegmented TxSeq 1 ReqSeq 2
      < ACL Data TX: Handle 11 flags 0x00 dlen 13
          Channel: 14608 len 9 ctrl 0x0204 [PSM 4103 mode Enhanced Retransmission (0x03)] {chan 8}
          I-frame: Unsegmented TxSeq 2 ReqSeq 2
      > ACL Data RX: Handle 11 flags 0x02 dlen 680
          Channel: 72 len 676 ctrl 0x0304 [PSM 4103 mode Enhanced Retransmission (0x03)] {chan 8}
          I-frame: Unsegmented TxSeq 2 ReqSeq 3
    
    The MTUs are negotiated for each direction. In this traces 32767 for
    iPhone->localhost and no MTU for localhost->iPhone, which based on
    '4.4 L2CAP_CONFIGURATION_REQ' (Core specification v5.4, Vol. 3, Part
    A):
    
      The only parameters that should be included in the
      L2CAP_CONFIGURATION_REQ packet are those that require different
      values than the default or previously agreed values.
      ...
      Any missing configuration parameters are assumed to have their
      most recently explicitly or implicitly accepted values.
    
    and '5.1 Maximum transmission unit (MTU)':
    
      If the remote device sends a positive L2CAP_CONFIGURATION_RSP
      packet it should include the actual MTU to be used on this channel
      for traffic flowing into the local device.
      ...
      The default value is 672 octets.
    
    is set by BlueZ to 672 bytes.
    
    It seems that the iPhone used the lowest negotiated value to transfer
    data to the localhost instead of the negotiated one for the incoming
    direction.
    
    This could be fixed by using the MTU negotiated for the other
    direction, if exists, in the L2CAP_CONFIGURATION_RSP.
    This allows to use segmented packets as in the following traces:
    
      < ACL Data TX: Handle 11 flags 0x00 dlen 12
            L2CAP: Connection Request (0x02) ident 22 len 4
              PSM: 4103 (0x1007)
              Source CID: 72
      < ACL Data TX: Handle 11 flags 0x00 dlen 27
            L2CAP: Configure Request (0x04) ident 24 len 19
              Destination CID: 2832
              Flags: 0x0000
              Option: Maximum Transmission Unit (0x01) [mandatory]
                MTU: 32767
              Option: Retransmission and Flow Control (0x04) [mandatory]
                Mode: Enhanced Retransmission (0x03)
                TX window size: 63
                Max transmit: 3
                Retransmission timeout: 2000
                Monitor timeout: 12000
                Maximum PDU size: 1009
      > ACL Data RX: Handle 11 flags 0x02 dlen 26
            L2CAP: Configure Request (0x04) ident 15 len 18
              Destination CID: 72
              Flags: 0x0000
              Option: Retransmission and Flow Control (0x04) [mandatory]
                Mode: Enhanced Retransmission (0x03)
                TX window size: 32
                Max transmit: 255
                Retransmission timeout: 0
                Monitor timeout: 0
                Maximum PDU size: 65527
              Option: Frame Check Sequence (0x05) [mandatory]
                FCS: 16-bit FCS (0x01)
      < ACL Data TX: Handle 11 flags 0x00 dlen 29
            L2CAP: Configure Response (0x05) ident 15 len 21
              Source CID: 2832
              Flags: 0x0000
              Result: Success (0x0000)
              Option: Maximum Transmission Unit (0x01) [mandatory]
                MTU: 32767
              Option: Retransmission and Flow Control (0x04) [mandatory]
                Mode: Enhanced Retransmission (0x03)
                TX window size: 32
                Max transmit: 255
                Retransmission timeout: 2000
                Monitor timeout: 12000
                Maximum PDU size: 1009
      > ACL Data RX: Handle 11 flags 0x02 dlen 32
            L2CAP: Configure Response (0x05) ident 24 len 24
              Source CID: 72
              Flags: 0x0000
              Result: Success (0x0000)
              Option: Maximum Transmission Unit (0x01) [mandatory]
                MTU: 32767
              Option: Retransmission and Flow Control (0x04) [mandatory]
                Mode: Enhanced Retransmission (0x03)
                TX window size: 63
                Max transmit: 3
                Retransmission timeout: 2000
                Monitor timeout: 12000
                Maximum PDU size: 1009
              Option: Frame Check Sequence (0x05) [mandatory]
                FCS: 16-bit FCS (0x01)
      ...
      > ACL Data RX: Handle 11 flags 0x02 dlen 1009
            Channel: 72 len 1005 ctrl 0x4202 [PSM 4103 mode Enhanced Retransmission (0x03)] {chan 8}
            I-frame: Start (len 21884) TxSeq 1 ReqSeq 2
      > ACL Data RX: Handle 11 flags 0x02 dlen 1009
            Channel: 72 len 1005 ctrl 0xc204 [PSM 4103 mode Enhanced Retransmission (0x03)] {chan 8}
            I-frame: Continuation TxSeq 2 ReqSeq 2
    
    This has been tested with kernel 5.4 and BlueZ 5.77.
    
    Cc: [email protected]
    Signed-off-by: Frédéric Danis <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
btrfs: fix a race between renames and directory logging [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed May 28 12:28:27 2025 +0100

    btrfs: fix a race between renames and directory logging
    
    commit 3ca864de852bc91007b32d2a0d48993724f4abad upstream.
    
    We have a race between a rename and directory inode logging that if it
    happens and we crash/power fail before the rename completes, the next time
    the filesystem is mounted, the log replay code will end up deleting the
    file that was being renamed.
    
    This is best explained following a step by step analysis of an interleaving
    of steps that lead into this situation.
    
    Consider the initial conditions:
    
    1) We are at transaction N;
    
    2) We have directories A and B created in a past transaction (< N);
    
    3) We have inode X corresponding to a file that has 2 hardlinks, one in
       directory A and the other in directory B, so we'll name them as
       "A/foo_link1" and "B/foo_link2". Both hard links were persisted in a
       past transaction (< N);
    
    4) We have inode Y corresponding to a file that as a single hard link and
       is located in directory A, we'll name it as "A/bar". This file was also
       persisted in a past transaction (< N).
    
    The steps leading to a file loss are the following and for all of them we
    are under transaction N:
    
     1) Link "A/foo_link1" is removed, so inode's X last_unlink_trans field
        is updated to N, through btrfs_unlink() -> btrfs_record_unlink_dir();
    
     2) Task A starts a rename for inode Y, with the goal of renaming from
        "A/bar" to "A/baz", so we enter btrfs_rename();
    
     3) Task A inserts the new BTRFS_INODE_REF_KEY for inode Y by calling
        btrfs_insert_inode_ref();
    
     4) Because the rename happens in the same directory, we don't set the
        last_unlink_trans field of directoty A's inode to the current
        transaction id, that is, we don't cal btrfs_record_unlink_dir();
    
     5) Task A then removes the entries from directory A (BTRFS_DIR_ITEM_KEY
        and BTRFS_DIR_INDEX_KEY items) when calling __btrfs_unlink_inode()
        (actually the dir index item is added as a delayed item, but the
        effect is the same);
    
     6) Now before task A adds the new entry "A/baz" to directory A by
        calling btrfs_add_link(), another task, task B is logging inode X;
    
     7) Task B starts a fsync of inode X and after logging inode X, at
        btrfs_log_inode_parent() it calls btrfs_log_all_parents(), since
        inode X has a last_unlink_trans value of N, set at in step 1;
    
     8) At btrfs_log_all_parents() we search for all parent directories of
        inode X using the commit root, so we find directories A and B and log
        them. Bu when logging direct A, we don't have a dir index item for
        inode Y anymore, neither the old name "A/bar" nor for the new name
        "A/baz" since the rename has deleted the old name but has not yet
        inserted the new name - task A hasn't called yet btrfs_add_link() to
        do that.
    
        Note that logging directory A doesn't fallback to a transaction
        commit because its last_unlink_trans has a lower value than the
        current transaction's id (see step 4);
    
     9) Task B finishes logging directories A and B and gets back to
        btrfs_sync_file() where it calls btrfs_sync_log() to persist the log
        tree;
    
    10) Task B successfully persisted the log tree, btrfs_sync_log() completed
        with success, and a power failure happened.
    
        We have a log tree without any directory entry for inode Y, so the
        log replay code deletes the entry for inode Y, name "A/bar", from the
        subvolume tree since it doesn't exist in the log tree and the log
        tree is authorative for its index (we logged a BTRFS_DIR_LOG_INDEX_KEY
        item that covers the index range for the dentry that corresponds to
        "A/bar").
    
        Since there's no other hard link for inode Y and the log replay code
        deletes the name "A/bar", the file is lost.
    
    The issue wouldn't happen if task B synced the log only after task A
    called btrfs_log_new_name(), which would update the log with the new name
    for inode Y ("A/bar").
    
    Fix this by pinning the log root during renames before removing the old
    directory entry, and unpinning after btrfs_log_new_name() is called.
    
    Fixes: 259c4b96d78d ("btrfs: stop doing unnecessary log updates during a rename")
    CC: [email protected] # 5.18+
    Reviewed-by: Boris Burkov <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: handle csum tree error with rescue=ibadroots correctly [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Sat Jun 7 09:18:43 2025 +0930

    btrfs: handle csum tree error with rescue=ibadroots correctly
    
    [ Upstream commit 547e836661554dcfa15c212a3821664e85b4191a ]
    
    [BUG]
    There is syzbot based reproducer that can crash the kernel, with the
    following call trace: (With some debug output added)
    
     DEBUG: rescue=ibadroots parsed
     BTRFS: device fsid 14d642db-7b15-43e4-81e6-4b8fac6a25f8 devid 1 transid 8 /dev/loop0 (7:0) scanned by repro (1010)
     BTRFS info (device loop0): first mount of filesystem 14d642db-7b15-43e4-81e6-4b8fac6a25f8
     BTRFS info (device loop0): using blake2b (blake2b-256-generic) checksum algorithm
     BTRFS info (device loop0): using free-space-tree
     BTRFS warning (device loop0): checksum verify failed on logical 5312512 mirror 1 wanted 0xb043382657aede36608fd3386d6b001692ff406164733d94e2d9a180412c6003 found 0x810ceb2bacb7f0f9eb2bf3b2b15c02af867cb35ad450898169f3b1f0bd818651 level 0
     DEBUG: read tree root path failed for tree csum, ret=-5
     BTRFS warning (device loop0): checksum verify failed on logical 5328896 mirror 1 wanted 0x51be4e8b303da58e6340226815b70e3a93592dac3f30dd510c7517454de8567a found 0x51be4e8b303da58e634022a315b70e3a93592dac3f30dd510c7517454de8567a level 0
     BTRFS warning (device loop0): checksum verify failed on logical 5292032 mirror 1 wanted 0x1924ccd683be9efc2fa98582ef58760e3848e9043db8649ee382681e220cdee4 found 0x0cb6184f6e8799d9f8cb335dccd1d1832da1071d12290dab3b85b587ecacca6e level 0
     process 'repro' launched './file2' with NULL argv: empty string added
     DEBUG: no csum root, idatacsums=0 ibadroots=134217728
     Oops: general protection fault, probably for non-canonical address 0xdffffc0000000041: 0000 [#1] SMP KASAN NOPTI
     KASAN: null-ptr-deref in range [0x0000000000000208-0x000000000000020f]
     CPU: 5 UID: 0 PID: 1010 Comm: repro Tainted: G           OE       6.15.0-custom+ #249 PREEMPT(full)
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022
     RIP: 0010:btrfs_lookup_csum+0x93/0x3d0 [btrfs]
     Call Trace:
      <TASK>
      btrfs_lookup_bio_sums+0x47a/0xdf0 [btrfs]
      btrfs_submit_bbio+0x43e/0x1a80 [btrfs]
      submit_one_bio+0xde/0x160 [btrfs]
      btrfs_readahead+0x498/0x6a0 [btrfs]
      read_pages+0x1c3/0xb20
      page_cache_ra_order+0x4b5/0xc20
      filemap_get_pages+0x2d3/0x19e0
      filemap_read+0x314/0xde0
      __kernel_read+0x35b/0x900
      bprm_execve+0x62e/0x1140
      do_execveat_common.isra.0+0x3fc/0x520
      __x64_sys_execveat+0xdc/0x130
      do_syscall_64+0x54/0x1d0
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
     ---[ end trace 0000000000000000 ]---
    
    [CAUSE]
    Firstly the fs has a corrupted csum tree root, thus to mount the fs we
    have to go "ro,rescue=ibadroots" mount option.
    
    Normally with that mount option, a bad csum tree root should set
    BTRFS_FS_STATE_NO_DATA_CSUMS flag, so that any future data read will
    ignore csum search.
    
    But in this particular case, we have the following call trace that
    caused NULL csum root, but not setting BTRFS_FS_STATE_NO_DATA_CSUMS:
    
    load_global_roots_objectid():
    
                    ret = btrfs_search_slot();
                    /* Succeeded */
                    btrfs_item_key_to_cpu()
                    found = true;
                    /* We found the root item for csum tree. */
                    root = read_tree_root_path();
                    if (IS_ERR(root)) {
                            if (!btrfs_test_opt(fs_info, IGNOREBADROOTS))
                            /*
                             * Since we have rescue=ibadroots mount option,
                             * @ret is still 0.
                             */
                            break;
            if (!found || ret) {
                    /* @found is true, @ret is 0, error handling for csum
                     * tree is skipped.
                     */
            }
    
    This means we completely skipped to set BTRFS_FS_STATE_NO_DATA_CSUMS if
    the csum tree is corrupted, which results unexpected later csum lookup.
    
    [FIX]
    If read_tree_root_path() failed, always populate @ret to the error
    number.
    
    As at the end of the function, we need @ret to determine if we need to
    do the extra error handling for csum tree.
    
    Fixes: abed4aaae4f7 ("btrfs: track the csum, extent, and free space trees in a rb tree")
    Reported-by: Zhiyu Zhang <[email protected]>
    Reported-by: Longxing Li <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: Qu Wenruo <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: update superblock's device bytes_used when dropping chunk [+ + +]
Author: Mark Harmstone <[email protected]>
Date:   Thu May 29 10:37:44 2025 +0100

    btrfs: update superblock's device bytes_used when dropping chunk
    
    commit ae4477f937569d097ca5dbce92a89ba384b49bc6 upstream.
    
    Each superblock contains a copy of the device item for that device. In a
    transaction which drops a chunk but doesn't create any new ones, we were
    correctly updating the device item in the chunk tree but not copying
    over the new bytes_used value to the superblock.
    
    This can be seen by doing the following:
    
      # dd if=/dev/zero of=test bs=4096 count=2621440
      # mkfs.btrfs test
      # mount test /root/temp
    
      # cd /root/temp
      # for i in {00..10}; do dd if=/dev/zero of=$i bs=4096 count=32768; done
      # sync
      # rm *
      # sync
      # btrfs balance start -dusage=0 .
      # sync
    
      # cd
      # umount /root/temp
      # btrfs check test
    
    For btrfs-check to detect this, you will also need my patch at
    https://github.com/kdave/btrfs-progs/pull/991.
    
    Change btrfs_remove_dev_extents() so that it adds the devices to the
    fs_info->post_commit_list if they're not there already. This causes
    btrfs_commit_device_sizes() to be called, which updates the bytes_used
    value in the superblock.
    
    Fixes: bbbf7243d62d ("btrfs: combine device update operations during transaction commit")
    CC: [email protected] # 5.10+
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Mark Harmstone <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ceph: fix possible integer overflow in ceph_zero_objects() [+ + +]
Author: Dmitry Kandybka <[email protected]>
Date:   Tue Apr 22 12:32:04 2025 +0300

    ceph: fix possible integer overflow in ceph_zero_objects()
    
    [ Upstream commit 0abd87942e0c93964e93224836944712feba1d91 ]
    
    In 'ceph_zero_objects', promote 'object_size' to 'u64' to avoid possible
    integer overflow.
    
    Compile tested only.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Dmitry Kandybka <[email protected]>
    Reviewed-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Ilya Dryomov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cifs: Correctly set SMB1 SessionKey field in Session Setup Request [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sat Nov 2 17:58:31 2024 +0100

    cifs: Correctly set SMB1 SessionKey field in Session Setup Request
    
    [ Upstream commit 89381c72d52094988e11d23ef24a00066a0fa458 ]
    
    [MS-CIFS] specification in section 2.2.4.53.1 where is described
    SMB_COM_SESSION_SETUP_ANDX Request, for SessionKey field says:
    
        The client MUST set this field to be equal to the SessionKey field in
        the SMB_COM_NEGOTIATE Response for this SMB connection.
    
    Linux SMB client currently set this field to zero. This is working fine
    against Windows NT SMB servers thanks to [MS-CIFS] product behavior <94>:
    
        Windows NT Server ignores the client's SessionKey.
    
    For compatibility with [MS-CIFS], set this SessionKey field in Session
    Setup Request to value retrieved from Negotiate response.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
cifs: Fix cifs_query_path_info() for Windows NT servers [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Tue Dec 31 16:06:22 2024 +0100

    cifs: Fix cifs_query_path_info() for Windows NT servers
    
    [ Upstream commit a3e771afbb3bce91c8296828304903e7348003fe ]
    
    For TRANS2 QUERY_PATH_INFO request when the path does not exist, the
    Windows NT SMB server returns error response STATUS_OBJECT_NAME_NOT_FOUND
    or ERRDOS/ERRbadfile without the SMBFLG_RESPONSE flag set. Similarly it
    returns STATUS_DELETE_PENDING when the file is being deleted. And looks
    like that any error response from TRANS2 QUERY_PATH_INFO does not have
    SMBFLG_RESPONSE flag set.
    
    So relax check in check_smb_hdr() for detecting if the packet is response
    for this special case.
    
    This change fixes stat() operation against Windows NT SMB servers and also
    all operations which depends on -ENOENT result from stat like creat() or
    mkdir().
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix encoding of SMB1 Session Setup NTLMSSP Request in non-UNICODE mode [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sun Oct 6 19:24:29 2024 +0200

    cifs: Fix encoding of SMB1 Session Setup NTLMSSP Request in non-UNICODE mode
    
    [ Upstream commit 6510ef4230b68c960309e0c1d6eb3e32eb785142 ]
    
    SMB1 Session Setup NTLMSSP Request in non-UNICODE mode is similar to
    UNICODE mode, just strings are encoded in ASCII and not in UTF-16.
    
    With this change it is possible to setup SMB1 session with NTLM
    authentication in non-UNICODE mode with Windows SMB server.
    
    This change fixes mounting SMB1 servers with -o nounicode mount option
    together with -o sec=ntlmssp mount option (which is the default sec=).
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
coresight: Only check bottom two claim bits [+ + +]
Author: James Clark <[email protected]>
Date:   Tue Mar 25 11:58:47 2025 +0000

    coresight: Only check bottom two claim bits
    
    [ Upstream commit a4e65842e1142aa18ef36113fbd81d614eaefe5a ]
    
    The use of the whole register and == could break the claim mechanism if
    any of the other bits are used in the future. The referenced doc "PSCI -
    ARM DEN 0022D" also says to only read and clear the bottom two bits.
    
    Use FIELD_GET() to extract only the relevant part.
    
    Reviewed-by: Leo Yan <[email protected]>
    Reviewed-by: Yeoreum Yun <[email protected]>
    Signed-off-by: James Clark <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
cxl/region: Add a dev_err() on missing target list entries [+ + +]
Author: Robert Richter <[email protected]>
Date:   Fri May 9 17:06:58 2025 +0200

    cxl/region: Add a dev_err() on missing target list entries
    
    [ Upstream commit d90acdf49e18029cfe4194475c45ef143657737a ]
    
    Broken target lists are hard to discover as the driver fails at a
    later initialization stage. Add an error message for this.
    
    Example log messages:
    
      cxl_mem mem1: failed to find endpoint6:0000:e0:01.3 in target list of decoder1.1
      cxl_port endpoint6: failed to register decoder6.0: -6
      cxl_port endpoint6: probe: 0
    
    Signed-off-by: Robert Richter <[email protected]>
    Reviewed-by: Gregory Price <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Reviewed-by: Dan Williams <[email protected]>
    Reviewed-by: Alison Schofield <[email protected]>
    Reviewed-by: "Fabio M. De Francesco" <[email protected]>
    Tested-by: Gregory Price <[email protected]>
    Acked-by: Dan Williams <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Dave Jiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm-raid: fix variable in journal device check [+ + +]
Author: Heinz Mauelshagen <[email protected]>
Date:   Tue Jun 10 20:53:30 2025 +0200

    dm-raid: fix variable in journal device check
    
    commit db53805156f1e0aa6d059c0d3f9ac660d4ef3eb4 upstream.
    
    Replace "rdev" with correct loop variable name "r".
    
    Signed-off-by: Heinz Mauelshagen <[email protected]>
    Cc: [email protected]
    Fixes: 63c32ed4afc2 ("dm raid: add raid4/5/6 journaling support")
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dmaengine: idxd: Check availability of workqueue allocated by idxd wq driver before using [+ + +]
Author: Yi Sun <[email protected]>
Date:   Fri May 9 08:03:04 2025 +0800

    dmaengine: idxd: Check availability of workqueue allocated by idxd wq driver before using
    
    [ Upstream commit 17502e7d7b7113346296f6758324798d536c31fd ]
    
    Running IDXD workloads in a container with the /dev directory mounted can
    trigger a call trace or even a kernel panic when the parent process of the
    container is terminated.
    
    This issue occurs because, under certain configurations, Docker does not
    properly propagate the mount replica back to the original mount point.
    
    In this case, when the user driver detaches, the WQ is destroyed but it
    still calls destroy_workqueue() attempting to completes all pending work.
    It's necessary to check wq->wq and skip the drain if it no longer exists.
    
    Signed-off-by: Yi Sun <[email protected]>
    Reviewed-by: Dave Jiang <[email protected]>
    Reviewed-by: Anil S Keshavamurthy <[email protected]>
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: xilinx_dma: Set dma_device directions [+ + +]
Author: Thomas Gessler <[email protected]>
Date:   Wed May 7 20:21:01 2025 +0200

    dmaengine: xilinx_dma: Set dma_device directions
    
    [ Upstream commit 7e01511443c30a55a5ae78d3debd46d4d872517e ]
    
    Coalesce the direction bits from the enabled TX and/or RX channels into
    the directions bit mask of dma_device. Without this mask set,
    dma_get_slave_caps() in the DMAEngine fails, which prevents the driver
    from being used with an IIO DMAEngine buffer.
    
    Signed-off-by: Thomas Gessler <[email protected]>
    Reviewed-by: Suraj Gupta <[email protected]>
    Tested-by: Folker Schwesinger <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Drivers: hv: vmbus: Add utility function for querying ring size [+ + +]
Author: Saurabh Sengar <[email protected]>
Date:   Sat Mar 30 01:51:57 2024 -0700

    Drivers: hv: vmbus: Add utility function for querying ring size
    
    [ Upstream commit e8c4bd6c6e6b7e7b416c42806981c2a81370001e ]
    
    Add a function to query for the preferred ring buffer size of VMBus
    device. This will allow the drivers (eg. UIO) to allocate the most
    optimized ring buffer size for devices.
    
    Signed-off-by: Saurabh Sengar <[email protected]>
    Reviewed-by: Long Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 0315fef2aff9 ("uio_hv_generic: Align ring size to system page")
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Add null pointer check for get_first_active_display() [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Mon May 26 10:37:31 2025 +0800

    drm/amd/display: Add null pointer check for get_first_active_display()
    
    commit c3e9826a22027a21d998d3e64882fa377b613006 upstream.
    
    The function mod_hdcp_hdcp1_enable_encryption() calls the function
    get_first_active_display(), but does not check its return value.
    The return value is a null pointer if the display list is empty.
    This will lead to a null pointer dereference in
    mod_hdcp_hdcp2_enable_encryption().
    
    Add a null pointer check for get_first_active_display() and return
    MOD_HDCP_STATUS_DISPLAY_NOT_FOUND if the function return null.
    
    Fixes: 2deade5ede56 ("drm/amd/display: Remove hdcp display state with mst fix")
    Signed-off-by: Wentao Liang <[email protected]>
    Reviewed-by: Alex Hung <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected] # v5.8
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdgpu: Add kicker device detection [+ + +]
Author: Frank Min <[email protected]>
Date:   Wed Jun 4 21:00:44 2025 +0800

    drm/amdgpu: Add kicker device detection
    
    commit 0bbf5fd86c585d437b75003f11365b324360a5d6 upstream.
    
    1. add kicker device list
    2. add kicker device checking helper function
    
    Signed-off-by: Frank Min <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 09aa2b408f4ab689c3541d22b0968de0392ee406)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amdgpu: amdgpu_vram_mgr_new(): Clamp lpfn to total vram [+ + +]
Author: John Olender <[email protected]>
Date:   Tue Apr 29 07:24:28 2025 -0400

    drm/amdgpu: amdgpu_vram_mgr_new(): Clamp lpfn to total vram
    
    commit 4d2f6b4e4c7ed32e7fa39fcea37344a9eab99094 upstream.
    
    The drm_mm allocator tolerated being passed end > mm->size, but the
    drm_buddy allocator does not.
    
    Restore the pre-buddy-allocator behavior of allowing such placements.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3448
    Signed-off-by: John Olender <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Reviewed-by: Arunpravin Paneer Selvam <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amdgpu: switch job hw_fence to amdgpu_fence [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Mon Jun 2 11:31:52 2025 -0400

    drm/amdgpu: switch job hw_fence to amdgpu_fence
    
    commit ebe43542702c3d15d1a1d95e8e13b1b54076f05a upstream.
    
    Use the amdgpu fence container so we can store additional
    data in the fence.  This also fixes the start_time handling
    for MCBP since we were casting the fence to an amdgpu_fence
    and it wasn't.
    
    Fixes: 3f4c175d62d8 ("drm/amdgpu: MCBP based on DRM scheduler (v9)")
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit bf1cd14f9e2e1fdf981eed273ddd595863f5288c)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdkfd: Fix race in GWS queue scheduling [+ + +]
Author: Jay Cornwall <[email protected]>
Date:   Wed Jun 11 09:52:14 2025 -0500

    drm/amdkfd: Fix race in GWS queue scheduling
    
    commit cfb05257ae168a0496c7637e1d9e3ab8a25cbffe upstream.
    
    q->gws is not updated atomically with qpd->mapped_gws_queue. If a
    runlist is created between pqm_set_gws and update_queue it will
    contain a queue which uses GWS in a process with no GWS allocated.
    This will result in a scheduler hang.
    
    Use q->properties.is_gws which is changed while holding the DQM lock.
    
    Signed-off-by: Jay Cornwall <[email protected]>
    Reviewed-by: Harish Kasiviswanathan <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit b98370220eb3110e82248e3354e16a489a492cfb)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/ast: Fix comment on modeset lock [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Mar 24 10:44:09 2025 +0100

    drm/ast: Fix comment on modeset lock
    
    commit 7cce65f3789e04c0f7668a66563e680d81d54493 upstream.
    
    The ast driver protects the commit tail against concurrent reads
    of the display modes by acquiring a lock. The comment is misleading
    as the lock is not released in atomic_flush, but at the end of the
    commit-tail helper. Rewrite the comment.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Fixes: 1fe182154984 ("drm/ast: Acquire I/O-register lock in atomic_commit_tail function")
    Cc: Thomas Zimmermann <[email protected]>
    Cc: Jocelyn Falempe <[email protected]>
    Cc: Dave Airlie <[email protected]>
    Cc: [email protected]
    Cc: <[email protected]> # v6.2+
    Reviewed-by: Jocelyn Falempe <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/bridge: cdns-dsi: Check return value when getting default PHY config [+ + +]
Author: Aradhya Bhatia <[email protected]>
Date:   Sat Mar 29 17:09:15 2025 +0530

    drm/bridge: cdns-dsi: Check return value when getting default PHY config
    
    commit c6a7ef0d4856b9629df390e9935d7fd67fe39f81 upstream.
    
    Check for the return value of the phy_mipi_dphy_get_default_config()
    call, and in case of an error, return back the same.
    
    Fixes: fced5a364dee ("drm/bridge: cdns: Convert to phy framework")
    Cc: [email protected]
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Tested-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/bridge: cdns-dsi: Fix connecting to next bridge [+ + +]
Author: Aradhya Bhatia <[email protected]>
Date:   Sat Mar 29 17:09:12 2025 +0530

    drm/bridge: cdns-dsi: Fix connecting to next bridge
    
    commit 688eb4d465484bc2a3471a6a6f06f833b58c7867 upstream.
    
    Fix the OF node pointer passed to the of_drm_find_bridge() call to find
    the next bridge in the display chain.
    
    The code to find the next panel (and create its panel-bridge) works
    fine, but to find the next (non-panel) bridge does not.
    
    To find the next bridge in the pipeline, we need to pass "np" - the OF
    node pointer of the next entity in the devicetree chain. Passing
    "of_node" to of_drm_find_bridge (which is what the code does currently)
    will fetch the bridge for the cdns-dsi which is not what's required.
    
    Fix that.
    
    Fixes: e19233955d9e ("drm/bridge: Add Cadence DSI driver")
    Cc: [email protected]
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Tested-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/bridge: cdns-dsi: Fix phy de-init and flag it so [+ + +]
Author: Aradhya Bhatia <[email protected]>
Date:   Sat Mar 29 17:09:13 2025 +0530

    drm/bridge: cdns-dsi: Fix phy de-init and flag it so
    
    commit fd2611c13f69cbbc6b81d9fc7502abf4f7031d21 upstream.
    
    The driver code doesn't have a Phy de-initialization path as yet, and so
    it does not clear the phy_initialized flag while suspending. This is a
    problem because after resume the driver looks at this flag to determine
    if a Phy re-initialization is required or not. It is in fact required
    because the hardware is resuming from a suspend, but the driver does not
    carry out any re-initialization causing the D-Phy to not work at all.
    
    Call the counterparts of phy_init() and phy_power_on(), that are
    phy_exit() and phy_power_off(), from _bridge_post_disable(), and clear
    the flags so that the Phy can be initialized again when required.
    
    Fixes: fced5a364dee ("drm/bridge: cdns: Convert to phy framework")
    Cc: [email protected]
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Tested-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/bridge: cdns-dsi: Fix the clock variable for mode_valid() [+ + +]
Author: Aradhya Bhatia <[email protected]>
Date:   Sat Mar 29 17:09:14 2025 +0530

    drm/bridge: cdns-dsi: Fix the clock variable for mode_valid()
    
    commit 132bdcec399be6ae947582249a134b38cf56731c upstream.
    
    The crtc_* mode parameters do not get generated (duplicated in this
    case) from the regular parameters before the mode validation phase
    begins.
    
    The rest of the code conditionally uses the crtc_* parameters only
    during the bridge enable phase, but sticks to the regular parameters
    for mode validation. In this singular instance, however, the driver
    tries to use the crtc_clock parameter even during the mode validation,
    causing the validation to fail.
    
    Allow the D-Phy config checks to use mode->clock instead of
    mode->crtc_clock during mode_valid checks, like everywhere else in the
    driver.
    
    Fixes: fced5a364dee ("drm/bridge: cdns: Convert to phy framework")
    Cc: [email protected]
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Tested-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready [+ + +]
Author: Aradhya Bhatia <[email protected]>
Date:   Sat Mar 29 17:09:16 2025 +0530

    drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready
    
    commit 47c03e6660e96cbba0239125b1d4a9db3c724b1d upstream.
    
    Once the DSI Link and DSI Phy are initialized, the code needs to wait
    for Clk and Data Lanes to be ready, before continuing configuration.
    This is in accordance with the DSI Start-up procedure, found in the
    Technical Reference Manual of Texas Instrument's J721E SoC[0] which
    houses this DSI TX controller.
    
    If the previous bridge (or crtc/encoder) are configured pre-maturely,
    the input signal FIFO gets corrupt. This introduces a color-shift on the
    display.
    
    Allow the driver to wait for the clk and data lanes to get ready during
    DSI enable.
    
    [0]: See section 12.6.5.7.3 "Start-up Procedure" in J721E SoC TRM
         TRM Link: http://www.ti.com/lit/pdf/spruil1
    
    Fixes: e19233955d9e ("drm/bridge: Add Cadence DSI driver")
    Cc: [email protected]
    Tested-by: Dominik Haller <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Tested-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Signed-off-by: Aradhya Bhatia <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/bridge: ti-sn65dsi86: Add HPD for DisplayPort connector type [+ + +]
Author: Jayesh Choudhary <[email protected]>
Date:   Tue Jun 24 10:18:35 2025 +0530

    drm/bridge: ti-sn65dsi86: Add HPD for DisplayPort connector type
    
    [ Upstream commit 55e8ff842051b1150461d7595d8f1d033c69d66b ]
    
    By default, HPD was disabled on SN65DSI86 bridge. When the driver was
    added (commit "a095f15c00e27"), the HPD_DISABLE bit was set in pre-enable
    call which was moved to other function calls subsequently.
    Later on, commit "c312b0df3b13" added detect utility for DP mode. But with
    HPD_DISABLE bit set, all the HPD events are disabled[0] and the debounced
    state always return 1 (always connected state).
    
    Set HPD_DISABLE bit conditionally based on display sink's connector type.
    Since the HPD_STATE is reflected correctly only after waiting for debounce
    time (~100-400ms) and adding this delay in detect() is not feasible
    owing to the performace impact (glitches and frame drop), remove runtime
    calls in detect() and add hpd_enable()/disable() bridge hooks with runtime
    calls, to detect hpd properly without any delay.
    
    [0]: <https://www.ti.com/lit/gpn/SN65DSI86> (Pg. 32)
    
    Fixes: c312b0df3b13 ("drm/bridge: ti-sn65dsi86: Implement bridge connector operations for DP")
    Cc: Max Krummenacher <[email protected]>
    Reviewed-by: Douglas Anderson <[email protected]>
    Tested-by: Ernest Van Hoecke <[email protected]>
    Signed-off-by: Jayesh Choudhary <[email protected]>
    Signed-off-by: Douglas Anderson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/bridge: ti-sn65dsi86: make use of debugfs_init callback [+ + +]
Author: Wolfram Sang <[email protected]>
Date:   Sat Mar 15 21:15:11 2025 +0100

    drm/bridge: ti-sn65dsi86: make use of debugfs_init callback
    
    [ Upstream commit 1d1f7b15cb9c11974cebfd39da51dc69b8cb31ff ]
    
    Do not create a custom directory in debugfs-root, but use the
    debugfs_init callback to create a custom directory at the given place
    for the bridge. The new directory layout looks like this on a Renesas
    GrayHawk-Single with a R-Car V4M SoC:
    
            /sys/kernel/debug/dri/feb00000.display/DP-1/1-002c
    
    Signed-off-by: Wolfram Sang <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Douglas Anderson <[email protected]>
    Signed-off-by: Douglas Anderson <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: 55e8ff842051 ("drm/bridge: ti-sn65dsi86: Add HPD for DisplayPort connector type")
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/cirrus-qemu: Fix pitch programming [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Fri Mar 28 10:17:05 2025 +0100

    drm/cirrus-qemu: Fix pitch programming
    
    commit 4bfb389a0136a13f0802eeb5e97a0e76d88f77ae upstream.
    
    Do not set CR1B[6] when programming the pitch. The bit effects VGA
    text mode and is not interpreted by qemu. [1] It has no affect on
    the scanline pitch.
    
    The scanline bit that is set into CR1B[6] belongs into CR13[7], which
    the driver sets up correctly.
    
    This bug goes back to the driver's initial commit.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Acked-by: Gerd Hoffmann <[email protected]>
    Link: https://gitlab.com/qemu-project/qemu/-/blob/stable-9.2/hw/display/cirrus_vga.c?ref_type=heads#L1112 # 1
    Fixes: f9aa76a85248 ("drm/kms: driver for virtual cirrus under qemu")
    Cc: Adam Jackson <[email protected]>
    Cc: Dave Airlie <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: <[email protected]> # v3.5+
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/etnaviv: Protect the scheduler's pending list with its lock [+ + +]
Author: Maíra Canal <[email protected]>
Date:   Mon Jun 2 10:22:16 2025 -0300

    drm/etnaviv: Protect the scheduler's pending list with its lock
    
    commit 61ee19dedb8d753249e20308782bf4e9e2fb7344 upstream.
    
    Commit 704d3d60fec4 ("drm/etnaviv: don't block scheduler when GPU is still
    active") ensured that active jobs are returned to the pending list when
    extending the timeout. However, it didn't use the pending list's lock to
    manipulate the list, which causes a race condition as the scheduler's
    workqueues are running.
    
    Hold the lock while manipulating the scheduler's pending list to prevent
    a race.
    
    Cc: [email protected]
    Fixes: 704d3d60fec4 ("drm/etnaviv: don't block scheduler when GPU is still active")
    Reported-by: Philipp Stanner <[email protected]>
    Closes: https://lore.kernel.org/dri-devel/[email protected]/
    Reviewed-by: Lucas Stach <[email protected]>
    Reviewed-by: Philipp Stanner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Maíra Canal <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/i915/gem: Allow EXEC_CAPTURE on recoverable contexts on DG1 [+ + +]
Author: Ville Syrjälä <[email protected]>
Date:   Mon May 12 21:22:15 2025 +0200

    drm/i915/gem: Allow EXEC_CAPTURE on recoverable contexts on DG1
    
    commit 25eeba495b2fc16037647c1a51bcdf6fc157af5c upstream.
    
    The intel-media-driver is currently broken on DG1 because
    it uses EXEC_CAPTURE with recovarable contexts. Relax the
    check to allow that.
    
    I've also submitted a fix for the intel-media-driver:
    https://github.com/intel/media-driver/pull/1920
    
    Cc: [email protected] # v6.0+
    Cc: Matthew Auld <[email protected]>
    Cc: Thomas Hellström <[email protected]>
    Testcase: igt/gem_exec_capture/capture-invisible
    Fixes: 71b1669ea9bd ("drm/i915/uapi: tweak error capture on recoverable contexts")
    Reviewed-by: Andi Shyti <[email protected]>
    Signed-off-by: Ville Syrjälä <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit d6e020819612a4a06207af858e0978be4d3e3140)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/i915: fix build error some more [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Fri Jun 20 13:18:18 2025 +0200

    drm/i915: fix build error some more
    
    [ Upstream commit d02b2103a08b6d6908f1d3d8e8783d3f342555ac ]
    
    An earlier patch fixed a build failure with clang, but I still see the
    same problem with some configurations using gcc:
    
    drivers/gpu/drm/i915/i915_pmu.c: In function 'config_mask':
    include/linux/compiler_types.h:568:38: error: call to '__compiletime_assert_462' declared with attribute error: BUILD_BUG_ON failed: bit > BITS_PER_TYPE(typeof_member(struct i915_pmu, enable)) - 1
    drivers/gpu/drm/i915/i915_pmu.c:116:3: note: in expansion of macro 'BUILD_BUG_ON'
      116 |   BUILD_BUG_ON(bit >
    
    As I understand it, the problem is that the function is not always fully
    inlined, but the __builtin_constant_p() can still evaluate the argument
    as being constant.
    
    Marking it as __always_inline so far works for me in all configurations.
    
    Fixes: a7137b1825b5 ("drm/i915/pmu: Fix build error with GCOV and AutoFDO enabled")
    Fixes: a644fde77ff7 ("drm/i915/pmu: Change bitmask of enabled events to u32")
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    (cherry picked from commit ef69f9dd1cd7301cdf04ba326ed28152a3affcf6)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/msm/gpu: Fix crash when throttling GPU immediately during boot [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Tue Apr 29 10:33:56 2025 +0200

    drm/msm/gpu: Fix crash when throttling GPU immediately during boot
    
    commit b71717735be48d7743a34897e9e44a0b53e30c0e upstream.
    
    There is a small chance that the GPU is already hot during boot. In that
    case, the call to of_devfreq_cooling_register() will immediately try to
    apply devfreq cooling, as seen in the following crash:
    
      Unable to handle kernel paging request at virtual address 0000000000014110
      pc : a6xx_gpu_busy+0x1c/0x58 [msm]
      lr : msm_devfreq_get_dev_status+0xbc/0x140 [msm]
      Call trace:
       a6xx_gpu_busy+0x1c/0x58 [msm] (P)
       devfreq_simple_ondemand_func+0x3c/0x150
       devfreq_update_target+0x44/0xd8
       qos_max_notifier_call+0x30/0x84
       blocking_notifier_call_chain+0x6c/0xa0
       pm_qos_update_target+0xd0/0x110
       freq_qos_apply+0x3c/0x74
       apply_constraint+0x88/0x148
       __dev_pm_qos_update_request+0x7c/0xcc
       dev_pm_qos_update_request+0x38/0x5c
       devfreq_cooling_set_cur_state+0x98/0xf0
       __thermal_cdev_update+0x64/0xb4
       thermal_cdev_update+0x4c/0x58
       step_wise_manage+0x1f0/0x318
       __thermal_zone_device_update+0x278/0x424
       __thermal_cooling_device_register+0x2bc/0x308
       thermal_of_cooling_device_register+0x10/0x1c
       of_devfreq_cooling_register_power+0x240/0x2bc
       of_devfreq_cooling_register+0x14/0x20
       msm_devfreq_init+0xc4/0x1a0 [msm]
       msm_gpu_init+0x304/0x574 [msm]
       adreno_gpu_init+0x1c4/0x2e0 [msm]
       a6xx_gpu_init+0x5c8/0x9c8 [msm]
       adreno_bind+0x2a8/0x33c [msm]
       ...
    
    At this point we haven't initialized the GMU at all yet, so we cannot read
    the GMU registers inside a6xx_gpu_busy(). A similar issue was fixed before
    in commit 6694482a70e9 ("drm/msm: Avoid unclocked GMU register access in
    6xx gpu_busy"): msm_devfreq_init() does call devfreq_suspend_device(), but
    unlike msm_devfreq_suspend(), it doesn't set the df->suspended flag
    accordingly. This means the df->suspended flag does not match the actual
    devfreq state after initialization and msm_devfreq_get_dev_status() will
    end up accessing GMU registers, causing the crash.
    
    Fix this by setting df->suspended correctly during initialization.
    
    Cc: [email protected]
    Fixes: 6694482a70e9 ("drm/msm: Avoid unclocked GMU register access in 6xx gpu_busy")
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Douglas Anderson <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/650772/
    Signed-off-by: Rob Clark <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/scheduler: signal scheduled fence when kill job [+ + +]
Author: Lin.Cao <[email protected]>
Date:   Thu May 15 10:07:13 2025 +0800

    drm/scheduler: signal scheduled fence when kill job
    
    [ Upstream commit 471db2c2d4f80ee94225a1ef246e4f5011733e50 ]
    
    When an entity from application B is killed, drm_sched_entity_kill()
    removes all jobs belonging to that entity through
    drm_sched_entity_kill_jobs_work(). If application A's job depends on a
    scheduled fence from application B's job, and that fence is not properly
    signaled during the killing process, application A's dependency cannot be
    cleared.
    
    This leads to application A hanging indefinitely while waiting for a
    dependency that will never be resolved. Fix this issue by ensuring that
    scheduled fences are properly signaled when an entity is killed, allowing
    dependent applications to continue execution.
    
    Signed-off-by: Lin.Cao <[email protected]>
    Reviewed-by: Philipp Stanner <[email protected]>
    Signed-off-by: Christian König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/tegra: Assign plane type before registration [+ + +]
Author: Thierry Reding <[email protected]>
Date:   Mon Apr 21 11:13:05 2025 -0500

    drm/tegra: Assign plane type before registration
    
    commit 9ff4fdf4f44b69237c0afc1d3a8dac916ce66f3e upstream.
    
    Changes to a plane's type after it has been registered aren't propagated
    to userspace automatically. This could possibly be achieved by updating
    the property, but since we can already determine which type this should
    be before the registration, passing in the right type from the start is
    a much better solution.
    
    Suggested-by: Aaron Kling <[email protected]>
    Signed-off-by: Thierry Reding <[email protected]>
    Cc: [email protected]
    Fixes: 473079549f27 ("drm/tegra: dc: Add Tegra186 support")
    Signed-off-by: Aaron Kling <[email protected]>
    Signed-off-by: Thierry Reding <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/tegra: Fix a possible null pointer dereference [+ + +]
Author: Qiu-ji Chen <[email protected]>
Date:   Wed Nov 6 17:59:06 2024 +0800

    drm/tegra: Fix a possible null pointer dereference
    
    commit 780351a5f61416ed2ba1199cc57e4a076fca644d upstream.
    
    In tegra_crtc_reset(), new memory is allocated with kzalloc(), but
    no check is performed. Before calling __drm_atomic_helper_crtc_reset,
    state should be checked to prevent possible null pointer dereference.
    
    Fixes: b7e0b04ae450 ("drm/tegra: Convert to using __drm_atomic_helper_crtc_reset() for reset.")
    Cc: [email protected]
    Signed-off-by: Qiu-ji Chen <[email protected]>
    Signed-off-by: Thierry Reding <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/udl: Unregister device before cleaning up on disconnect [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Mon Mar 3 15:52:56 2025 +0100

    drm/udl: Unregister device before cleaning up on disconnect
    
    commit ff9cb6d2035c586ea7c8f1754d4409eec7a2d26d upstream.
    
    Disconnecting a DisplayLink device results in the following kernel
    error messages
    
    [   93.041748] [drm:udl_urb_completion [udl]] *ERROR* udl_urb_completion - nonzero write bulk status received: -115
    [   93.055299] [drm:udl_submit_urb [udl]] *ERROR* usb_submit_urb error fffffffe
    [   93.065363] [drm:udl_urb_completion [udl]] *ERROR* udl_urb_completion - nonzero write bulk status received: -115
    [   93.078207] [drm:udl_submit_urb [udl]] *ERROR* usb_submit_urb error fffffffe
    
    coming from KMS poll helpers. Shutting down poll helpers runs them
    one final time when the USB device is already gone.
    
    Run drm_dev_unplug() first in udl's USB disconnect handler. Udl's
    polling code already handles disconnects gracefully if the device has
    been marked as unplugged.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Fixes: b1a981bd5576 ("drm/udl: drop drm_driver.release hook")
    Cc: [email protected]
    Cc: <[email protected]> # v5.8+
    Reviewed-by: Patrik Jakobsson <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dt-bindings: serial: 8250: Make clocks and clock-frequency exclusive [+ + +]
Author: Yao Zi <[email protected]>
Date:   Mon Jun 23 09:34:45 2025 +0000

    dt-bindings: serial: 8250: Make clocks and clock-frequency exclusive
    
    commit 09812134071b3941fb81def30b61ed36d3a5dfb5 upstream.
    
    The 8250 binding before converting to json-schema states,
    
      - clock-frequency : the input clock frequency for the UART
            or
      - clocks phandle to refer to the clk used as per Documentation/devicetree
    
    for clock-related properties, where "or" indicates these properties
    shouldn't exist at the same time.
    
    Additionally, the behavior of Linux's driver is strange when both clocks
    and clock-frequency are specified: it ignores clocks and obtains the
    frequency from clock-frequency, left the specified clocks unclaimed. It
    may even be disabled, which is undesired most of the time.
    
    But "anyOf" doesn't prevent these two properties from coexisting, as it
    considers the object valid as long as there's at LEAST one match.
    
    Let's switch to "oneOf" and disallows the other property if one exists,
    precisely matching the original binding and avoiding future confusion on
    the driver's behavior.
    
    Fixes: e69f5dc623f9 ("dt-bindings: serial: Convert 8250 to json-schema")
    Cc: stable <[email protected]>
    Signed-off-by: Yao Zi <[email protected]>
    Reviewed-by: Conor Dooley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dummycon: Trigger redraw when switching consoles with deferred takeover [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Tue May 20 09:14:00 2025 +0200

    dummycon: Trigger redraw when switching consoles with deferred takeover
    
    [ Upstream commit 03bcbbb3995ba5df43af9aba45334e35f2dfe27b ]
    
    Signal vt subsystem to redraw console when switching to dummycon
    with deferred takeover enabled. Makes the console switch to fbcon
    and displays the available output.
    
    With deferred takeover enabled, dummycon acts as the placeholder
    until the first output to the console happens. At that point, fbcon
    takes over. If the output happens while dummycon is not active, it
    cannot inform fbcon. This is the case if the vt subsystem runs in
    graphics mode.
    
    A typical graphical boot starts plymouth, a display manager and a
    compositor; all while leaving out dummycon. Switching to a text-mode
    console leaves the console with dummycon even if a getty terminal
    has been started.
    
    Returning true from dummycon's con_switch helper signals the vt
    subsystem to redraw the screen. If there's output available dummycon's
    con_putc{s} helpers trigger deferred takeover of fbcon, which sets a
    display mode and displays the output. If no output is available,
    dummycon remains active.
    
    v2:
    - make the comment slightly more verbose (Javier)
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reported-by: Andrei Borzenkov <[email protected]>
    Closes: https://bugzilla.suse.com/show_bug.cgi?id=1242191
    Tested-by: Andrei Borzenkov <[email protected]>
    Acked-by: Javier Martinez Canillas <[email protected]>
    Fixes: 83d83bebf401 ("console/fbcon: Add support for deferred console takeover")
    Cc: Hans de Goede <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: <[email protected]> # v4.19+
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/amd64: Fix size calculation for Non-Power-of-Two DIMMs [+ + +]
Author: Avadhut Naik <[email protected]>
Date:   Thu May 29 20:50:04 2025 +0000

    EDAC/amd64: Fix size calculation for Non-Power-of-Two DIMMs
    
    commit a3f3040657417aeadb9622c629d4a0c2693a0f93 upstream.
    
    Each Chip-Select (CS) of a Unified Memory Controller (UMC) on AMD Zen-based
    SOCs has an Address Mask and a Secondary Address Mask register associated with
    it. The amd64_edac module logs DIMM sizes on a per-UMC per-CS granularity
    during init using these two registers.
    
    Currently, the module primarily considers only the Address Mask register for
    computing DIMM sizes. The Secondary Address Mask register is only considered
    for odd CS. Additionally, if it has been considered, the Address Mask register
    is ignored altogether for that CS. For power-of-two DIMMs i.e. DIMMs whose
    total capacity is a power of two (32GB, 64GB, etc), this is not an issue
    since only the Address Mask register is used.
    
    For non-power-of-two DIMMs i.e., DIMMs whose total capacity is not a power of
    two (48GB, 96GB, etc), however, the Secondary Address Mask register is used
    in conjunction with the Address Mask register. However, since the module only
    considers either of the two registers for a CS, the size computed by the
    module is incorrect. The Secondary Address Mask register is not considered for
    even CS, and the Address Mask register is not considered for odd CS.
    
    Introduce a new helper function so that both Address Mask and Secondary
    Address Mask registers are considered, when valid, for computing DIMM sizes.
    Furthermore, also rename some variables for greater clarity.
    
    Fixes: 81f5090db843 ("EDAC/amd64: Support asymmetric dual-rank DIMMs")
    Closes: https://lore.kernel.org/[email protected]
    Reported-by: Žilvinas Žaltiena <[email protected]>
    Signed-off-by: Avadhut Naik <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Yazen Ghannam <[email protected]>
    Tested-by: Žilvinas Žaltiena <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
f2fs: don't over-report free space or inodes in statvfs [+ + +]
Author: Chao Yu <[email protected]>
Date:   Tue May 13 19:25:38 2025 +0800

    f2fs: don't over-report free space or inodes in statvfs
    
    [ Upstream commit a9201960623287927bf5776de3f70fb2fbde7e02 ]
    
    This fixes an analogus bug that was fixed in modern filesystems:
    a) xfs in commit 4b8d867ca6e2 ("xfs: don't over-report free space or
    inodes in statvfs")
    b) ext4 in commit f87d3af74193 ("ext4: don't over-report free space
    or inodes in statvfs")
    where statfs can report misleading / incorrect information where
    project quota is enabled, and the free space is less than the
    remaining quota.
    
    This commit will resolve a test failure in generic/762 which tests
    for this bug.
    
    generic/762       - output mismatch (see /share/git/fstests/results//generic/762.out.bad)
    #    --- tests/generic/762.out   2025-04-15 10:21:53.371067071 +0800
    #    +++ /share/git/fstests/results//generic/762.out.bad 2025-05-13 16:13:37.000000000 +0800
    #    @@ -6,8 +6,10 @@
    #     root blocks2 is in range
    #     dir blocks2 is in range
    #     root bavail2 is in range
    #    -dir bavail2 is in range
    #    +dir bavail2 has value of 1539066
    #    +dir bavail2 is NOT in range 304734.87 .. 310891.13
    #     root blocks3 is in range
    #    ...
    #    (Run 'diff -u /share/git/fstests/tests/generic/762.out /share/git/fstests/results//generic/762.out.bad'  to see the entire diff)
    
    HINT: You _MAY_ be missing kernel fix:
          XXXXXXXXXXXXXX xfs: don't over-report free space or inodes in statvfs
    
    Cc: [email protected]
    Fixes: ddc34e328d06 ("f2fs: introduce f2fs_statfs_project")
    Signed-off-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: arm_scmi: Add a common helper to check if a message is supported [+ + +]
Author: Cristian Marussi <[email protected]>
Date:   Mon Feb 12 12:32:24 2024 +0000

    firmware: arm_scmi: Add a common helper to check if a message is supported
    
    commit 637b6d6cae9c42db5a9525da67c991294924d2cd upstream.
    
    A common helper is provided to check if a specific protocol message is
    supported or not.
    
    Signed-off-by: Cristian Marussi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

firmware: arm_scmi: Ensure that the message-id supports fastchannel [+ + +]
Author: Sibi Sankar <[email protected]>
Date:   Tue Apr 29 15:11:06 2025 +0100

    firmware: arm_scmi: Ensure that the message-id supports fastchannel
    
    commit 94a263f981a3fa3d93f65c31e0fed0756736be43 upstream.
    
    Currently the perf and powercap protocol relies on the protocol domain
    attributes, which just ensures that one fastchannel per domain, before
    instantiating fastchannels for all possible message-ids. Fix this by
    ensuring that each message-id supports fastchannel before initialization.
    
    Logs:
      |  scmi: Failed to get FC for protocol 13 [MSG_ID:6 / RES_ID:0] - ret:-95. Using regular messaging
      |  scmi: Failed to get FC for protocol 13 [MSG_ID:6 / RES_ID:1] - ret:-95. Using regular messaging
      |  scmi: Failed to get FC for protocol 13 [MSG_ID:6 / RES_ID:2] - ret:-95. Using regular messaging
    
    CC: [email protected]
    Reported-by: Johan Hovold <[email protected]>
    Closes: https://lore.kernel.org/lkml/[email protected]/
    Fixes: 6f9ea4dabd2d ("firmware: arm_scmi: Generalize the fast channel support")
    Reviewed-by: Johan Hovold <[email protected]>
    Tested-by: Johan Hovold <[email protected]>
    Signed-off-by: Sibi Sankar <[email protected]>
    [Cristian: Modified the condition checked to establish support or not]
    Signed-off-by: Cristian Marussi <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fs/jfs: consolidate sanity checking in dbMount [+ + +]
Author: Dave Kleikamp <[email protected]>
Date:   Thu Feb 20 10:31:19 2025 -0600

    fs/jfs: consolidate sanity checking in dbMount
    
    [ Upstream commit 0d250b1c52484d489e31df2cf9118b7c4bd49d31 ]
    
    Sanity checks have been added to dbMount as individual if clauses with
    identical error handling. Move these all into one clause.
    
    Signed-off-by: Dave Kleikamp <[email protected]>
    Stable-dep-of: 37bfb464ddca ("jfs: validate AG parameters in dbMount() to prevent crashes")
    Signed-off-by: Sasha Levin <[email protected]>

 
fuse: fix race between concurrent setattrs from multiple nodes [+ + +]
Author: Guang Yuan Wu <[email protected]>
Date:   Fri May 2 04:04:21 2025 +0000

    fuse: fix race between concurrent setattrs from multiple nodes
    
    [ Upstream commit 69efbff69f89c9b2b72c4d82ad8b59706add768a ]
    
    When mounting a user-space filesystem on multiple clients, after
    concurrent ->setattr() calls from different node, stale inode
    attributes may be cached in some node.
    
    This is caused by fuse_setattr() racing with
    fuse_reverse_inval_inode().
    
    When filesystem server receives setattr request, the client node
    with valid iattr cached will be required to update the fuse_inode's
    attr_version and invalidate the cache by fuse_reverse_inval_inode(),
    and at the next call to ->getattr() they will be fetched from user
    space.
    
    The race scenario is:
    1. client-1 sends setattr (iattr-1) request to server
    2. client-1 receives the reply from server
    3. before client-1 updates iattr-1 to the cached attributes by
       fuse_change_attributes_common(), server receives another setattr
       (iattr-2) request from client-2
    4. server requests client-1 to update the inode attr_version and
       invalidate the cached iattr, and iattr-1 becomes staled
    5. client-2 receives the reply from server, and caches iattr-2
    6. continue with step 2, client-1 invokes
       fuse_change_attributes_common(), and caches iattr-1
    
    The issue has been observed from concurrent of chmod, chown, or
    truncate, which all invoke ->setattr() call.
    
    The solution is to use fuse_inode's attr_version to check whether
    the attributes have been modified during the setattr request's
    lifetime.  If so, mark the attributes as invalid in the function
    fuse_change_attributes_common().
    
    Signed-off-by: Guang Yuan Wu <[email protected]>
    Reviewed-by: Bernd Schubert <[email protected]>
    Signed-off-by: Miklos Szeredi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: lenovo: Restrict F7/9/11 mode to compact keyboards only [+ + +]
Author: Iusico Maxim <[email protected]>
Date:   Thu Jun 5 19:55:50 2025 +0200

    HID: lenovo: Restrict F7/9/11 mode to compact keyboards only
    
    commit 9327e3ee5b077c4ab4495a09b67624f670ed88b6 upstream.
    
    Commit 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume
    for compact keyboards") introduced a regression for ThinkPad TrackPoint
    Keyboard II by removing the conditional check for enabling F7/9/11 mode
    needed for compact keyboards only. As a result, the non-compact
    keyboards can no longer toggle Fn-lock via Fn+Esc, although it can be
    controlled via sysfs knob that directly sends raw commands.
    
    This patch restores the previous conditional check without any
    additions.
    
    Cc: [email protected]
    Fixes: 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume for compact keyboards")
    Signed-off-by: Iusico Maxim <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: wacom: fix kobject reference count leak [+ + +]
Author: Qasim Ijaz <[email protected]>
Date:   Fri Jun 6 19:49:59 2025 +0100

    HID: wacom: fix kobject reference count leak
    
    commit 85a720f4337f0ddf1603c8b75a8f1ffbbe022ef9 upstream.
    
    When sysfs_create_files() fails in wacom_initialize_remotes() the error
    is returned and the cleanup action will not have been registered yet.
    
    As a result the kobject???s refcount is never dropped, so the
    kobject can never be freed leading to a reference leak.
    
    Fix this by calling kobject_put() before returning.
    
    Fixes: 83e6b40e2de6 ("HID: wacom: EKR: have the wacom resources dynamically allocated")
    Acked-by: Ping Cheng <[email protected]>
    Cc: [email protected]
    Signed-off-by: Qasim Ijaz <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: wacom: fix memory leak on kobject creation failure [+ + +]
Author: Qasim Ijaz <[email protected]>
Date:   Fri Jun 6 19:49:57 2025 +0100

    HID: wacom: fix memory leak on kobject creation failure
    
    commit 5ae416c5b1e2e816aee7b3fc8347adf70afabb4c upstream.
    
    During wacom_initialize_remotes() a fifo buffer is allocated
    with kfifo_alloc() and later a cleanup action is registered
    during devm_add_action_or_reset() to clean it up.
    
    However if the code fails to create a kobject and register it
    with sysfs the code simply returns -ENOMEM before the cleanup
    action is registered leading to a memory leak.
    
    Fix this by ensuring the fifo is freed when the kobject creation
    and registration process fails.
    
    Fixes: 83e6b40e2de6 ("HID: wacom: EKR: have the wacom resources dynamically allocated")
    Reviewed-by: Ping Cheng <[email protected]>
    Cc: [email protected]
    Signed-off-by: Qasim Ijaz <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: wacom: fix memory leak on sysfs attribute creation failure [+ + +]
Author: Qasim Ijaz <[email protected]>
Date:   Fri Jun 6 19:49:58 2025 +0100

    HID: wacom: fix memory leak on sysfs attribute creation failure
    
    commit 1a19ae437ca5d5c7d9ec2678946fb339b1c706bf upstream.
    
    When sysfs_create_files() fails during wacom_initialize_remotes() the
    fifo buffer is not freed leading to a memory leak.
    
    Fix this by calling kfifo_free() before returning.
    
    Fixes: 83e6b40e2de6 ("HID: wacom: EKR: have the wacom resources dynamically allocated")
    Reviewed-by: Ping Cheng <[email protected]>
    Cc: [email protected]
    Signed-off-by: Qasim Ijaz <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hwmon: (pmbus/max34440) Fix support for max34451 [+ + +]
Author: Alexis Czezar Torreno <[email protected]>
Date:   Mon Apr 7 11:47:24 2025 +0800

    hwmon: (pmbus/max34440) Fix support for max34451
    
    [ Upstream commit 19932f844f3f51646f762f3eac4744ec3a405064 ]
    
    The max344** family has an issue with some PMBUS address being switched.
    This includes max34451 however version MAX34451-NA6 and later has this
    issue fixed and this commit supports that update.
    
    Signed-off-by: Alexis Czezar Torreno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: robotfuzz-osif: disable zero-length read messages [+ + +]
Author: Wolfram Sang <[email protected]>
Date:   Thu May 22 08:42:35 2025 +0200

    i2c: robotfuzz-osif: disable zero-length read messages
    
    commit 56ad91c1aa9c18064348edf69308080b03c9dc48 upstream.
    
    This driver passes the length of an i2c_msg directly to
    usb_control_msg(). If the message is now a read and of length 0, it
    violates the USB protocol and a warning will be printed. Enable the
    I2C_AQ_NO_ZERO_LEN_READ quirk for this adapter thus forbidding 0-length
    read messages altogether.
    
    Fixes: 83e53a8f120f ("i2c: Add bus driver for for OSIF USB i2c device.")
    Signed-off-by: Wolfram Sang <[email protected]>
    Cc: <[email protected]> # v3.14+
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

i2c: tiny-usb: disable zero-length read messages [+ + +]
Author: Wolfram Sang <[email protected]>
Date:   Thu May 22 08:43:49 2025 +0200

    i2c: tiny-usb: disable zero-length read messages
    
    commit cbdb25ccf7566eee0c2b945e35cb98baf9ed0aa6 upstream.
    
    This driver passes the length of an i2c_msg directly to
    usb_control_msg(). If the message is now a read and of length 0, it
    violates the USB protocol and a warning will be printed. Enable the
    I2C_AQ_NO_ZERO_LEN_READ quirk for this adapter thus forbidding 0-length
    read messages altogether.
    
    Fixes: e8c76eed2ecd ("i2c: New i2c-tiny-usb bus driver")
    Signed-off-by: Wolfram Sang <[email protected]>
    Cc: <[email protected]> # v2.6.22+
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
iio: adc: ad_sigma_delta: Fix use of uninitialized status_pos [+ + +]
Author: Purva Yeshi <[email protected]>
Date:   Thu Apr 10 22:34:08 2025 +0530

    iio: adc: ad_sigma_delta: Fix use of uninitialized status_pos
    
    [ Upstream commit e5cdb098a3cb165d52282ffc3a6448642953ea13 ]
    
    Fix Smatch-detected issue:
    drivers/iio/adc/ad_sigma_delta.c:604 ad_sd_trigger_handler() error:
    uninitialized symbol 'status_pos'.
    
    The variable `status_pos` was only initialized in specific switch cases
    (1, 2, 3, 4), which could leave it uninitialized if `reg_size` had an
    unexpected value.
    
    Fix by adding a default case to the switch block to catch unexpected
    values of `reg_size`. Use `dev_err_ratelimited()` for error logging and
    `goto irq_handled` instead of returning early.
    
    Signed-off-by: Purva Yeshi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: pressure: zpa2326: Use aligned_s64 for the timestamp [+ + +]
Author: Jonathan Cameron <[email protected]>
Date:   Sun Apr 13 11:34:41 2025 +0100

    iio: pressure: zpa2326: Use aligned_s64 for the timestamp
    
    [ Upstream commit 886a446b76afddfad307488e95e87f23a08ffd51 ]
    
    On x86_32 s64 fields are only 32-bit aligned.  Hence force the alignment of
    the field and padding in the structure by using aligned_s64 instead.
    
    Reviewed-by: David Lechner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
jfs: validate AG parameters in dbMount() to prevent crashes [+ + +]
Author: Vasiliy Kovalev <[email protected]>
Date:   Mon Mar 10 11:56:02 2025 +0300

    jfs: validate AG parameters in dbMount() to prevent crashes
    
    [ Upstream commit 37bfb464ddca87f203071b5bd562cd91ddc0b40a ]
    
    Validate db_agheight, db_agwidth, and db_agstart in dbMount to catch
    corrupted metadata early and avoid undefined behavior in dbAllocAG.
    Limits are derived from L2LPERCTL, LPERCTL/MAXAG, and CTLTREESIZE:
    
    - agheight: 0 to L2LPERCTL/2 (0 to 5) ensures shift
      (L2LPERCTL - 2*agheight) >= 0.
    - agwidth: 1 to min(LPERCTL/MAXAG, 2^(L2LPERCTL - 2*agheight))
      ensures agperlev >= 1.
      - Ranges: 1-8 (agheight 0-3), 1-4 (agheight 4), 1 (agheight 5).
      - LPERCTL/MAXAG = 1024/128 = 8 limits leaves per AG;
        2^(10 - 2*agheight) prevents division to 0.
    - agstart: 0 to CTLTREESIZE-1 - agwidth*(MAXAG-1) keeps ti within
      stree (size 1365).
      - Ranges: 0-1237 (agwidth 1), 0-348 (agwidth 8).
    
    UBSAN: shift-out-of-bounds in fs/jfs/jfs_dmap.c:1400:9
    shift exponent -335544310 is negative
    CPU: 0 UID: 0 PID: 5822 Comm: syz-executor130 Not tainted 6.14.0-rc5-syzkaller #0
    Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
     ubsan_epilogue lib/ubsan.c:231 [inline]
     __ubsan_handle_shift_out_of_bounds+0x3c8/0x420 lib/ubsan.c:468
     dbAllocAG+0x1087/0x10b0 fs/jfs/jfs_dmap.c:1400
     dbDiscardAG+0x352/0xa20 fs/jfs/jfs_dmap.c:1613
     jfs_ioc_trim+0x45a/0x6b0 fs/jfs/jfs_discard.c:105
     jfs_ioctl+0x2cd/0x3e0 fs/jfs/ioctl.c:131
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:906 [inline]
     __se_sys_ioctl+0xf5/0x170 fs/ioctl.c:892
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Cc: [email protected]
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=fe8264911355151c487f
    Signed-off-by: Vasiliy Kovalev <[email protected]>
    Signed-off-by: Dave Kleikamp <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kbuild: rpm-pkg: simplify installkernel %post [+ + +]
Author: Jose Ignacio Tornos Martinez <[email protected]>
Date:   Mon Jan 29 10:28:19 2024 +0100

    kbuild: rpm-pkg: simplify installkernel %post
    
    commit 358de8b4f201bc05712484b15f0109b1ae3516a8 upstream.
    
    The new installkernel application that is now included in systemd-udev
    package allows installation although destination files are already present
    in the boot directory of the kernel package, but is failing with the
    implemented workaround for the old installkernel application from grubby
    package.
    
    For the new installkernel application, as Davide says:
    <<The %post currently does a shuffling dance before calling installkernel.
    This isn't actually necessary afaict, and the current implementation
    ends up triggering downstream issues such as
    https://github.com/systemd/systemd/issues/29568
    This commit simplifies the logic to remove the shuffling. For reference,
    the original logic was added in commit 3c9c7a14b627("rpm-pkg: add %post
    section to create initramfs and grub hooks").>>
    
    But we need to keep the old behavior as well, because the old installkernel
    application from grubby package, does not allow this simplification and
    we need to be backward compatible to avoid issues with the different
    packages.
    
    Mimic Fedora shipping process and store vmlinuz, config amd System.map
    in the module directory instead of the boot directory. In this way, we will
    avoid the commented problem for all the cases, because the new destination
    files are not going to exist in the boot directory of the kernel package.
    
    Replace installkernel tool with kernel-install tool, because the latter is
    more complete.
    
    Besides, after installkernel tool execution, check to complete if the
    correct package files vmlinuz, System.map and config files are present
    in /boot directory, and if necessary, copy manually for install operation.
    In this way, take into account if  files were not previously copied from
    /usr/lib/kernel/install.d/* scripts and if the suitable files for the
    requested package are present (it could be others if the rpm files were
    replace with a new pacakge with the same release and a different build).
    
    Tested with Fedora 38, Fedora 39, RHEL 9, Oracle Linux 9.3,
    openSUSE Tumbleweed and openMandrive ROME, using dnf/zypper and rpm tools.
    
    cc: [email protected]
    Co-Developed-by: Davide Cavalca <[email protected]>
    Signed-off-by: Jose Ignacio Tornos Martinez <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ksmbd: allow a filename to contain special characters on SMB3.1.1 posix extension [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Tue May 27 11:23:01 2025 +0900

    ksmbd: allow a filename to contain special characters on SMB3.1.1 posix extension
    
    [ Upstream commit dc3e0f17f74558e8a2fce00608855f050de10230 ]
    
    If client send SMB2_CREATE_POSIX_CONTEXT to ksmbd, Allow a filename
    to contain special characters.
    
    Reported-by: Philipp Kerling <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ksmbd: provide zero as a unique ID to the Mac client [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Wed May 21 09:02:29 2025 +0900

    ksmbd: provide zero as a unique ID to the Mac client
    
    [ Upstream commit 571781eb7ffefa65b0e922c8031e42b4411a40d4 ]
    
    The Mac SMB client code seems to expect the on-disk file identifier
    to have the semantics of HFS+ Catalog Node Identifier (CNID).
    ksmbd provides the inode number as a unique ID to the client,
    but in the case of subvolumes of btrfs, there are cases where different
    files have the same inode number, so the mac smb client treats it
    as an error. There is a report that a similar problem occurs
    when the share is ZFS.
    Returning UniqueId of zero will make the Mac client to stop using and
    trusting the file id returned from the server.
    
    Reported-by: Justin Turner Arthur <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ksmbd: remove unsafe_memcpy use in session setup [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Mon Sep 23 22:39:11 2024 +0900

    ksmbd: remove unsafe_memcpy use in session setup
    
    commit d782d6e1d9078d6b82f8468dd6421050165e7d75 upstream.
    
    Kees pointed out to just use directly ->Buffer instead of pointing
    ->Buffer using offset not to use unsafe_memcpy().
    
    Suggested-by: Kees Cook <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ksmbd: Use unsafe_memcpy() for ntlm_negotiate [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Thu Aug 15 08:56:35 2024 +0900

    ksmbd: Use unsafe_memcpy() for ntlm_negotiate
    
    commit dfd046d0ced19b6ff5f11ec4ceab0a83de924771 upstream.
    
    rsp buffer is allocated larger than spnego_blob from
    smb2_allocate_rsp_buf().
    
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Kunit to check the longest symbol length [+ + +]
Author: Sergio González Collado <[email protected]>
Date:   Sun Mar 2 23:15:18 2025 +0100

    Kunit to check the longest symbol length
    
    commit c104c16073b7fdb3e4eae18f66f4009f6b073d6f upstream.
    
    The longest length of a symbol (KSYM_NAME_LEN) was increased to 512
    in the reference [1]. This patch adds kunit test suite to check the longest
    symbol length. These tests verify that the longest symbol length defined
    is supported.
    
    This test can also help other efforts for longer symbol length,
    like [2].
    
    The test suite defines one symbol with the longest possible length.
    
    The first test verify that functions with names of the created
    symbol, can be called or not.
    
    The second test, verify that the symbols are created (or
    not) in the kernel symbol table.
    
    [1] https://lore.kernel.org/lkml/[email protected]/
    [2] https://lore.kernel.org/lkml/[email protected]/
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Martin Rodriguez Reboredo <[email protected]>
    Reviewed-by: Shuah Khan <[email protected]>
    Reviewed-by: Rae Moar <[email protected]>
    Signed-off-by: Sergio González Collado <[email protected]>
    Link: https://github.com/Rust-for-Linux/linux/issues/504
    Reviewed-by: Rae Moar <[email protected]>
    Acked-by: David Gow <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
leds: multicolor: Fix intensity setting while SW blinking [+ + +]
Author: Sven Schwermer <[email protected]>
Date:   Fri Apr 4 20:40:36 2025 +0200

    leds: multicolor: Fix intensity setting while SW blinking
    
    [ Upstream commit e35ca991a777ef513040cbb36bc8245a031a2633 ]
    
    When writing to the multi_intensity file, don't unconditionally call
    led_set_brightness. By only doing this if blinking is inactive we
    prevent blinking from stopping if the blinking is in its off phase while
    the file is written.
    
    Instead, if blinking is active, the changed intensity values are applied
    upon the next blink. This is consistent with changing the brightness on
    monochrome LEDs with active blinking.
    
    Suggested-by: Jacek Anaszewski <[email protected]>
    Acked-by: Jacek Anaszewski <[email protected]>
    Acked-by: Pavel Machek <[email protected]>
    Reviewed-by: Tobias Deiminger <[email protected]>
    Tested-by: Sven Schuchmann <[email protected]>
    Signed-off-by: Sven Schwermer <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
lib/group_cpus: fix NULL pointer dereference from group_cpus_evenly() [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Thu Jun 19 21:26:55 2025 +0800

    lib/group_cpus: fix NULL pointer dereference from group_cpus_evenly()
    
    commit df831e97739405ecbaddb85516bc7d4d1c933d6b upstream.
    
    While testing null_blk with configfs, echo 0 > poll_queues will trigger
    following panic:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000010
    Oops: Oops: 0000 [#1] SMP NOPTI
    CPU: 27 UID: 0 PID: 920 Comm: bash Not tainted 6.15.0-02023-gadbdb95c8696-dirty #1238 PREEMPT(undef)
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014
    RIP: 0010:__bitmap_or+0x48/0x70
    Call Trace:
     <TASK>
     __group_cpus_evenly+0x822/0x8c0
     group_cpus_evenly+0x2d9/0x490
     blk_mq_map_queues+0x1e/0x110
     null_map_queues+0xc9/0x170 [null_blk]
     blk_mq_update_queue_map+0xdb/0x160
     blk_mq_update_nr_hw_queues+0x22b/0x560
     nullb_update_nr_hw_queues+0x71/0xf0 [null_blk]
     nullb_device_poll_queues_store+0xa4/0x130 [null_blk]
     configfs_write_iter+0x109/0x1d0
     vfs_write+0x26e/0x6f0
     ksys_write+0x79/0x180
     __x64_sys_write+0x1d/0x30
     x64_sys_call+0x45c4/0x45f0
     do_syscall_64+0xa5/0x240
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Root cause is that numgrps is set to 0, and ZERO_SIZE_PTR is returned from
    kcalloc(), and later ZERO_SIZE_PTR will be deferenced.
    
    Fix the problem by checking numgrps first in group_cpus_evenly(), and
    return NULL directly if numgrps is zero.
    
    [[email protected]: also fix the non-SMP version]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 6a6dcae8f486 ("blk-mq: Build default queue map via group_cpus_evenly()")
    Signed-off-by: Yu Kuai <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Reviewed-by: Jens Axboe <[email protected]>
    Cc: ErKun Yang <[email protected]>
    Cc: John Garry <[email protected]>
    Cc: Thomas Gleinxer <[email protected]>
    Cc: "zhangyi (F)" <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
libbpf: Fix null pointer dereference in btf_dump__free on allocation failure [+ + +]
Author: Yuan Chen <[email protected]>
Date:   Wed Jun 18 09:19:33 2025 +0800

    libbpf: Fix null pointer dereference in btf_dump__free on allocation failure
    
    [ Upstream commit aa485e8789d56a4573f7c8d000a182b749eaa64d ]
    
    When btf_dump__new() fails to allocate memory for the internal hashmap
    (btf_dump->type_names), it returns an error code. However, the cleanup
    function btf_dump__free() does not check if btf_dump->type_names is NULL
    before attempting to free it. This leads to a null pointer dereference
    when btf_dump__free() is called on a btf_dump object.
    
    Fixes: 351131b51c7a ("libbpf: add btf_dump API for BTF-to-C conversion")
    Signed-off-by: Yuan Chen <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

libbpf: Fix possible use-after-free for externs [+ + +]
Author: Adin Scannell <[email protected]>
Date:   Tue Jun 24 22:02:15 2025 -0700

    libbpf: Fix possible use-after-free for externs
    
    [ Upstream commit fa6f092cc0a02d0fcee37e9e8172eda372a03d33 ]
    
    The `name` field in `obj->externs` points into the BTF data at initial
    open time. However, some functions may invalidate this after opening and
    before loading (e.g. `bpf_map__set_value_size`), which results in
    pointers into freed memory and undefined behavior.
    
    The simplest solution is to simply `strdup` these strings, similar to
    the `essent_name`, and free them at the same time.
    
    In order to test this path, the `global_map_resize` BPF selftest is
    modified slightly to ensure the presence of an extern, which causes this
    test to fail prior to the fix. Given there isn't an obvious API or error
    to test against, I opted to add this to the existing test as an aspect
    of the resizing feature rather than duplicate the test.
    
    Fixes: 9d0a23313b1a ("libbpf: Add capability for resizing datasec maps")
    Signed-off-by: Adin Scannell <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.6.96 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Sun Jul 6 11:00:17 2025 +0200

    Linux 6.6.96
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Miguel Ojeda <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mailbox: Not protect module_put with spin_lock_irqsave [+ + +]
Author: Peng Fan <[email protected]>
Date:   Fri Apr 11 21:14:10 2025 +0800

    mailbox: Not protect module_put with spin_lock_irqsave
    
    [ Upstream commit dddbd233e67e792bb0a3f9694a4707e6be29b2c6 ]
    
    &chan->lock is not supposed to protect 'chan->mbox'.
    And in __mbox_bind_client, try_module_get is also not protected
    by &chan->lock. So move module_put out of the lock protected
    region.
    
    Signed-off-by: Peng Fan <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
md/md-bitmap: fix dm-raid max_write_behind setting [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Sat May 24 14:13:10 2025 +0800

    md/md-bitmap: fix dm-raid max_write_behind setting
    
    [ Upstream commit 2afe17794cfed5f80295b1b9facd66e6f65e5002 ]
    
    It's supposed to be COUNTER_MAX / 2, not COUNTER_MAX.
    
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Signed-off-by: Yu Kuai <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
media: uvcvideo: Rollback non processed entities on error [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Mon Feb 24 10:34:55 2025 +0000

    media: uvcvideo: Rollback non processed entities on error
    
    commit a70705d3c020d0d5c3ab6a5cc93e011ac35e7d48 upstream.
    
    If we fail to commit an entity, we need to restore the
    UVC_CTRL_DATA_BACKUP for the other uncommitted entities. Otherwise the
    control cache and the device would be out of sync.
    
    Cc: [email protected]
    Fixes: b4012002f3a3 ("[media] uvcvideo: Add support for control events")
    Reported-by: Hans de Goede <[email protected]>
    Closes: https://lore.kernel.org/linux-media/[email protected]/
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mfd: max14577: Fix wakeup source leaks on device unbind [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Apr 6 21:50:11 2025 +0200

    mfd: max14577: Fix wakeup source leaks on device unbind
    
    [ Upstream commit d905d06e64b0eb3da43af6186c132f5282197998 ]
    
    Device can be unbound, so driver must also release memory for the wakeup
    source.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
misc: tps6594-pfsm: Add NULL pointer check in tps6594_pfsm_probe() [+ + +]
Author: Chenyuan Yang <[email protected]>
Date:   Mon Mar 10 20:05:11 2025 -0500

    misc: tps6594-pfsm: Add NULL pointer check in tps6594_pfsm_probe()
    
    [ Upstream commit a99b598d836c9c6411110c70a2da134c78d96e67 ]
    
    The returned value, pfsm->miscdev.name, from devm_kasprintf()
    could be NULL.
    A pointer check is added to prevent potential NULL pointer dereference.
    This is similar to the fix in commit 3027e7b15b02
    ("ice: Fix some null pointer dereference issues in ice_ptp.c").
    
    This issue is found by our static analysis tool.
    
    Signed-off-by: Chenyuan Yang <[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]>

 
mm/damon/sysfs-schemes: free old damon_sysfs_scheme_filter->memcg_path on write [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Thu Jun 19 11:36:07 2025 -0700

    mm/damon/sysfs-schemes: free old damon_sysfs_scheme_filter->memcg_path on write
    
    commit 4f489fe6afb395dbc79840efa3c05440b760d883 upstream.
    
    memcg_path_store() assigns a newly allocated memory buffer to
    filter->memcg_path, without deallocating the previously allocated and
    assigned memory buffer.  As a result, users can leak kernel memory by
    continuously writing a data to memcg_path DAMOS sysfs file.  Fix the leak
    by deallocating the previously set memory buffer.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 7ee161f18b5d ("mm/damon/sysfs-schemes: implement filter directory")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: Shuah Khan <[email protected]>
    Cc: <[email protected]>            [6.3.x]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net: enetc: Correct endianness handling in _enetc_rd_reg64 [+ + +]
Author: Simon Horman <[email protected]>
Date:   Tue Jun 24 17:35:12 2025 +0100

    net: enetc: Correct endianness handling in _enetc_rd_reg64
    
    [ Upstream commit 7b515f35a911fdc31fbde6531828dcd6ae9803d3 ]
    
    enetc_hw.h provides two versions of _enetc_rd_reg64.
    One which simply calls ioread64() when available.
    And another that composes the 64-bit result from ioread32() calls.
    
    In the second case the code appears to assume that each ioread32() call
    returns a little-endian value. However both the shift and logical or
    used to compose the return value would not work correctly on big endian
    systems if this were the case. Moreover, this is inconsistent with the
    first case where the return value of ioread64() is assumed to be in host
    byte order.
    
    It appears that the correct approach is for both versions to treat the
    return value of ioread*() functions as being in host byte order. And
    this patch corrects the ioread32()-based version to do so.
    
    This is a bug but would only manifest on big endian systems
    that make use of the ioread32-based implementation of _enetc_rd_reg64.
    While all in-tree users of this driver are little endian and
    make use of the ioread64-based implementation of _enetc_rd_reg64.
    Thus, no in-tree user of this driver is affected by this bug.
    
    Flagged by Sparse.
    Compile tested only.
    
    Fixes: 16eb4c85c964 ("enetc: Add ethtool statistics")
    Closes: https://lore.kernel.org/all/AM9PR04MB850500D3FC24FE23DEFCEA158879A@AM9PR04MB8505.eurprd04.prod.outlook.com/
    Signed-off-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: libwx: fix the creation of page_pool [+ + +]
Author: Jiawen Wu <[email protected]>
Date:   Wed Jun 25 10:39:24 2025 +0800

    net: libwx: fix the creation of page_pool
    
    commit 85720e04d9af0b77f8092b12a06661a8d459d4a0 upstream.
    
    'rx_ring->size' means the count of ring descriptors multiplied by the
    size of one descriptor. When increasing the count of ring descriptors,
    it may exceed the limit of pool size.
    
    [ 864.209610] page_pool_create_percpu() gave up with errno -7
    [ 864.209613] txgbe 0000:11:00.0: Page pool creation failed: -7
    
    Fix to set the pool_size to the count of ring descriptors.
    
    Fixes: 850b971110b2 ("net: libwx: Allocate Rx and Tx resources")
    Cc: [email protected]
    Signed-off-by: Jiawen Wu <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Mina Almasry <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: selftests: fix TCP packet checksum [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Tue Jun 24 11:32:58 2025 -0700

    net: selftests: fix TCP packet checksum
    
    [ Upstream commit 8d89661a36dd3bb8c9902cff36dc0c144dce3faf ]
    
    The length in the pseudo header should be the length of the L3 payload
    AKA the L4 header+payload. The selftest code builds the packet from
    the lower layers up, so all the headers are pushed already when it
    constructs L4. We need to subtract the lower layer headers from skb->len.
    
    Fixes: 3e1e58d64c3d ("net: add generic selftest support")
    Signed-off-by: Jakub Kicinski <[email protected]>
    Reviewed-by: Gerhard Engleder <[email protected]>
    Reported-by: Oleksij Rempel <[email protected]>
    Tested-by: Oleksij Rempel <[email protected]>
    Reviewed-by: Oleksij Rempel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4.2: fix listxattr to return selinux security label [+ + +]
Author: Olga Kornievskaia <[email protected]>
Date:   Fri Apr 25 14:09:21 2025 -0400

    NFSv4.2: fix listxattr to return selinux security label
    
    [ Upstream commit 243fea134633ba3d64aceb4c16129c59541ea2c6 ]
    
    Currently, when NFS is queried for all the labels present on the
    file via a command example "getfattr -d -m . /mnt/testfile", it
    does not return the security label. Yet when asked specifically for
    the label (getfattr -n security.selinux) it will be returned.
    Include the security label when all attributes are queried.
    
    Signed-off-by: Olga Kornievskaia <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4: Always set NLINK even if the server doesn't support it [+ + +]
Author: Han Young <[email protected]>
Date:   Sun May 4 20:57:04 2025 +0800

    NFSv4: Always set NLINK even if the server doesn't support it
    
    [ Upstream commit 3a3065352f73381d3a1aa0ccab44aec3a5a9b365 ]
    
    fattr4_numlinks is a recommended attribute, so the client should emulate
    it even if the server doesn't support it. In decode_attr_nlink function
    in nfs4xdr.c, nlink is initialized to 1. However, this default value
    isn't set to the inode due to the check in nfs_fhget.
    
    So if the server doesn't support numlinks, inode's nlink will be zero,
    the mount will fail with error "Stale file handle". Set the nlink to 1
    if the server doesn't support it.
    
    Signed-off-by: Han Young <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

NFSv4: xattr handlers should check for absent nfs filehandles [+ + +]
Author: Scott Mayhew <[email protected]>
Date:   Wed Apr 16 11:23:38 2025 -0400

    NFSv4: xattr handlers should check for absent nfs filehandles
    
    [ Upstream commit 6e9a2f8dbe93c8004c2af2c0158888628b7ca034 ]
    
    The nfs inodes for referral anchors that have not yet been followed have
    their filehandles zeroed out.
    
    Attempting to call getxattr() on one of these will cause the nfs client
    to send a GETATTR to the nfs server with the preceding PUTFH sans
    filehandle.  The server will reply NFS4ERR_NOFILEHANDLE, leading to -EIO
    being returned to the application.
    
    For example:
    
    $ strace -e trace=getxattr getfattr -n system.nfs4_acl /mnt/t/ref
    getxattr("/mnt/t/ref", "system.nfs4_acl", NULL, 0) = -1 EIO (Input/output error)
    /mnt/t/ref: system.nfs4_acl: Input/output error
    +++ exited with 1 +++
    
    Have the xattr handlers return -ENODATA instead.
    
    Signed-off-by: Scott Mayhew <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme: always punt polled uring_cmd end_io work to task_work [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Fri Jun 13 13:37:41 2025 -0600

    nvme: always punt polled uring_cmd end_io work to task_work
    
    Commit 9ce6c9875f3e995be5fd720b65835291f8a609b1 upstream.
    
    Currently NVMe uring_cmd completions will complete locally, if they are
    polled. This is done because those completions are always invoked from
    task context. And while that is true, there's no guarantee that it's
    invoked under the right ring context, or even task. If someone does
    NVMe passthrough via multiple threads and with a limited number of
    poll queues, then ringA may find completions from ringB. For that case,
    completing the request may not be sound.
    
    Always just punt the passthrough completions via task_work, which will
    redirect the completion, if needed.
    
    Cc: [email protected]
    Fixes: 585079b6e425 ("nvme: wire up async polling for io passthrough commands")
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ovl: Check for NULL d_inode() in ovl_dentry_upper() [+ + +]
Author: Kees Cook <[email protected]>
Date:   Mon Apr 21 16:15:19 2025 -0700

    ovl: Check for NULL d_inode() in ovl_dentry_upper()
    
    [ Upstream commit 8a39f1c870e9d6fbac5638f3a42a6a6363829c49 ]
    
    In ovl_path_type() and ovl_is_metacopy_dentry() GCC notices that it is
    possible for OVL_E() to return NULL (which implies that d_inode(dentry)
    may be NULL). This would result in out of bounds reads via container_of(),
    seen with GCC 15's -Warray-bounds -fdiagnostics-details. For example:
    
    In file included from arch/x86/include/generated/asm/rwonce.h:1,
                     from include/linux/compiler.h:339,
                     from include/linux/export.h:5,
                     from include/linux/linkage.h:7,
                     from include/linux/fs.h:5,
                     from fs/overlayfs/util.c:7:
    In function 'ovl_upperdentry_dereference',
        inlined from 'ovl_dentry_upper' at ../fs/overlayfs/util.c:305:9,
        inlined from 'ovl_path_type' at ../fs/overlayfs/util.c:216:6:
    include/asm-generic/rwonce.h:44:26: error: array subscript 0 is outside array bounds of 'struct inode[7486503276667837]' [-Werror=array-bounds=]
       44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
          |                         ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
       50 |         __READ_ONCE(x);                                                 \
          |         ^~~~~~~~~~~
    fs/overlayfs/ovl_entry.h:195:16: note: in expansion of macro 'READ_ONCE'
      195 |         return READ_ONCE(oi->__upperdentry);
          |                ^~~~~~~~~
      'ovl_path_type': event 1
      185 |         return inode ? OVL_I(inode)->oe : NULL;
      'ovl_path_type': event 2
    
    Avoid this by allowing ovl_dentry_upper() to return NULL if d_inode() is
    NULL, as that means the problematic dereferencing can never be reached.
    Note that this fixes the over-eager compiler warning in an effort to
    being able to enable -Warray-bounds globally. There is no known
    behavioral bug here.
    
    Suggested-by: Amir Goldstein <[email protected]>
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Miklos Szeredi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI: apple: Fix missing OF node reference in apple_pcie_setup_port [+ + +]
Author: Hector Martin <[email protected]>
Date:   Tue Apr 1 10:17:08 2025 +0100

    PCI: apple: Fix missing OF node reference in apple_pcie_setup_port
    
    [ Upstream commit 7fa9fbf39116b061f8a41cd84f1884c545f322c4 ]
    
    In the success path, we hang onto a reference to the node, so make sure
    to grab one. The caller iterator puts our borrowed reference when we
    return.
    
    Signed-off-by: Hector Martin <[email protected]>
    Signed-off-by: Alyssa Rosenzweig <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Tested-by: Janne Grunau <[email protected]>
    Reviewed-by: Rob Herring (Arm) <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Acked-by: Alyssa Rosenzweig <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: apple: Set only available ports up [+ + +]
Author: Janne Grunau <[email protected]>
Date:   Tue Apr 1 10:17:01 2025 +0100

    PCI: apple: Set only available ports up
    
    [ Upstream commit 751bec089c4eed486578994abd2c5395f08d0302 ]
    
    Iterating over disabled ports results in of_irq_parse_raw() parsing
    the wrong "interrupt-map" entries, as it takes the status of the node
    into account.
    
    This became apparent after disabling unused PCIe ports in the Apple
    Silicon device trees instead of deleting them.
    
    Switching from for_each_child_of_node_scoped() to
    for_each_available_child_of_node_scoped() solves this issue.
    
    Fixes: 1e33888fbe44 ("PCI: apple: Add initial hardware bring-up")
    Fixes: a0189fdfb73d ("arm64: dts: apple: t8103: Disable unused PCIe ports")
    Signed-off-by: Janne Grunau <[email protected]>
    Signed-off-by: Alyssa Rosenzweig <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Tested-by: Janne Grunau <[email protected]>
    Reviewed-by: Rob Herring (Arm) <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Acked-by: Alyssa Rosenzweig <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/asahi/20230214-apple_dts_pcie_disable_unused-v1-0-5ea0d3ddcde3@jannau.net/
    Link: https://lore.kernel.org/asahi/[email protected]/
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: apple: Use helper function for_each_child_of_node_scoped() [+ + +]
Author: Zhang Zekun <[email protected]>
Date:   Sat Aug 31 12:04:12 2024 +0800

    PCI: apple: Use helper function for_each_child_of_node_scoped()
    
    [ Upstream commit f60b4e06a945f25d463ae065c6e41c6e24faee0a ]
    
    The for_each_available_child_of_node_scoped() helper provides
    a scope-based clean-up functionality to put the device_node
    automatically, and as such, there is no need to call of_node_put()
    directly.
    
    Thus, use this helper to simplify the code.
    
    Signed-off-by: Zhang Zekun <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Stable-dep-of: 751bec089c4e ("PCI: apple: Set only available ports up")
    Signed-off-by: Sasha Levin <[email protected]>

PCI: dwc: Make link training more robust by setting PORT_LOGIC_LINK_WIDTH to one lane [+ + +]
Author: Wenbin Yao <[email protected]>
Date:   Tue Apr 22 18:36:23 2025 +0800

    PCI: dwc: Make link training more robust by setting PORT_LOGIC_LINK_WIDTH to one lane
    
    [ Upstream commit af3c6eacce0c464f28fe0e3d365b3860aba07931 ]
    
    As per DWC PCIe registers description 4.30a, section 1.13.43, NUM_OF_LANES
    named as PORT_LOGIC_LINK_WIDTH in PCIe DWC driver, is referred to as the
    "Predetermined Number of Lanes" in PCIe r6.0, sec 4.2.7.2.1, which explains
    the conditions required to enter Polling.Configuration:
    
      Next state is Polling.Configuration after at least 1024 TS1 Ordered Sets
      were transmitted, and all Lanes that detected a Receiver during Detect
      receive eight consecutive training sequences ...
    
      Otherwise, after a 24 ms timeout the next state is:
    
        Polling.Configuration if,
    
          (i) Any Lane, which detected a Receiver during Detect, received eight
          consecutive training sequences ... and a minimum of 1024 TS1 Ordered
          Sets are transmitted after receiving one TS1 or TS2 Ordered Set.
    
          And
    
          (ii) At least a predetermined set of Lanes that detected a Receiver
          during Detect have detected an exit from Electrical Idle at least
          once since entering Polling.Active.
    
            Note: This may prevent one or more bad Receivers or Transmitters
            from holding up a valid Link from being configured, and allow for
            additional training in Polling.Configuration. The exact set of
            predetermined Lanes is implementation specific.
    
            Note: Any Lane that receives eight consecutive TS1 or TS2 Ordered
            Sets should have detected an exit from Electrical Idle at least
            once since entering Polling.Active.
    
    In a PCIe link supporting multiple lanes, if PORT_LOGIC_LINK_WIDTH is set
    to lane width the hardware supports, all lanes that detect a receiver
    during the Detect phase must receive eight consecutive training sequences.
    Otherwise, LTSSM will not enter Polling.Configuration and link training
    will fail.
    
    Therefore, always set PORT_LOGIC_LINK_WIDTH to 1, regardless of the number
    of lanes the port actually supports, to make link up more robust. This
    setting will not affect the intended link width if all lanes are
    functional. Additionally, the link can still be established with at least
    one lane if other lanes are faulty.
    
    Co-developed-by: Qiang Yu <[email protected]>
    Signed-off-by: Qiang Yu <[email protected]>
    Signed-off-by: Wenbin Yao <[email protected]>
    [mani: subject change]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    [bhelgaas: update PCIe spec citation, format quote]
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Niklas Cassel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: ideapad-laptop: introduce a generic notification chain [+ + +]
Author: Gergo Koteles <[email protected]>
Date:   Thu Jul 25 11:21:07 2024 +0200

    platform/x86: ideapad-laptop: introduce a generic notification chain
    
    [ Upstream commit 613e3900c24bb1379d994f44d75d31c3223cc263 ]
    
    There are several cases where a notification chain can simplify Lenovo
    WMI drivers.
    
    Add a generic notification chain into ideapad-laptop.
    
    Signed-off-by: Gergo Koteles <[email protected]>
    Link: https://lore.kernel.org/r/c5a43efae8a32bd034c3d19c0a686941347575a7.1721898747.git.soyer@irl.hu
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Stable-dep-of: 5808c3421695 ("platform/x86: ideapad-laptop: use usleep_range() for EC polling")
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: ideapad-laptop: move ACPI helpers from header to source file [+ + +]
Author: Gergo Koteles <[email protected]>
Date:   Thu Jul 25 11:21:09 2024 +0200

    platform/x86: ideapad-laptop: move ACPI helpers from header to source file
    
    [ Upstream commit 6c1fa8edfef815a97db57f30216265bfa152792d ]
    
    Since moving ymc_trigger_ec from lenovo-ymc to ideapad-laptop, only the
    latter uses these definitions and functions.
    
    Move them back to source file.
    
    Signed-off-by: Gergo Koteles <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/57a48d2582b567f6c6fbcd3b379e17aee0fb5a94.1721898747.git.soyer@irl.hu
    Signed-off-by: Hans de Goede <[email protected]>
    Stable-dep-of: 5808c3421695 ("platform/x86: ideapad-laptop: use usleep_range() for EC polling")
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: ideapad-laptop: move ymc_trigger_ec from lenovo-ymc [+ + +]
Author: Gergo Koteles <[email protected]>
Date:   Thu Jul 25 11:21:08 2024 +0200

    platform/x86: ideapad-laptop: move ymc_trigger_ec from lenovo-ymc
    
    [ Upstream commit cde7886b35176d56e72bfc68dc104fa08e7b072c ]
    
    Some models need to trigger the EC after each YMC event for the yoga
    mode control to work properly. EC triggering consist of a VPC call from
    the lenovo-ymc module. Except for this, all VPC calls are in the
    ideapad-laptop module.
    
    Since ideapad-laptop has a notification chain, a new YMC_EVENT action
    can be added and triggered from the lenovo-ymc module. Then the
    ideapad-laptop can trigger the EC.
    
    If the triggering is in the ideapad-laptop module, then the ec_trigger
    module parameter should be there as well.
    
    Move the ymc_trigger_ec functionality and the ec_trigger module
    parameter to the ideapad-laptop module.
    
    Signed-off-by: Gergo Koteles <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/d980ab3ac32b5e554f456b0ff17279bfdbe2a203.1721898747.git.soyer@irl.hu
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Stable-dep-of: 5808c3421695 ("platform/x86: ideapad-laptop: use usleep_range() for EC polling")
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: ideapad-laptop: use usleep_range() for EC polling [+ + +]
Author: Rong Zhang <[email protected]>
Date:   Mon May 26 04:18:07 2025 +0800

    platform/x86: ideapad-laptop: use usleep_range() for EC polling
    
    [ Upstream commit 5808c34216954cd832bd4b8bc52dfa287049122b ]
    
    It was reported that ideapad-laptop sometimes causes some recent (since
    2024) Lenovo ThinkBook models shut down when:
     - suspending/resuming
     - closing/opening the lid
     - (dis)connecting a charger
     - reading/writing some sysfs properties, e.g., fan_mode, touchpad
     - pressing down some Fn keys, e.g., Brightness Up/Down (Fn+F5/F6)
     - (seldom) loading the kmod
    
    The issue has existed since the launch day of such models, and there
    have been some out-of-tree workarounds (see Link:) for the issue. One
    disables some functionalities, while another one simply shortens
    IDEAPAD_EC_TIMEOUT. The disabled functionalities have read_ec_data() in
    their call chains, which calls schedule() between each poll.
    
    It turns out that these models suffer from the indeterminacy of
    schedule() because of their low tolerance for being polled too
    frequently. Sometimes schedule() returns too soon due to the lack of
    ready tasks, causing the margin between two polls to be too short.
    In this case, the command is somehow aborted, and too many subsequent
    polls (they poll for "nothing!") may eventually break the state machine
    in the EC, resulting in a hard shutdown. This explains why shortening
    IDEAPAD_EC_TIMEOUT works around the issue - it reduces the total number
    of polls sent to the EC.
    
    Even when it doesn't lead to a shutdown, frequent polls may also disturb
    the ongoing operation and notably delay (+ 10-20ms) the availability of
    EC response. This phenomenon is unlikely to be exclusive to the models
    mentioned above, so dropping the schedule() manner should also slightly
    improve the responsiveness of various models.
    
    Fix these issues by migrating to usleep_range(150, 300). The interval is
    chosen to add some margin to the minimal 50us and considering EC
    responses are usually available after 150-2500us based on my test. It
    should be enough to fix these issues on all models subject to the EC bug
    without introducing latency on other models.
    
    Tested on ThinkBook 14 G7+ ASP and solved both issues. No regression was
    introduced in the test on a model without the EC bug (ThinkBook X IMH,
    thanks Eric).
    
    Link: https://github.com/ty2/ideapad-laptop-tb2024g6plus/commit/6c5db18c9e8109873c2c90a7d2d7f552148f7ad4
    Link: https://github.com/ferstar/ideapad-laptop-tb/commit/42d1e68e5009529d31bd23f978f636f79c023e80
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218771
    Fixes: 6a09f21dd1e2 ("ideapad: add ACPI helpers")
    Cc: [email protected]
    Tested-by: Felix Yan <[email protected]>
    Tested-by: Eric Long <[email protected]>
    Tested-by: Jianfei Zhang <[email protected]>
    Tested-by: Mingcong Bai <[email protected]>
    Tested-by: Minh Le <[email protected]>
    Tested-by: Sicheng Zhu <[email protected]>
    Signed-off-by: Rong Zhang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "ipv6: save dontfrag in cork" [+ + +]
Author: Brett A C Sheffield (Librecast) <[email protected]>
Date:   Wed Jul 2 13:37:32 2025 +0200

    Revert "ipv6: save dontfrag in cork"
    
    This reverts commit 8ebf2709fe4dcd0a1b7b95bf61e529ddcd3cdf51 which is
    commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a upstream.
    
    A regression was introduced when backporting this to the stable kernels
    without applying previous commits in this series.
    
    When sending IPv6 UDP packets larger than MTU, EMSGSIZE was returned
    instead of fragmenting the packets as expected.
    
    As there is no compelling reason for this commit to be present in the
    stable kernels it should be reverted.
    
    Signed-off-by: Brett A C Sheffield <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rust: module: place cleanup_module() in .exit.text section [+ + +]
Author: FUJITA Tomonori <[email protected]>
Date:   Sat Mar 8 13:45:06 2025 +0900

    rust: module: place cleanup_module() in .exit.text section
    
    [ Upstream commit 249c3a0e53acefc2b06d3b3e1fc28fb2081f878d ]
    
    Place cleanup_module() in .exit.text section. Currently,
    cleanup_module() is likely placed in the .text section. It's
    inconsistent with the layout of C modules, where cleanup_module() is
    placed in .exit.text.
    
    [ Boqun asked for an example of how the section changed to be
      put in the log. Tomonori provided the following examples:
    
        C module:
    
          $ objdump -t ~/build/x86/drivers/block/loop.o|grep clean
          0000000000000000 l     O .exit.data    0000000000000008 __UNIQUE_ID___addressable_cleanup_module412
          0000000000000000 g     F .exit.text    000000000000009c cleanup_module
    
        Rust module without this patch:
    
          $ objdump -t ~/build/x86/samples/rust/rust_minimal.o|grep clean
          00000000000002b0 g     F .text         00000000000000c6 cleanup_module
          0000000000000000 g     O .exit.data    0000000000000008 _R...___UNIQUE_ID___addressable_cleanup_module
    
        Rust module with this patch:
    
          $ objdump -t ~/build/x86/samples/rust/rust_minimal.o|grep clean
          0000000000000000 g     F .exit.text    00000000000000c6 cleanup_module
          0000000000000000 g     O .exit.data    0000000000000008 _R...___UNIQUE_ID___addressable_cleanup_module
    
      - Miguel ]
    
    Signed-off-by: FUJITA Tomonori <[email protected]>
    Acked-by: Jarkko Sakkinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/entry: Fix last breaking event handling in case of stack corruption [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Thu Apr 24 17:07:01 2025 +0200

    s390/entry: Fix last breaking event handling in case of stack corruption
    
    commit ae952eea6f4a7e2193f8721a5366049946e012e7 upstream.
    
    In case of stack corruption stack_invalid() is called and the expectation
    is that register r10 contains the last breaking event address. This
    dependency is quite subtle and broke a couple of years ago without that
    anybody noticed.
    
    Fix this by getting rid of the dependency and read the last breaking event
    address from lowcore.
    
    Fixes: 56e62a737028 ("s390: convert to generic entry")
    Acked-by: Ilya Leoshkevich <[email protected]>
    Reviewed-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
s390/pkey: Prevent overflow in size calculation for memdup_user() [+ + +]
Author: Fedor Pchelkin <[email protected]>
Date:   Wed Jun 11 22:20:10 2025 +0300

    s390/pkey: Prevent overflow in size calculation for memdup_user()
    
    commit 7360ee47599af91a1d5f4e74d635d9408a54e489 upstream.
    
    Number of apqn target list entries contained in 'nr_apqns' variable is
    determined by userspace via an ioctl call so the result of the product in
    calculation of size passed to memdup_user() may overflow.
    
    In this case the actual size of the allocated area and the value
    describing it won't be in sync leading to various types of unpredictable
    behaviour later.
    
    Use a proper memdup_array_user() helper which returns an error if an
    overflow is detected. Note that it is different from when nr_apqns is
    initially zero - that case is considered valid and should be handled in
    subsequent pkey_handler implementations.
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: f2bbc96e7cfa ("s390/pkey: add CCA AES cipher key support")
    Cc: [email protected]
    Signed-off-by: Fedor Pchelkin <[email protected]>
    Reviewed-by: Holger Dengler <[email protected]>
    Reviewed-by: Heiko Carstens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
scripts: clean up IA-64 code [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Fri Nov 24 23:09:08 2023 +0900

    scripts: clean up IA-64 code
    
    commit 0df8e97085946dd79c06720678a845778b6d6bf8 upstream.
    
    A little more janitorial work after commit cf8e8658100d ("arch: Remove
    Itanium (IA-64) architecture").
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Reviewed-by: Nicolas Schier <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
scsi: megaraid_sas: Fix invalid node index [+ + +]
Author: Chen Yu <[email protected]>
Date:   Wed Jun 4 12:25:56 2025 +0800

    scsi: megaraid_sas: Fix invalid node index
    
    commit 752eb816b55adb0673727ba0ed96609a17895654 upstream.
    
    On a system with DRAM interleave enabled, out-of-bound access is
    detected:
    
    megaraid_sas 0000:3f:00.0: requested/available msix 128/128 poll_queue 0
    ------------[ cut here ]------------
    UBSAN: array-index-out-of-bounds in ./arch/x86/include/asm/topology.h:72:28
    index -1 is out of range for type 'cpumask *[1024]'
    dump_stack_lvl+0x5d/0x80
    ubsan_epilogue+0x5/0x2b
    __ubsan_handle_out_of_bounds.cold+0x46/0x4b
    megasas_alloc_irq_vectors+0x149/0x190 [megaraid_sas]
    megasas_probe_one.cold+0xa4d/0x189c [megaraid_sas]
    local_pci_probe+0x42/0x90
    pci_device_probe+0xdc/0x290
    really_probe+0xdb/0x340
    __driver_probe_device+0x78/0x110
    driver_probe_device+0x1f/0xa0
    __driver_attach+0xba/0x1c0
    bus_for_each_dev+0x8b/0xe0
    bus_add_driver+0x142/0x220
    driver_register+0x72/0xd0
    megasas_init+0xdf/0xff0 [megaraid_sas]
    do_one_initcall+0x57/0x310
    do_init_module+0x90/0x250
    init_module_from_file+0x85/0xc0
    idempotent_init_module+0x114/0x310
    __x64_sys_finit_module+0x65/0xc0
    do_syscall_64+0x82/0x170
    entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Fix it accordingly.
    
    Signed-off-by: Chen Yu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: 8049da6f3943 ("scsi: megaraid_sas: Use irq_set_affinity_and_hint()")
    Cc: [email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scsi: ufs: core: Don't perform UFS clkscaling during host async scan [+ + +]
Author: Ziqi Chen <[email protected]>
Date:   Thu May 22 16:12:28 2025 +0800

    scsi: ufs: core: Don't perform UFS clkscaling during host async scan
    
    [ Upstream commit e97633492f5a3eca7b3ff03b4ef6f993017f7955 ]
    
    When preparing for UFS clock scaling, the UFS driver will quiesce all
    sdevs queues in the UFS SCSI host tagset list and then unquiesce them in
    ufshcd_clock_scaling_unprepare(). If the UFS SCSI host async scan is in
    progress at this time, some LUs may be added to the tagset list between
    UFS clkscale prepare and unprepare. This can cause two issues:
    
    1. During clock scaling, there may be I/O requests issued through new
    added queues that have not been quiesced, leading to task abort issue.
    
    2. These new added queues that have not been quiesced will be unquiesced
    as well when UFS clkscale is unprepared, resulting in warning prints.
    
    Therefore, use the mutex lock scan_mutex in
    ufshcd_clock_scaling_prepare() and ufshcd_clock_scaling_unprepare() to
    protect it.
    
    Co-developed-by: Can Guo <[email protected]>
    Signed-off-by: Can Guo <[email protected]>
    Signed-off-by: Ziqi Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Suggested-by: Bart Van Assche <[email protected]>
    Reviewed-by: Bart Van Assche <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: imx: Restore original RXTL for console to fix data loss [+ + +]
Author: Fabio Estevam <[email protected]>
Date:   Thu Jun 19 08:46:17 2025 -0300

    serial: imx: Restore original RXTL for console to fix data loss
    
    commit f23c52aafb1675ab1d1f46914556d8e29cbbf7b3 upstream.
    
    Commit 7a637784d517 ("serial: imx: reduce RX interrupt frequency")
    introduced a regression on the i.MX6UL EVK board. The issue can be
    reproduced with the following steps:
    
    - Open vi on the board.
    - Paste a text file (~150 characters).
    - Save the file, then repeat the process.
    - Compare the sha256sum of the saved files.
    
    The checksums do not match due to missing characters or entire lines.
    
    Fix this by restoring the RXTL value to 1 when the UART is used as a
    console.
    
    This ensures timely RX interrupts and reliable data reception in console
    mode.
    
    With this change, pasted content is saved correctly, and checksums are
    always consistent.
    
    Cc: stable <[email protected]>
    Fixes: 7a637784d517 ("serial: imx: reduce RX interrupt frequency")
    Signed-off-by: Fabio Estevam <[email protected]>
    Reviewed-by: Stefan Wahren <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
smb: client: fix potential deadlock when reconnecting channels [+ + +]
Author: Paulo Alcantara <[email protected]>
Date:   Wed Jun 25 12:22:38 2025 -0300

    smb: client: fix potential deadlock when reconnecting channels
    
    [ Upstream commit 711741f94ac3cf9f4e3aa73aa171e76d188c0819 ]
    
    Fix cifs_signal_cifsd_for_reconnect() to take the correct lock order
    and prevent the following deadlock from happening
    
    ======================================================
    WARNING: possible circular locking dependency detected
    6.16.0-rc3-build2+ #1301 Tainted: G S      W
    ------------------------------------------------------
    cifsd/6055 is trying to acquire lock:
    ffff88810ad56038 (&tcp_ses->srv_lock){+.+.}-{3:3}, at: cifs_signal_cifsd_for_reconnect+0x134/0x200
    
    but task is already holding lock:
    ffff888119c64330 (&ret_buf->chan_lock){+.+.}-{3:3}, at: cifs_signal_cifsd_for_reconnect+0xcf/0x200
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #2 (&ret_buf->chan_lock){+.+.}-{3:3}:
           validate_chain+0x1cf/0x270
           __lock_acquire+0x60e/0x780
           lock_acquire.part.0+0xb4/0x1f0
           _raw_spin_lock+0x2f/0x40
           cifs_setup_session+0x81/0x4b0
           cifs_get_smb_ses+0x771/0x900
           cifs_mount_get_session+0x7e/0x170
           cifs_mount+0x92/0x2d0
           cifs_smb3_do_mount+0x161/0x460
           smb3_get_tree+0x55/0x90
           vfs_get_tree+0x46/0x180
           do_new_mount+0x1b0/0x2e0
           path_mount+0x6ee/0x740
           do_mount+0x98/0xe0
           __do_sys_mount+0x148/0x180
           do_syscall_64+0xa4/0x260
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    -> #1 (&ret_buf->ses_lock){+.+.}-{3:3}:
           validate_chain+0x1cf/0x270
           __lock_acquire+0x60e/0x780
           lock_acquire.part.0+0xb4/0x1f0
           _raw_spin_lock+0x2f/0x40
           cifs_match_super+0x101/0x320
           sget+0xab/0x270
           cifs_smb3_do_mount+0x1e0/0x460
           smb3_get_tree+0x55/0x90
           vfs_get_tree+0x46/0x180
           do_new_mount+0x1b0/0x2e0
           path_mount+0x6ee/0x740
           do_mount+0x98/0xe0
           __do_sys_mount+0x148/0x180
           do_syscall_64+0xa4/0x260
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    -> #0 (&tcp_ses->srv_lock){+.+.}-{3:3}:
           check_noncircular+0x95/0xc0
           check_prev_add+0x115/0x2f0
           validate_chain+0x1cf/0x270
           __lock_acquire+0x60e/0x780
           lock_acquire.part.0+0xb4/0x1f0
           _raw_spin_lock+0x2f/0x40
           cifs_signal_cifsd_for_reconnect+0x134/0x200
           __cifs_reconnect+0x8f/0x500
           cifs_handle_standard+0x112/0x280
           cifs_demultiplex_thread+0x64d/0xbc0
           kthread+0x2f7/0x310
           ret_from_fork+0x2a/0x230
           ret_from_fork_asm+0x1a/0x30
    
    other info that might help us debug this:
    
    Chain exists of:
      &tcp_ses->srv_lock --> &ret_buf->ses_lock --> &ret_buf->chan_lock
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(&ret_buf->chan_lock);
                                   lock(&ret_buf->ses_lock);
                                   lock(&ret_buf->chan_lock);
      lock(&tcp_ses->srv_lock);
    
     *** DEADLOCK ***
    
    3 locks held by cifsd/6055:
     #0: ffffffff857de398 (&cifs_tcp_ses_lock){+.+.}-{3:3}, at: cifs_signal_cifsd_for_reconnect+0x7b/0x200
     #1: ffff888119c64060 (&ret_buf->ses_lock){+.+.}-{3:3}, at: cifs_signal_cifsd_for_reconnect+0x9c/0x200
     #2: ffff888119c64330 (&ret_buf->chan_lock){+.+.}-{3:3}, at: cifs_signal_cifsd_for_reconnect+0xcf/0x200
    
    Cc: [email protected]
    Reported-by: David Howells <[email protected]>
    Fixes: d7d7a66aacd6 ("cifs: avoid use of global locks for high contention data")
    Reviewed-by: David Howells <[email protected]>
    Tested-by: David Howells <[email protected]>
    Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: spi-cadence-quadspi: Fix pm runtime unbalance [+ + +]
Author: Khairul Anuar Romli <[email protected]>
Date:   Mon Jun 16 09:13:53 2025 +0800

    spi: spi-cadence-quadspi: Fix pm runtime unbalance
    
    commit b07f349d1864abe29436f45e3047da2bdd476462 upstream.
    
    Having PM put sync in remove function is causing PM underflow during
    remove operation. This is caused by the function, runtime_pm_get_sync,
    not being called anywhere during the op. Ensure that calls to
    pm_runtime_enable()/pm_runtime_disable() and
    pm_runtime_get_sync()/pm_runtime_put_sync() match.
    
    echo 108d2000.spi > /sys/bus/platform/drivers/cadence-qspi/unbind
    [   49.644256] Deleting MTD partitions on "108d2000.spi.0":
    [   49.649575] Deleting u-boot MTD partition
    [   49.684087] Deleting root MTD partition
    [   49.724188] cadence-qspi 108d2000.spi: Runtime PM usage count underflow!
    
    Continuous bind/unbind will result in an "Unbalanced pm_runtime_enable" error.
    Subsequent unbind attempts will return a "No such device" error, while bind
    attempts will return a "Resource temporarily unavailable" error.
    
    [   47.592434] cadence-qspi 108d2000.spi: Runtime PM usage count underflow!
    [   49.592233] cadence-qspi 108d2000.spi: detected FIFO depth (1024) different from config (128)
    [   53.232309] cadence-qspi 108d2000.spi: Runtime PM usage count underflow!
    [   55.828550] cadence-qspi 108d2000.spi: detected FIFO depth (1024) different from config (128)
    [   57.940627] cadence-qspi 108d2000.spi: Runtime PM usage count underflow!
    [   59.912490] cadence-qspi 108d2000.spi: detected FIFO depth (1024) different from config (128)
    [   61.876243] cadence-qspi 108d2000.spi: Runtime PM usage count underflow!
    [   61.883000] platform 108d2000.spi: Unbalanced pm_runtime_enable!
    [  532.012270] cadence-qspi 108d2000.spi: probe with driver cadence-qspi failed1
    
    Also, change clk_disable_unprepare() to clk_disable() since continuous
    bind and unbind operations will trigger a warning indicating that the clock is
    already unprepared.
    
    Fixes: 4892b374c9b7 ("mtd: spi-nor: cadence-quadspi: Add runtime PM support")
    cc: [email protected] # 6.6+
    Signed-off-by: Khairul Anuar Romli <[email protected]>
    Reviewed-by: Matthew Gerlach <[email protected]>
    Link: https://patch.msgid.link/4e7a4b8aba300e629b45a04f90bddf665fbdb335.1749601877.git.khairul.anuar.romli@altera.com
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
staging: rtl8723bs: Avoid memset() in aes_cipher() and aes_decipher() [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Mon Jun 9 14:13:14 2025 -0700

    staging: rtl8723bs: Avoid memset() in aes_cipher() and aes_decipher()
    
    commit a55bc4ffc06d8c965a7d6f0a01ed0ed41380df28 upstream.
    
    After commit 6f110a5e4f99 ("Disable SLUB_TINY for build testing"), which
    causes CONFIG_KASAN to be enabled in allmodconfig again, arm64
    allmodconfig builds with older versions of clang (15 through 17) show an
    instance of -Wframe-larger-than (which breaks the build with
    CONFIG_WERROR=y):
    
      drivers/staging/rtl8723bs/core/rtw_security.c:1287:5: error: stack frame size (2208) exceeds limit (2048) in 'rtw_aes_decrypt' [-Werror,-Wframe-larger-than]
       1287 | u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
            |     ^
    
    This comes from aes_decipher() being inlined in rtw_aes_decrypt().
    Running the same build with CONFIG_FRAME_WARN=128 shows aes_cipher()
    also uses a decent amount of stack, just under the limit of 2048:
    
      drivers/staging/rtl8723bs/core/rtw_security.c:864:19: warning: stack frame size (1952) exceeds limit (128) in 'aes_cipher' [-Wframe-larger-than]
        864 | static signed int aes_cipher(u8 *key, uint      hdrlen,
            |                   ^
    
    -Rpass-analysis=stack-frame-layout only shows one large structure on the
    stack, which is the ctx variable inlined from aes128k128d(). A good
    number of the other variables come from the additional checks of
    fortified string routines, which are present in memset(), which both
    aes_cipher() and aes_decipher() use to initialize some temporary
    buffers. In this case, since the size is known at compile time, these
    additional checks should not result in any code generation changes but
    allmodconfig has several sanitizers enabled, which may make it harder
    for the compiler to eliminate the compile time checks and the variables
    that come about from them.
    
    The memset() calls are just initializing these buffers to zero, so use
    '= {}' instead, which is used all over the kernel and does the exact
    same thing as memset() without the fortify checks, which drops the stack
    usage of these functions by a few hundred kilobytes.
    
      drivers/staging/rtl8723bs/core/rtw_security.c:864:19: warning: stack frame size (1584) exceeds limit (128) in 'aes_cipher' [-Wframe-larger-than]
        864 | static signed int aes_cipher(u8 *key, uint      hdrlen,
            |                   ^
      drivers/staging/rtl8723bs/core/rtw_security.c:1271:5: warning: stack frame size (1456) exceeds limit (128) in 'rtw_aes_decrypt' [-Wframe-larger-than]
       1271 | u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
            |     ^
    
    Cc: [email protected]
    Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver")
    Signed-off-by: Nathan Chancellor <[email protected]>
    Reviewed-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/20250609-rtl8723bs-fix-clang-arm64-wflt-v1-1-e2accba43def@kernel.org
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sunrpc: don't immediately retransmit on seqno miss [+ + +]
Author: Nikhil Jha <[email protected]>
Date:   Wed Mar 19 13:02:40 2025 -0400

    sunrpc: don't immediately retransmit on seqno miss
    
    [ Upstream commit fadc0f3bb2de8c570ced6d9c1f97222213d93140 ]
    
    RFC2203 requires that retransmitted messages use a new gss sequence
    number, but the same XID. This means that if the server is just slow
    (e.x. overloaded), the client might receive a response using an older
    seqno than the one it has recorded.
    
    Currently, Linux's client immediately retransmits in this case. However,
    this leads to a lot of wasted retransmits until the server eventually
    responds faster than the client can resend.
    
    Client -> SEQ 1 -> Server
    Client -> SEQ 2 -> Server
    Client <- SEQ 1 <- Server (misses, expecting seqno = 2)
    Client -> SEQ 3 -> Server (immediate retransmission on miss)
    Client <- SEQ 2 <- Server (misses, expecting seqno = 3)
    Client -> SEQ 4 -> Server (immediate retransmission on miss)
    ... and so on ...
    
    This commit makes it so that we ignore messages with bad checksums
    due to seqnum mismatch, and rely on the usual timeout behavior for
    retransmission instead of doing so immediately.
    
    Signed-off-by: Nikhil Jha <[email protected]>
    Acked-by: Chuck Lever <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tty: serial: uartlite: register uart driver in init [+ + +]
Author: Jakub Lewalski <[email protected]>
Date:   Mon Mar 31 18:06:19 2025 +0200

    tty: serial: uartlite: register uart driver in init
    
    [ Upstream commit 6bd697b5fc39fd24e2aa418c7b7d14469f550a93 ]
    
    When two instances of uart devices are probing, a concurrency race can
    occur. If one thread calls uart_register_driver function, which first
    allocates and assigns memory to 'uart_state' member of uart_driver
    structure, the other instance can bypass uart driver registration and
    call ulite_assign. This calls uart_add_one_port, which expects the uart
    driver to be fully initialized. This leads to a kernel panic due to a
    null pointer dereference:
    
    [    8.143581] BUG: kernel NULL pointer dereference, address: 00000000000002b8
    [    8.156982] #PF: supervisor write access in kernel mode
    [    8.156984] #PF: error_code(0x0002) - not-present page
    [    8.156986] PGD 0 P4D 0
    ...
    [    8.180668] RIP: 0010:mutex_lock+0x19/0x30
    [    8.188624] Call Trace:
    [    8.188629]  ? __die_body.cold+0x1a/0x1f
    [    8.195260]  ? page_fault_oops+0x15c/0x290
    [    8.209183]  ? __irq_resolve_mapping+0x47/0x80
    [    8.209187]  ? exc_page_fault+0x64/0x140
    [    8.209190]  ? asm_exc_page_fault+0x22/0x30
    [    8.209196]  ? mutex_lock+0x19/0x30
    [    8.223116]  uart_add_one_port+0x60/0x440
    [    8.223122]  ? proc_tty_register_driver+0x43/0x50
    [    8.223126]  ? tty_register_driver+0x1ca/0x1e0
    [    8.246250]  ulite_probe+0x357/0x4b0 [uartlite]
    
    To prevent it, move uart driver registration in to init function. This
    will ensure that uart_driver is always registered when probe function
    is called.
    
    Signed-off-by: Jakub Lewalski <[email protected]>
    Signed-off-by: Elodie Decerle <[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]>

tty: vt: make consw::con_switch() return a bool [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Mon Jan 22 12:03:44 2024 +0100

    tty: vt: make consw::con_switch() return a bool
    
    [ Upstream commit 8d5cc8eed738e3202379722295c626cba0849785 ]
    
    The non-zero (true) return value from consw::con_switch() means a redraw
    is needed. So make this return type a bool explicitly instead of int.
    The latter might imply that -Eerrors are expected. They are not.
    
    And document the hook.
    
    Signed-off-by: "Jiri Slaby (SUSE)" <[email protected]>
    Cc: Helge Deller <[email protected]>
    Cc: "James E.J. Bottomley" <[email protected]>
    Cc: Daniel Vetter <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Tested-by: Helge Deller <[email protected]> # parisc STI console
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 03bcbbb3995b ("dummycon: Trigger redraw when switching consoles with deferred takeover")
    Signed-off-by: Sasha Levin <[email protected]>

tty: vt: make init parameter of consw::con_init() a bool [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Mon Jan 22 12:03:34 2024 +0100

    tty: vt: make init parameter of consw::con_init() a bool
    
    [ Upstream commit dae3e6b6180f1a2394b984c596d39ed2c57d25fe ]
    
    The 'init' parameter of consw::con_init() is true for the first call of
    the hook on a particular console. So make the parameter a bool.
    
    And document the hook.
    
    Signed-off-by: "Jiri Slaby (SUSE)" <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Cc: Helge Deller <[email protected]>
    Cc: "James E.J. Bottomley" <[email protected]>
    Cc: Daniel Vetter <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Tested-by: Helge Deller <[email protected]> # parisc STI console
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 03bcbbb3995b ("dummycon: Trigger redraw when switching consoles with deferred takeover")
    Signed-off-by: Sasha Levin <[email protected]>

tty: vt: sanitize arguments of consw::con_clear() [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Mon Jan 22 12:03:35 2024 +0100

    tty: vt: sanitize arguments of consw::con_clear()
    
    [ Upstream commit 559f01a0ee6d924c6fec3eaf6a5b078b15e71070 ]
    
    In consw::con_clear():
    * Height is always 1, so drop it.
    * Offsets and width are always unsigned values, so re-type them as such.
    
    This needs a new __fbcon_clear() in the fbcon code to still handle
    height which might not be 1 when called internally.
    
    Note that tests for negative count/width are left in place -- they are
    taken care of in the next patches.
    
    And document the hook.
    
    Signed-off-by: "Jiri Slaby (SUSE)" <[email protected]>
    Cc: Helge Deller <[email protected]>
    Cc: "James E.J. Bottomley" <[email protected]>
    Cc: Daniel Vetter <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Tested-by: Helge Deller <[email protected]> # parisc STI console
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 03bcbbb3995b ("dummycon: Trigger redraw when switching consoles with deferred takeover")
    Signed-off-by: Sasha Levin <[email protected]>

 
uio_hv_generic: Align ring size to system page [+ + +]
Author: Long Li <[email protected]>
Date:   Mon May 5 17:56:35 2025 -0700

    uio_hv_generic: Align ring size to system page
    
    [ Upstream commit 0315fef2aff9f251ddef8a4b53db9187429c3553 ]
    
    Following the ring header, the ring data should align to system page
    boundary. Adjust the size if necessary.
    
    Cc: [email protected]
    Fixes: 95096f2fbd10 ("uio-hv-generic: new userspace i/o driver for VMBus")
    Signed-off-by: Long Li <[email protected]>
    Reviewed-by: Michael Kelley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Wei Liu <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

uio_hv_generic: Query the ringbuffer size for device [+ + +]
Author: Saurabh Sengar <[email protected]>
Date:   Sat Mar 30 01:51:58 2024 -0700

    uio_hv_generic: Query the ringbuffer size for device
    
    [ Upstream commit e566ed5b64177a0c07b677568f623ed31d23406d ]
    
    Query the ring buffer size from pre defined table per device
    and use that value for allocating the ring buffer for that
    device. Keep the size as current default which is 2 MB if
    the device doesn't have any preferred ring size.
    
    Signed-off-by: Saurabh Sengar <[email protected]>
    Reviewed-by: Long Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 0315fef2aff9 ("uio_hv_generic: Align ring size to system page")
    Signed-off-by: Sasha Levin <[email protected]>

 
um: Add cmpxchg8b_emu and checksum functions to asm-prototypes.h [+ + +]
Author: Sami Tolvanen <[email protected]>
Date:   Wed Mar 26 19:05:00 2025 +0000

    um: Add cmpxchg8b_emu and checksum functions to asm-prototypes.h
    
    [ Upstream commit 674d03f6bd6b0f8327f1a4920ff5893557facfbd ]
    
    With CONFIG_GENDWARFKSYMS, um builds fail due to missing prototypes
    in asm/asm-prototypes.h. Add declarations for cmpxchg8b_emu and the
    exported checksum functions, including csum_partial_copy_generic as
    it's also exported.
    
    Cc: Masahiro Yamada <[email protected]>
    Cc: [email protected]
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Sami Tolvanen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

um: ubd: Add missing error check in start_io_thread() [+ + +]
Author: Tiwei Bie <[email protected]>
Date:   Fri Jun 6 20:44:25 2025 +0800

    um: ubd: Add missing error check in start_io_thread()
    
    [ Upstream commit c55c7a85e02a7bfee20a3ffebdff7cbeb41613ef ]
    
    The subsequent call to os_set_fd_block() overwrites the previous
    return value. OR the two return values together to fix it.
    
    Fixes: f88f0bdfc32f ("um: UBD Improvements")
    Signed-off-by: Tiwei Bie <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

um: use proper care when taking mmap lock during segfault [+ + +]
Author: Benjamin Berg <[email protected]>
Date:   Tue Apr 8 09:45:24 2025 +0200

    um: use proper care when taking mmap lock during segfault
    
    [ Upstream commit 6767e8784cd2e8b386a62330ea6864949d983a3e ]
    
    Segfaults can occur at times where the mmap lock cannot be taken. If
    that happens the segfault handler may not be able to take the mmap lock.
    
    Fix the code to use the same approach as most other architectures.
    Unfortunately, this requires copying code from mm/memory.c and modifying
    it slightly as UML does not have exception tables.
    
    Signed-off-by: Benjamin Berg <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: Add checks for snprintf() calls in usb_alloc_dev() [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Mar 21 18:49:49 2025 +0200

    usb: Add checks for snprintf() calls in usb_alloc_dev()
    
    [ Upstream commit 82fe5107fa3d21d6c3fba091c9dbc50495588630 ]
    
    When creating a device path in the driver the snprintf() takes
    up to 16 characters long argument along with the additional up to
    12 characters for the signed integer (as it can't see the actual limits)
    and tries to pack this into 16 bytes array. GCC complains about that
    when build with `make W=1`:
    
      drivers/usb/core/usb.c:705:25: note: ‘snprintf’ output between 3 and 28 bytes into a destination of size 16
    
    Since everything works until now, let's just check for the potential
    buffer overflow and bail out. It is most likely a never happen situation,
    but at least it makes GCC happy.
    
    Signed-off-by: Andy Shevchenko <[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: cdc-wdm: avoid setting WDM_READ for ZLP-s [+ + +]
Author: Robert Hodaszi <[email protected]>
Date:   Thu Apr 3 16:40:04 2025 +0200

    usb: cdc-wdm: avoid setting WDM_READ for ZLP-s
    
    [ Upstream commit 387602d8a75574fafb451b7a8215e78dfd67ee63 ]
    
    Don't set WDM_READ flag in wdm_in_callback() for ZLP-s, otherwise when
    userspace tries to poll for available data, it might - incorrectly -
    believe there is something available, and when it tries to non-blocking
    read it, it might get stuck in the read loop.
    
    For example this is what glib does for non-blocking read (briefly):
    
      1. poll()
      2. if poll returns with non-zero, starts a read data loop:
        a. loop on poll() (EINTR disabled)
        b. if revents was set, reads data
          I. if read returns with EINTR or EAGAIN, goto 2.a.
          II. otherwise return with data
    
    So if ZLP sets WDM_READ (#1), we expect data, and try to read it (#2).
    But as that was a ZLP, and we are doing non-blocking read, wdm_read()
    returns with EAGAIN (#2.b.I), so loop again, and try to read again
    (#2.a.).
    
    With glib, we might stuck in this loop forever, as EINTR is disabled
    (#2.a).
    
    Signed-off-by: Robert Hodaszi <[email protected]>
    Acked-by: Oliver Neukum <[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: common: usb-conn-gpio: use a unique name for usb connector device [+ + +]
Author: Chance Yang <[email protected]>
Date:   Fri Apr 11 16:33:26 2025 +0800

    usb: common: usb-conn-gpio: use a unique name for usb connector device
    
    [ Upstream commit d4e5b10c55627e2f3fc9e5b337a28b4e2f02a55e ]
    
    The current implementation of the usb-conn-gpio driver uses a fixed
    "usb-charger" name for all USB connector devices. This causes conflicts
    in the power supply subsystem when multiple USB connectors are present,
    as duplicate names are not allowed.
    
    Use IDA to manage unique IDs for naming usb connectors (e.g.,
    usb-charger-0, usb-charger-1).
    
    Signed-off-by: Chance Yang <[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: dwc2: also exit clock_gating when stopping udc while suspended [+ + +]
Author: Michael Grzeschik <[email protected]>
Date:   Thu Apr 17 19:40:17 2025 +0200

    usb: dwc2: also exit clock_gating when stopping udc while suspended
    
    [ Upstream commit af076a41f8a28faf9ceb9dd2d88aef2c202ef39a ]
    
    It is possible that the gadget will be disabled, while the udc is
    suspended. When enabling the udc in that case, the clock gating
    will not be enabled again. Leaving the phy unclocked. Even when the
    udc is not enabled, connecting this powered but not clocked phy leads
    to enumeration errors on the host side.
    
    To ensure that the clock gating will be in an valid state, we ensure
    that the clock gating will be enabled before stopping the udc.
    
    Signed-off-by: Michael Grzeschik <[email protected]>
    Acked-by: Minas Harutyunyan <[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: potential integer overflow in usbg_make_tpg() [+ + +]
Author: Chen Yufeng <[email protected]>
Date:   Tue Apr 15 14:58:57 2025 +0800

    usb: potential integer overflow in usbg_make_tpg()
    
    [ Upstream commit 153874010354d050f62f8ae25cbb960c17633dc5 ]
    
    The variable tpgt in usbg_make_tpg() is defined as unsigned long and is
    assigned to tpgt->tport_tpgt, which is defined as u16. This may cause an
    integer overflow when tpgt is greater than USHRT_MAX (65535). I
    haven't tried to trigger it myself, but it is possible to trigger it
    by calling usbg_make_tpg() with a large value for tpgt.
    
    I modified the type of tpgt to match tpgt->tport_tpgt and adjusted the
    relevant code accordingly.
    
    This patch is similar to commit 59c816c1f24d ("vhost/scsi: potential
    memory corruption").
    
    Signed-off-by: Chen Yufeng <[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: typec: displayport: Receive DP Status Update NAK request exit dp altmode [+ + +]
Author: Jos Wang <[email protected]>
Date:   Sun Feb 9 15:19:26 2025 +0800

    usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode
    
    [ Upstream commit b4b38ffb38c91afd4dc387608db26f6fc34ed40b ]
    
    Although some Type-C DRD devices that do not support the DP Sink
    function (such as Huawei Mate 40Pro), the Source Port initiates
    Enter Mode CMD, but the device responds to Enter Mode ACK, the
    Source port then initiates DP Status Update CMD, and the device
    responds to DP Status Update NAK.
    
    As PD2.0 spec ("6.4.4.3.4 Enter Mode Command"),A DR_Swap Message
    Shall Not be sent during Modal Operation between the Port Partners.
    At this time, the source port initiates DR_Swap message through the
    "echo device > /sys/class/typec/port0/data_role" command to switch
    the data role from host to device. The device will initiate a Hard
    Reset for recovery, resulting in the failure of data role swap.
    
    Therefore, when DP Status Update NAK is received, Exit Mode CMD is
    initiated to exit the currently entered DP altmode.
    
    Signed-off-by: Jos Wang <[email protected]>
    Reviewed-by: Heikki Krogerus <[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: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set [+ + +]
Author: Michael Grzeschik <[email protected]>
Date:   Fri Apr 4 00:21:01 2025 +0200

    usb: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set
    
    [ Upstream commit 0f7bbef1794dc87141897f804e5871a293aa174b ]
    
    Since the typec connectors can have many muxes or switches for different
    lanes (sbu, usb2, usb3) going into different modal states (usb2, usb3,
    audio, debug) all of them will be called on typec_switch_set and
    typec_mux_set. But not all of them will be handling the expected mode.
    
    If one of the mux or switch will come back with EOPTNOSUPP this is no
    reason to stop running through the next ones. Therefor we skip this
    particular error value and continue calling the next.
    
    Signed-off-by: Michael Grzeschik <[email protected]>
    Reviewed-by: Heikki Krogerus <[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]>

 
vsock/uapi: fix linux/vm_sockets.h userspace compilation errors [+ + +]
Author: Stefano Garzarella <[email protected]>
Date:   Mon Jun 23 12:00:53 2025 +0200

    vsock/uapi: fix linux/vm_sockets.h userspace compilation errors
    
    [ Upstream commit 22bbc1dcd0d6785fb390c41f0dd5b5e218d23bdd ]
    
    If a userspace application just include <linux/vm_sockets.h> will fail
    to build with the following errors:
    
        /usr/include/linux/vm_sockets.h:182:39: error: invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr’
          182 |         unsigned char svm_zero[sizeof(struct sockaddr) -
              |                                       ^~~~~~
        /usr/include/linux/vm_sockets.h:183:39: error: ‘sa_family_t’ undeclared here (not in a function)
          183 |                                sizeof(sa_family_t) -
              |
    
    Include <sys/socket.h> for userspace (guarded by ifndef __KERNEL__)
    where `struct sockaddr` and `sa_family_t` are defined.
    We already do something similar in <linux/mptcp.h> and <linux/if.h>.
    
    Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
    Reported-by: Daan De Meyer <[email protected]>
    Signed-off-by: Stefano Garzarella <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: mac80211: fix beacon interval calculation overflow [+ + +]
Author: Lachlan Hodges <[email protected]>
Date:   Sat Jun 21 22:32:09 2025 +1000

    wifi: mac80211: fix beacon interval calculation overflow
    
    [ Upstream commit 7a3750ff0f2e8fee338a9c168f429f6c37f0e820 ]
    
    As we are converting from TU to usecs, a beacon interval of
    100*1024 usecs will lead to integer wrapping. To fix change
    to use a u32.
    
    Fixes: 057d5f4ba1e4 ("mac80211: sync dtim_count to TSF")
    Signed-off-by: Lachlan Hodges <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/tools: Drop duplicate unlikely() definition in insn_decoder_test.c [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Tue Mar 18 15:32:30 2025 -0700

    x86/tools: Drop duplicate unlikely() definition in insn_decoder_test.c
    
    commit f710202b2a45addea3dcdcd862770ecbaf6597ef upstream.
    
    After commit c104c16073b7 ("Kunit to check the longest symbol length"),
    there is a warning when building with clang because there is now a
    definition of unlikely from compiler.h in tools/include/linux, which
    conflicts with the one in the instruction decoder selftest:
    
      arch/x86/tools/insn_decoder_test.c:15:9: warning: 'unlikely' macro redefined [-Wmacro-redefined]
    
    Remove the second unlikely() definition, as it is no longer necessary,
    clearing up the warning.
    
    Fixes: c104c16073b7 ("Kunit to check the longest symbol length")
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Shuah Khan <[email protected]>
    Link: https://lore.kernel.org/r/20250318-x86-decoder-test-fix-unlikely-redef-v1-1-74c84a7bf05b@kernel.org
    Signed-off-by: Greg Kroah-Hartman <[email protected]>