Changelog in Linux kernel 6.12.9

 
af_packet: fix vlan_get_protocol_dgram() vs MSG_PEEK [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Dec 30 16:10:04 2024 +0000

    af_packet: fix vlan_get_protocol_dgram() vs MSG_PEEK
    
    [ Upstream commit f91a5b8089389eb408501af2762f168c3aaa7b79 ]
    
    Blamed commit forgot MSG_PEEK case, allowing a crash [1] as found
    by syzbot.
    
    Rework vlan_get_protocol_dgram() to not touch skb at all,
    so that it can be used from many cpus on the same skb.
    
    Add a const qualifier to skb argument.
    
    [1]
    skbuff: skb_under_panic: text:ffffffff8a8ccd05 len:29 put:14 head:ffff88807fc8e400 data:ffff88807fc8e3f4 tail:0x11 end:0x140 dev:<NULL>
    ------------[ cut here ]------------
     kernel BUG at net/core/skbuff.c:206 !
    Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
    CPU: 1 UID: 0 PID: 5892 Comm: syz-executor883 Not tainted 6.13.0-rc4-syzkaller-00054-gd6ef8b40d075 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
     RIP: 0010:skb_panic net/core/skbuff.c:206 [inline]
     RIP: 0010:skb_under_panic+0x14b/0x150 net/core/skbuff.c:216
    Code: 0b 8d 48 c7 c6 86 d5 25 8e 48 8b 54 24 08 8b 0c 24 44 8b 44 24 04 4d 89 e9 50 41 54 41 57 41 56 e8 5a 69 79 f7 48 83 c4 20 90 <0f> 0b 0f 1f 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3
    RSP: 0018:ffffc900038d7638 EFLAGS: 00010282
    RAX: 0000000000000087 RBX: dffffc0000000000 RCX: 609ffd18ea660600
    RDX: 0000000000000000 RSI: 0000000080000000 RDI: 0000000000000000
    RBP: ffff88802483c8d0 R08: ffffffff817f0a8c R09: 1ffff9200071ae60
    R10: dffffc0000000000 R11: fffff5200071ae61 R12: 0000000000000140
    R13: ffff88807fc8e400 R14: ffff88807fc8e3f4 R15: 0000000000000011
    FS:  00007fbac5e006c0(0000) GS:ffff8880b8700000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fbac5e00d58 CR3: 000000001238e000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      skb_push+0xe5/0x100 net/core/skbuff.c:2636
      vlan_get_protocol_dgram+0x165/0x290 net/packet/af_packet.c:585
      packet_recvmsg+0x948/0x1ef0 net/packet/af_packet.c:3552
      sock_recvmsg_nosec net/socket.c:1033 [inline]
      sock_recvmsg+0x22f/0x280 net/socket.c:1055
      ____sys_recvmsg+0x1c6/0x480 net/socket.c:2803
      ___sys_recvmsg net/socket.c:2845 [inline]
      do_recvmmsg+0x426/0xab0 net/socket.c:2940
      __sys_recvmmsg net/socket.c:3014 [inline]
      __do_sys_recvmmsg net/socket.c:3037 [inline]
      __se_sys_recvmmsg net/socket.c:3030 [inline]
      __x64_sys_recvmmsg+0x199/0x250 net/socket.c:3030
      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
    
    Fixes: 79eecf631c14 ("af_packet: Handle outgoing VLAN packets without hardware offloading")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Chengen Du <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

af_packet: fix vlan_get_tci() vs MSG_PEEK [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Dec 30 16:10:03 2024 +0000

    af_packet: fix vlan_get_tci() vs MSG_PEEK
    
    [ Upstream commit 77ee7a6d16b6ec07b5c3ae2b6b60a24c1afbed09 ]
    
    Blamed commit forgot MSG_PEEK case, allowing a crash [1] as found
    by syzbot.
    
    Rework vlan_get_tci() to not touch skb at all,
    so that it can be used from many cpus on the same skb.
    
    Add a const qualifier to skb argument.
    
    [1]
    skbuff: skb_under_panic: text:ffffffff8a8da482 len:32 put:14 head:ffff88807a1d5800 data:ffff88807a1d5810 tail:0x14 end:0x140 dev:<NULL>
    ------------[ cut here ]------------
     kernel BUG at net/core/skbuff.c:206 !
    Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
    CPU: 0 UID: 0 PID: 5880 Comm: syz-executor172 Not tainted 6.13.0-rc3-syzkaller-00762-g9268abe611b0 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
     RIP: 0010:skb_panic net/core/skbuff.c:206 [inline]
     RIP: 0010:skb_under_panic+0x14b/0x150 net/core/skbuff.c:216
    Code: 0b 8d 48 c7 c6 9e 6c 26 8e 48 8b 54 24 08 8b 0c 24 44 8b 44 24 04 4d 89 e9 50 41 54 41 57 41 56 e8 3a 5a 79 f7 48 83 c4 20 90 <0f> 0b 0f 1f 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3
    RSP: 0018:ffffc90003baf5b8 EFLAGS: 00010286
    RAX: 0000000000000087 RBX: dffffc0000000000 RCX: 8565c1eec37aa000
    RDX: 0000000000000000 RSI: 0000000080000000 RDI: 0000000000000000
    RBP: ffff88802616fb50 R08: ffffffff817f0a4c R09: 1ffff92000775e50
    R10: dffffc0000000000 R11: fffff52000775e51 R12: 0000000000000140
    R13: ffff88807a1d5800 R14: ffff88807a1d5810 R15: 0000000000000014
    FS:  00007fa03261f6c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007ffd65753000 CR3: 0000000031720000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      skb_push+0xe5/0x100 net/core/skbuff.c:2636
      vlan_get_tci+0x272/0x550 net/packet/af_packet.c:565
      packet_recvmsg+0x13c9/0x1ef0 net/packet/af_packet.c:3616
      sock_recvmsg_nosec net/socket.c:1044 [inline]
      sock_recvmsg+0x22f/0x280 net/socket.c:1066
      ____sys_recvmsg+0x1c6/0x480 net/socket.c:2814
      ___sys_recvmsg net/socket.c:2856 [inline]
      do_recvmmsg+0x426/0xab0 net/socket.c:2951
      __sys_recvmmsg net/socket.c:3025 [inline]
      __do_sys_recvmmsg net/socket.c:3048 [inline]
      __se_sys_recvmmsg net/socket.c:3041 [inline]
      __x64_sys_recvmmsg+0x199/0x250 net/socket.c:3041
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
    
    Fixes: 79eecf631c14 ("af_packet: Handle outgoing VLAN packets without hardware offloading")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Chengen Du <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA hda/realtek: Add quirk for Framework F111:000C [+ + +]
Author: Daniel Schaefer <[email protected]>
Date:   Tue Dec 31 12:59:58 2024 +0800

    ALSA hda/realtek: Add quirk for Framework F111:000C
    
    commit 7b509910b3ad6d7aacead24c8744de10daf8715d upstream.
    
    Similar to commit eb91c456f371
    ("ALSA: hda/realtek: Add Framework Laptop 13 (Intel Core Ultra) to quirks")
    and previous quirks for Framework systems with
    Realtek codecs.
    
    000C is a new platform that will also have an ALC285 codec and needs the
    same quirk.
    
    Cc: Jaroslav Kysela <[email protected]>
    Cc: Takashi Iwai <[email protected]>
    Cc: [email protected]
    Cc: Dustin L. Howett <[email protected]>
    Signed-off-by: Daniel Schaefer <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ALSA: hda/ca0132: Use standard HD-audio quirk matching helpers [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Sat Dec 7 14:37:53 2024 +0100

    ALSA: hda/ca0132: Use standard HD-audio quirk matching helpers
    
    [ Upstream commit 7c005292e20ac53dfa601bf2a7375fd4815511ad ]
    
    CA0132 used the PCI SSID lookup helper that doesn't support the model
    string matching or quirk aliasing.
    
    Replace it with the standard HD-audio quirk helpers for supporting
    those, and add the definition of the model strings for supported
    quirks, too.  There should be no visible change to the outside for the
    working system, but the driver will parse the model option and apply
    the quirk based on it from now on.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek - Add support for ASUS Zen AIO 27 Z272SD_A272SD audio [+ + +]
Author: Vasiliy Kovalev <[email protected]>
Date:   Fri Dec 6 00:03:06 2024 +0300

    ALSA: hda/realtek - Add support for ASUS Zen AIO 27 Z272SD_A272SD audio
    
    [ Upstream commit 1b452c2de5555d832cd51c46824272a44ad7acac ]
    
    Introduces necessary quirks to enable audio functionality on the
    ASUS Zen AIO 27 Z272SD_A272SD:
    - configures verbs to activate internal speakers and headphone jack.
    - implements adjustments for headset microphone functionality.
    
    The speaker and jack configurations were derived from a dump of
    the working Windows driver, while the headset microphone
    functionality was fine-tuned through experimental testing.
    
    Link: https://lore.kernel.org/all/CAGGMHBOGDUnMewBTrZgoBKFk_A4sNF4fEXwfH9Ay8SNTzjy0-g@mail.gmail.com/T/
    Signed-off-by: Vasiliy Kovalev <[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/realtek: Add new alc2xx-fixup-headset-mic model [+ + +]
Author: Vasiliy Kovalev <[email protected]>
Date:   Sat Dec 7 23:18:36 2024 +0300

    ALSA: hda/realtek: Add new alc2xx-fixup-headset-mic model
    
    [ Upstream commit 50db91fccea0da5c669bc68e2429e8de303758d3 ]
    
    Introduces the alc2xx-fixup-headset-mic model to simplify enabling
    headset microphones on ALC2XX codecs.
    
    Many recent configurations, as well as older systems that lacked this
    fix for a long time, leave headset microphones inactive by default.
    This addition provides a flexible workaround using the existing
    ALC2XX_FIXUP_HEADSET_MIC quirk.
    
    Signed-off-by: Vasiliy Kovalev <[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: cs35l56: Remove calls to cs35l56_force_sync_asp1_registers_from_cache() [+ + +]
Author: Simon Trimmer <[email protected]>
Date:   Fri Dec 6 10:57:57 2024 +0000

    ALSA: hda: cs35l56: Remove calls to cs35l56_force_sync_asp1_registers_from_cache()
    
    [ Upstream commit 47b17ba05a463b22fa79f132e6f6899d53538802 ]
    
    Commit 5d7e328e20b3 ("ASoC: cs35l56: Revert support for dual-ownership
    of ASP registers")
    replaced cs35l56_force_sync_asp1_registers_from_cache() with a dummy
    implementation so that the HDA driver would continue to build.
    
    Remove the calls from HDA and remove the stub function.
    
    Signed-off-by: Simon Trimmer <[email protected]>
    Signed-off-by: Richard Fitzgerald <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: seq: Check UMP support for midi_version change [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Dec 31 15:53:58 2024 +0100

    ALSA: seq: Check UMP support for midi_version change
    
    commit 8765429279e7d3d68d39ace5f84af2815174bb1e upstream.
    
    When the kernel is built without UMP support but a user-space app
    requires the midi_version > 0, the kernel should return an error.
    Otherwise user-space assumes as if it were possible to deal,
    eventually hitting serious errors later.
    
    Fixes: 46397622a3fa ("ALSA: seq: Add UMP support")
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: seq: oss: Fix races at processing SysEx messages [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Mon Dec 30 12:05:35 2024 +0100

    ALSA: seq: oss: Fix races at processing SysEx messages
    
    commit 0179488ca992d79908b8e26b9213f1554fc5bacc upstream.
    
    OSS sequencer handles the SysEx messages split in 6 bytes packets, and
    ALSA sequencer OSS layer tries to combine those.  It stores the data
    in the internal buffer and this access is racy as of now, which may
    lead to the out-of-bounds access.
    
    As a temporary band-aid fix, introduce a mutex for serializing the
    process of the SysEx message packets.
    
    Reported-by: Kun Hu <[email protected]>
    Closes: https://lore.kernel.org/[email protected]
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: usb-audio: US16x08: Initialize array before use [+ + +]
Author: Tanya Agarwal <[email protected]>
Date:   Sun Dec 29 11:32:42 2024 +0530

    ALSA: usb-audio: US16x08: Initialize array before use
    
    [ Upstream commit b06a6187ef983f501e93faa56209169752d3bde3 ]
    
    Initialize meter_urb array before use in mixer_us16x08.c.
    
    CID 1410197: (#1 of 1): Uninitialized scalar variable (UNINIT)
    uninit_use_in_call: Using uninitialized value *meter_urb when
    calling get_meter_levels_from_urb.
    
    Coverity Link:
    https://scan7.scan.coverity.com/#/project-view/52849/11354?selectedIssue=1410197
    
    Fixes: d2bb390a2081 ("ALSA: usb-audio: Tascam US-16x08 DSP mixer quirk")
    Signed-off-by: Tanya Agarwal <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARC: bpf: Correct conditional check in 'check_jmp_32' [+ + +]
Author: Hardevsinh Palaniya <[email protected]>
Date:   Wed Nov 13 19:11:18 2024 +0530

    ARC: bpf: Correct conditional check in 'check_jmp_32'
    
    [ Upstream commit 7dd9eb6ba88964b091b89855ce7d2a12405013af ]
    
    The original code checks 'if (ARC_CC_AL)', which is always true since
    ARC_CC_AL is a constant. This makes the check redundant and likely
    obscures the intention of verifying whether the jump is conditional.
    
    Updates the code to check cond == ARC_CC_AL instead, reflecting the intent
    to differentiate conditional from unconditional jumps.
    
    Suggested-by: Vadim Fedorenko <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Acked-by: Shahab Vahedi <[email protected]>
    Signed-off-by: Hardevsinh Palaniya <[email protected]>
    Signed-off-by: Vineet Gupta <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARC: build: disallow invalid PAE40 + 4K page config [+ + +]
Author: Vineet Gupta <[email protected]>
Date:   Wed Oct 9 10:33:22 2024 -0700

    ARC: build: disallow invalid PAE40 + 4K page config
    
    [ Upstream commit 8871331b1769978ecece205a430338a2581e5050 ]
    
    The config option being built was
    | CONFIG_ARC_MMU_V4=y
    | CONFIG_ARC_PAGE_SIZE_4K=y
    | CONFIG_HIGHMEM=y
    | CONFIG_ARC_HAS_PAE40=y
    
    This was hitting a BUILD_BUG_ON() since a 4K page can't hoist 1k, 8-byte
    PTE entries (8 byte due to PAE40). BUILD_BUG_ON() is a good last ditch
    resort, but such a config needs to be disallowed explicitly in Kconfig.
    
    Side-note: the actual fix is single liner dependency, but while at it
    cleaned out a few things:
     - 4K dependency on MMU v3 or v4 is always true, since 288ff7de62af09
       ("ARC: retire MMUv1 and MMUv2 support")
     - PAE40 dependency in on MMU ver not really ISA, although that follows
       eventually.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Vineet Gupta <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARC: build: Try to guess GCC variant of cross compiler [+ + +]
Author: Leon Romanovsky <[email protected]>
Date:   Tue Dec 3 14:37:15 2024 +0200

    ARC: build: Try to guess GCC variant of cross compiler
    
    [ Upstream commit 824927e88456331c7a999fdf5d9d27923b619590 ]
    
    ARC GCC compiler is packaged starting from Fedora 39i and the GCC
    variant of cross compile tools has arc-linux-gnu- prefix and not
    arc-linux-. This is causing that CROSS_COMPILE variable is left unset.
    
    This change allows builds without need to supply CROSS_COMPILE argument
    if distro package is used.
    
    Before this change:
    $ make -j 128 ARCH=arc W=1 drivers/infiniband/hw/mlx4/
      gcc: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead
      gcc: error: unrecognized command-line option ‘-mmedium-calls’
      gcc: error: unrecognized command-line option ‘-mlock’
      gcc: error: unrecognized command-line option ‘-munaligned-access’
    
    [1] https://packages.fedoraproject.org/pkgs/cross-gcc/gcc-arc-linux-gnu/index.html
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Vineet Gupta <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARC: build: Use __force to suppress per-CPU cmpxchg warnings [+ + +]
Author: Paul E. McKenney <[email protected]>
Date:   Wed Oct 9 10:55:13 2024 -0700

    ARC: build: Use __force to suppress per-CPU cmpxchg warnings
    
    [ Upstream commit 1e8af9f04346ecc0bccf0c53b728fc8eb3490a28 ]
    
    Currently, the cast of the first argument to cmpxchg_emu_u8() drops the
    __percpu address-space designator, which results in sparse complaints
    when applying cmpxchg() to per-CPU variables in ARC.  Therefore, use
    __force to suppress these complaints, given that this does not pertain
    to cmpxchg() semantics, which are plently well-defined on variables in
    general, whether per-CPU or otherwise.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Paul E. McKenney <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Vineet Gupta <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: audio-graph-card: Call of_node_put() on correct node [+ + +]
Author: Stephen Gordon <[email protected]>
Date:   Sat Dec 7 23:22:56 2024 +1100

    ASoC: audio-graph-card: Call of_node_put() on correct node
    
    [ Upstream commit 687630aa582acf674120c87350beb01d836c837c ]
    
    Signed-off-by: Stephen Gordon <[email protected]>
    Acked-by: Kuninori Morimoto <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
block: lift bio_is_zone_append to bio.h [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Nov 4 07:26:31 2024 +0100

    block: lift bio_is_zone_append to bio.h
    
    [ Upstream commit 0ef2b9e698dbf9ba78f67952a747f35eb7060470 ]
    
    Make bio_is_zone_append globally available, because file systems need
    to use to check for a zone append bio in their end_io handlers to deal
    with the block layer emulation.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Stable-dep-of: 6c3864e05548 ("btrfs: use bio_is_zone_append() in the completion handler")
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: hci_core: Fix sleeping function called from invalid context [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Tue Dec 3 16:07:32 2024 -0500

    Bluetooth: hci_core: Fix sleeping function called from invalid context
    
    [ Upstream commit 4d94f05558271654670d18c26c912da0c1c15549 ]
    
    This reworks hci_cb_list to not use mutex hci_cb_list_lock to avoid bugs
    like the bellow:
    
    BUG: sleeping function called from invalid context at kernel/locking/mutex.c:585
    in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 5070, name: kworker/u9:2
    preempt_count: 0, expected: 0
    RCU nest depth: 1, expected: 0
    4 locks held by kworker/u9:2/5070:
     #0: ffff888015be3948 ((wq_completion)hci0#2){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3229 [inline]
     #0: ffff888015be3948 ((wq_completion)hci0#2){+.+.}-{0:0}, at: process_scheduled_works+0x8e0/0x1770 kernel/workqueue.c:3335
     #1: ffffc90003b6fd00 ((work_completion)(&hdev->rx_work)){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3230 [inline]
     #1: ffffc90003b6fd00 ((work_completion)(&hdev->rx_work)){+.+.}-{0:0}, at: process_scheduled_works+0x91b/0x1770 kernel/workqueue.c:3335
     #2: ffff8880665d0078 (&hdev->lock){+.+.}-{3:3}, at: hci_le_create_big_complete_evt+0xcf/0xae0 net/bluetooth/hci_event.c:6914
     #3: ffffffff8e132020 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:298 [inline]
     #3: ffffffff8e132020 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:750 [inline]
     #3: ffffffff8e132020 (rcu_read_lock){....}-{1:2}, at: hci_le_create_big_complete_evt+0xdb/0xae0 net/bluetooth/hci_event.c:6915
    CPU: 0 PID: 5070 Comm: kworker/u9:2 Not tainted 6.8.0-syzkaller-08073-g480e035fc4c7 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
    Workqueue: hci0 hci_rx_work
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
     __might_resched+0x5d4/0x780 kernel/sched/core.c:10187
     __mutex_lock_common kernel/locking/mutex.c:585 [inline]
     __mutex_lock+0xc1/0xd70 kernel/locking/mutex.c:752
     hci_connect_cfm include/net/bluetooth/hci_core.h:2004 [inline]
     hci_le_create_big_complete_evt+0x3d9/0xae0 net/bluetooth/hci_event.c:6939
     hci_event_func net/bluetooth/hci_event.c:7514 [inline]
     hci_event_packet+0xa53/0x1540 net/bluetooth/hci_event.c:7569
     hci_rx_work+0x3e8/0xca0 net/bluetooth/hci_core.c:4171
     process_one_work kernel/workqueue.c:3254 [inline]
     process_scheduled_works+0xa00/0x1770 kernel/workqueue.c:3335
     worker_thread+0x86d/0xd70 kernel/workqueue.c:3416
     kthread+0x2f0/0x390 kernel/kthread.c:388
     ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:243
     </TASK>
    
    Reported-by: [email protected]
    Tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=2fb0835e0c9cefc34614
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: consider that tail calls invalidate packet pointers [+ + +]
Author: Eduard Zingerman <[email protected]>
Date:   Mon Dec 9 20:10:59 2024 -0800

    bpf: consider that tail calls invalidate packet pointers
    
    [ Upstream commit 1a4607ffba35bf2a630aab299e34dd3f6e658d70 ]
    
    Tail-called programs could execute any of the helpers that invalidate
    packet pointers. Hence, conservatively assume that each tail call
    invalidates packet pointers.
    
    Making the change in bpf_helper_changes_pkt_data() automatically makes
    use of check_cfg() logic that computes 'changes_pkt_data' effect for
    global sub-programs, such that the following program could be
    rejected:
    
        int tail_call(struct __sk_buff *sk)
        {
            bpf_tail_call_static(sk, &jmp_table, 0);
            return 0;
        }
    
        SEC("tc")
        int not_safe(struct __sk_buff *sk)
        {
            int *p = (void *)(long)sk->data;
            ... make p valid ...
            tail_call(sk);
            *p = 42; /* this is unsafe */
            ...
        }
    
    The tc_bpf2bpf.c:subprog_tc() needs change: mark it as a function that
    can invalidate packet pointers. Otherwise, it can't be freplaced with
    tailcall_freplace.c:entry_freplace() that does a tail call.
    
    Signed-off-by: Eduard Zingerman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: fix potential error return [+ + +]
Author: Anton Protopopov <[email protected]>
Date:   Tue Dec 10 11:42:45 2024 +0000

    bpf: fix potential error return
    
    [ Upstream commit c4441ca86afe4814039ee1b32c39d833c1a16bbc ]
    
    The bpf_remove_insns() function returns WARN_ON_ONCE(error), where
    error is a result of bpf_adj_branches(), and thus should be always 0
    However, if for any reason it is not 0, then it will be converted to
    boolean by WARN_ON_ONCE and returned to user space as 1, not an actual
    error value. Fix this by returning the original err after the WARN check.
    
    Signed-off-by: Anton Protopopov <[email protected]>
    Acked-by: Jiri Olsa <[email protected]>
    Acked-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: refactor bpf_helper_changes_pkt_data to use helper number [+ + +]
Author: Eduard Zingerman <[email protected]>
Date:   Mon Dec 9 20:10:54 2024 -0800

    bpf: refactor bpf_helper_changes_pkt_data to use helper number
    
    [ Upstream commit b238e187b4a2d3b54d80aec05a9cab6466b79dde ]
    
    Use BPF helper number instead of function pointer in
    bpf_helper_changes_pkt_data(). This would simplify usage of this
    function in verifier.c:check_cfg() (in a follow-up patch),
    where only helper number is easily available and there is no real need
    to lookup helper proto.
    
    Signed-off-by: Eduard Zingerman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Stable-dep-of: 1a4607ffba35 ("bpf: consider that tail calls invalidate packet pointers")
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: allow swap activation to be interruptible [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Mon Dec 9 16:31:41 2024 +0000

    btrfs: allow swap activation to be interruptible
    
    [ Upstream commit 9a45022a0efadd99bcc58f7f1cc2b6fb3b808c40 ]
    
    During swap activation we iterate over the extents of a file, then do
    several checks for each extent, some of which may take some significant
    time such as checking if an extent is shared. Since a file can have
    many thousands of extents, this can be a very slow operation and it's
    currently not interruptible. I had a bug during development of a previous
    patch that resulted in an infinite loop when iterating the extents, so
    a core was busy looping and I couldn't cancel the operation, which is very
    annoying and requires a reboot. So make the loop interruptible by checking
    for fatal signals at the end of each iteration and stopping immediately if
    there is one.
    
    CC: [email protected] # 5.4+
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: flush delalloc workers queue before stopping cleaner kthread during unmount [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Tue Dec 3 11:53:27 2024 +0000

    btrfs: flush delalloc workers queue before stopping cleaner kthread during unmount
    
    [ Upstream commit f10bef73fb355e3fc85e63a50386798be68ff486 ]
    
    During the unmount path, at close_ctree(), we first stop the cleaner
    kthread, using kthread_stop() which frees the associated task_struct, and
    then stop and destroy all the work queues. However after we stopped the
    cleaner we may still have a worker from the delalloc_workers queue running
    inode.c:submit_compressed_extents(), which calls btrfs_add_delayed_iput(),
    which in turn tries to wake up the cleaner kthread - which was already
    destroyed before, resulting in a use-after-free on the task_struct.
    
    Syzbot reported this with the following stack traces:
    
      BUG: KASAN: slab-use-after-free in __lock_acquire+0x78/0x2100 kernel/locking/lockdep.c:5089
      Read of size 8 at addr ffff8880259d2818 by task kworker/u8:3/52
    
      CPU: 1 UID: 0 PID: 52 Comm: kworker/u8:3 Not tainted 6.13.0-rc1-syzkaller-00002-gcdd30ebb1b9f #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
      Workqueue: btrfs-delalloc btrfs_work_helper
      Call Trace:
       <TASK>
       __dump_stack lib/dump_stack.c:94 [inline]
       dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
       print_address_description mm/kasan/report.c:378 [inline]
       print_report+0x169/0x550 mm/kasan/report.c:489
       kasan_report+0x143/0x180 mm/kasan/report.c:602
       __lock_acquire+0x78/0x2100 kernel/locking/lockdep.c:5089
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0xd5/0x120 kernel/locking/spinlock.c:162
       class_raw_spinlock_irqsave_constructor include/linux/spinlock.h:551 [inline]
       try_to_wake_up+0xc2/0x1470 kernel/sched/core.c:4205
       submit_compressed_extents+0xdf/0x16e0 fs/btrfs/inode.c:1615
       run_ordered_work fs/btrfs/async-thread.c:288 [inline]
       btrfs_work_helper+0x96f/0xc40 fs/btrfs/async-thread.c:324
       process_one_work kernel/workqueue.c:3229 [inline]
       process_scheduled_works+0xa66/0x1840 kernel/workqueue.c:3310
       worker_thread+0x870/0xd30 kernel/workqueue.c:3391
       kthread+0x2f0/0x390 kernel/kthread.c:389
       ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
       ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
       </TASK>
    
      Allocated by task 2:
       kasan_save_stack mm/kasan/common.c:47 [inline]
       kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
       unpoison_slab_object mm/kasan/common.c:319 [inline]
       __kasan_slab_alloc+0x66/0x80 mm/kasan/common.c:345
       kasan_slab_alloc include/linux/kasan.h:250 [inline]
       slab_post_alloc_hook mm/slub.c:4104 [inline]
       slab_alloc_node mm/slub.c:4153 [inline]
       kmem_cache_alloc_node_noprof+0x1d9/0x380 mm/slub.c:4205
       alloc_task_struct_node kernel/fork.c:180 [inline]
       dup_task_struct+0x57/0x8c0 kernel/fork.c:1113
       copy_process+0x5d1/0x3d50 kernel/fork.c:2225
       kernel_clone+0x223/0x870 kernel/fork.c:2807
       kernel_thread+0x1bc/0x240 kernel/fork.c:2869
       create_kthread kernel/kthread.c:412 [inline]
       kthreadd+0x60d/0x810 kernel/kthread.c:767
       ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
       ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
    
      Freed by task 24:
       kasan_save_stack mm/kasan/common.c:47 [inline]
       kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
       kasan_save_free_info+0x40/0x50 mm/kasan/generic.c:582
       poison_slab_object mm/kasan/common.c:247 [inline]
       __kasan_slab_free+0x59/0x70 mm/kasan/common.c:264
       kasan_slab_free include/linux/kasan.h:233 [inline]
       slab_free_hook mm/slub.c:2338 [inline]
       slab_free mm/slub.c:4598 [inline]
       kmem_cache_free+0x195/0x410 mm/slub.c:4700
       put_task_struct include/linux/sched/task.h:144 [inline]
       delayed_put_task_struct+0x125/0x300 kernel/exit.c:227
       rcu_do_batch kernel/rcu/tree.c:2567 [inline]
       rcu_core+0xaaa/0x17a0 kernel/rcu/tree.c:2823
       handle_softirqs+0x2d4/0x9b0 kernel/softirq.c:554
       run_ksoftirqd+0xca/0x130 kernel/softirq.c:943
       smpboot_thread_fn+0x544/0xa30 kernel/smpboot.c:164
       kthread+0x2f0/0x390 kernel/kthread.c:389
       ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
       ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
    
      Last potentially related work creation:
       kasan_save_stack+0x3f/0x60 mm/kasan/common.c:47
       __kasan_record_aux_stack+0xac/0xc0 mm/kasan/generic.c:544
       __call_rcu_common kernel/rcu/tree.c:3086 [inline]
       call_rcu+0x167/0xa70 kernel/rcu/tree.c:3190
       context_switch kernel/sched/core.c:5372 [inline]
       __schedule+0x1803/0x4be0 kernel/sched/core.c:6756
       __schedule_loop kernel/sched/core.c:6833 [inline]
       schedule+0x14b/0x320 kernel/sched/core.c:6848
       schedule_timeout+0xb0/0x290 kernel/time/sleep_timeout.c:75
       do_wait_for_common kernel/sched/completion.c:95 [inline]
       __wait_for_common kernel/sched/completion.c:116 [inline]
       wait_for_common kernel/sched/completion.c:127 [inline]
       wait_for_completion+0x355/0x620 kernel/sched/completion.c:148
       kthread_stop+0x19e/0x640 kernel/kthread.c:712
       close_ctree+0x524/0xd60 fs/btrfs/disk-io.c:4328
       generic_shutdown_super+0x139/0x2d0 fs/super.c:642
       kill_anon_super+0x3b/0x70 fs/super.c:1237
       btrfs_kill_super+0x41/0x50 fs/btrfs/super.c:2112
       deactivate_locked_super+0xc4/0x130 fs/super.c:473
       cleanup_mnt+0x41f/0x4b0 fs/namespace.c:1373
       task_work_run+0x24f/0x310 kernel/task_work.c:239
       ptrace_notify+0x2d2/0x380 kernel/signal.c:2503
       ptrace_report_syscall include/linux/ptrace.h:415 [inline]
       ptrace_report_syscall_exit include/linux/ptrace.h:477 [inline]
       syscall_exit_work+0xc7/0x1d0 kernel/entry/common.c:173
       syscall_exit_to_user_mode_prepare kernel/entry/common.c:200 [inline]
       __syscall_exit_to_user_mode_work kernel/entry/common.c:205 [inline]
       syscall_exit_to_user_mode+0x24a/0x340 kernel/entry/common.c:218
       do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
      The buggy address belongs to the object at ffff8880259d1e00
       which belongs to the cache task_struct of size 7424
      The buggy address is located 2584 bytes inside of
       freed 7424-byte region [ffff8880259d1e00, ffff8880259d3b00)
    
      The buggy address belongs to the physical page:
      page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x259d0
      head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
      memcg:ffff88802f4b56c1
      flags: 0xfff00000000040(head|node=0|zone=1|lastcpupid=0x7ff)
      page_type: f5(slab)
      raw: 00fff00000000040 ffff88801bafe500 dead000000000100 dead000000000122
      raw: 0000000000000000 0000000000040004 00000001f5000000 ffff88802f4b56c1
      head: 00fff00000000040 ffff88801bafe500 dead000000000100 dead000000000122
      head: 0000000000000000 0000000000040004 00000001f5000000 ffff88802f4b56c1
      head: 00fff00000000003 ffffea0000967401 ffffffffffffffff 0000000000000000
      head: 0000000000000008 0000000000000000 00000000ffffffff 0000000000000000
      page dumped because: kasan: bad access detected
      page_owner tracks the page as allocated
      page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 12, tgid 12 (kworker/u8:1), ts 7328037942, free_ts 0
       set_page_owner include/linux/page_owner.h:32 [inline]
       post_alloc_hook+0x1f3/0x230 mm/page_alloc.c:1556
       prep_new_page mm/page_alloc.c:1564 [inline]
       get_page_from_freelist+0x3651/0x37a0 mm/page_alloc.c:3474
       __alloc_pages_noprof+0x292/0x710 mm/page_alloc.c:4751
       alloc_pages_mpol_noprof+0x3e8/0x680 mm/mempolicy.c:2265
       alloc_slab_page+0x6a/0x140 mm/slub.c:2408
       allocate_slab+0x5a/0x2f0 mm/slub.c:2574
       new_slab mm/slub.c:2627 [inline]
       ___slab_alloc+0xcd1/0x14b0 mm/slub.c:3815
       __slab_alloc+0x58/0xa0 mm/slub.c:3905
       __slab_alloc_node mm/slub.c:3980 [inline]
       slab_alloc_node mm/slub.c:4141 [inline]
       kmem_cache_alloc_node_noprof+0x269/0x380 mm/slub.c:4205
       alloc_task_struct_node kernel/fork.c:180 [inline]
       dup_task_struct+0x57/0x8c0 kernel/fork.c:1113
       copy_process+0x5d1/0x3d50 kernel/fork.c:2225
       kernel_clone+0x223/0x870 kernel/fork.c:2807
       user_mode_thread+0x132/0x1a0 kernel/fork.c:2885
       call_usermodehelper_exec_work+0x5c/0x230 kernel/umh.c:171
       process_one_work kernel/workqueue.c:3229 [inline]
       process_scheduled_works+0xa66/0x1840 kernel/workqueue.c:3310
       worker_thread+0x870/0xd30 kernel/workqueue.c:3391
      page_owner free stack trace missing
    
      Memory state around the buggy address:
       ffff8880259d2700: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff8880259d2780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      >ffff8880259d2800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                  ^
       ffff8880259d2880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff8880259d2900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ==================================================================
    
    Fix this by flushing the delalloc workers queue before stopping the
    cleaner kthread.
    
    Reported-by: [email protected]
    Link: https://lore.kernel.org/linux-btrfs/[email protected]/
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: handle bio_split() errors [+ + +]
Author: Johannes Thumshirn <[email protected]>
Date:   Mon Dec 2 23:40:22 2024 -0800

    btrfs: handle bio_split() errors
    
    [ Upstream commit c7c97ceff98cc459bf5e358e5cbd06fcb651d501 ]
    
    Commit e546fe1da9bd ("block: Rework bio_split() return value") changed
    bio_split() so that it can return errors.
    
    Add error handling for it in btrfs_split_bio() and ultimately
    btrfs_submit_chunk(). As the bio is not submitted, the bio counter must
    be decremented to pair btrfs_bio_counter_inc_blocked().
    
    Reviewed-by: John Garry <[email protected]>
    Signed-off-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: use bio_is_zone_append() in the completion handler [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Nov 4 07:26:32 2024 +0100

    btrfs: use bio_is_zone_append() in the completion handler
    
    [ Upstream commit 6c3864e055486fadb5b97793b57688082e14b43b ]
    
    Otherwise it won't catch bios turned into regular writes by the block
    level zone write plugging. The additional test it adds is for emulated
    zone append.
    
    Fixes: 9b1ce7f0c6f8 ("block: Implement zone append emulation")
    CC: [email protected] # 6.12
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clk: clk-imx8mp-audiomix: fix function signature [+ + +]
Author: Nikolaus Voss <[email protected]>
Date:   Thu Dec 19 11:54:11 2024 +0100

    clk: clk-imx8mp-audiomix: fix function signature
    
    commit c384481006476ac65478fa3584c7245782e52f34 upstream.
    
    clk_imx8mp_audiomix_reset_controller_register() in the
    "if !CONFIG_RESET_CONTROLLER" branch had the first
    argument missing. It is an empty function for this branch
    so it wasn't immediately apparent.
    
    Fixes: 6f0e817175c5 ("clk: imx: clk-audiomix: Add reset controller")
    Cc: <[email protected]> # 6.12.x
    Signed-off-by: Nikolaus Voss <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Daniel Baluta <[email protected]>
    Acked-by: Shengjiu Wang <[email protected]>
    Reviewed-by: Peng Fan <[email protected]>
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: thead: Fix TH1520 emmc and shdci clock rate [+ + +]
Author: Maksim Kiselev <[email protected]>
Date:   Tue Dec 10 11:30:27 2024 +0300

    clk: thead: Fix TH1520 emmc and shdci clock rate
    
    [ Upstream commit f4bf0b909a6bf64a2220a42a7c8b8c2ee1b77b89 ]
    
    In accordance with LicheePi 4A BSP the clock that comes to emmc/sdhci
    is 198Mhz which is got through frequency division of source clock
    VIDEO PLL by 4 [1].
    
    But now the AP_SUBSYS driver sets the CLK EMMC SDIO to the same
    frequency as the VIDEO PLL, equal to 792 MHz. This causes emmc/sdhci
    to work 4 times slower.
    
    Let's fix this issue by adding fixed factor clock that divides
    VIDEO PLL by 4 for emmc/sdhci.
    
    Link: https://github.com/revyos/thead-kernel/blob/7563179071a314f41cdcdbfd8cf6e101e73707f3/drivers/clk/thead/clk-light-fm.c#L454
    
    Fixes: ae81b69fd2b1 ("clk: thead: Add support for T-Head TH1520 AP_SUBSYS clocks")
    Signed-off-by: Maksim Kiselev <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Xi Ruoyao <[email protected]>
    Reviewed-by: Drew Fustini <[email protected]>
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu: fix backport of commit 73dae652dcac [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Fri Dec 27 02:37:00 2024 -0500

    drm/amdgpu: fix backport of commit 73dae652dcac
    
    Commit 73dae652dcac ("drm/amdgpu: rework resume handling for display (v2)")
    missed a small code change when it was backported resulting in an automatic
    backlight control breakage.  Fix the backport.
    
    Note that this patch is not in Linus' tree as it is not required there;
    the bug was introduced in the backport.
    
    Fixes: 99a02eab8251 ("drm/amdgpu: rework resume handling for display (v2)")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3853
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected] # 6.11.x
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amdgpu: use sjt mec fw on gfx943 for sriov [+ + +]
Author: Victor Zhao <[email protected]>
Date:   Sat Nov 23 18:37:43 2024 +0800

    drm/amdgpu: use sjt mec fw on gfx943 for sriov
    
    [ Upstream commit 9a4ab400f1fad0e6e8686b8f5fc5376383860ce8 ]
    
    Use second jump table in sriov for live migration or mulitple VF
    support so different VF can load different version of MEC as long
    as they support sjt
    
    Signed-off-by: Victor Zhao <[email protected]>
    Reviewed-by: Yang Wang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdkfd: Correct the migration DMA map direction [+ + +]
Author: Prike Liang <[email protected]>
Date:   Tue Nov 5 09:57:42 2024 +0800

    drm/amdkfd: Correct the migration DMA map direction
    
    [ Upstream commit 5c3de6b02d38eb9386edf50490e050bb44398e40 ]
    
    The SVM DMA device map direction should be set the same as
    the DMA unmap setting, otherwise the DMA core will report
    the following warning.
    
    Before finialize this solution, there're some discussion on
    the DMA mapping type(stream-based or coherent) in this KFD
    migration case, followed by https://lore.kernel.org/all/04d4ab32
    [email protected]/T/.
    
    As there's no dma_sync_single_for_*() in the DMA buffer accessed
    that because this migration operation should be sync properly and
    automatically. Give that there's might not be a performance problem
    in various cache sync policy of DMA sync. Therefore, in order to
    simplify the DMA direction setting alignment, let's set the DMA map
    direction as BIDIRECTIONAL.
    
    [  150.834218] WARNING: CPU: 8 PID: 1812 at kernel/dma/debug.c:1028 check_unmap+0x1cc/0x930
    [  150.834225] Modules linked in: amdgpu(OE) amdxcp drm_exec(OE) gpu_sched drm_buddy(OE) drm_ttm_helper(OE) ttm(OE) drm_suballoc_helper(OE) drm_display_helper(OE) drm_kms_helper(OE) i2c_algo_bit rpcsec_gss_krb5 auth_rpcgss nfsv4 nfs lockd grace netfs xt_conntrack xt_MASQUERADE nf_conntrack_netlink xfrm_user xfrm_algo iptable_nat xt_addrtype iptable_filter br_netfilter nvme_fabrics overlay nfnetlink_cttimeout nfnetlink openvswitch nsh nf_conncount nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c bridge stp llc sch_fq_codel intel_rapl_msr amd_atl intel_rapl_common snd_hda_codec_realtek snd_hda_codec_generic snd_hda_scodec_component snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg edac_mce_amd snd_pci_acp6x snd_hda_codec snd_acp_config snd_hda_core snd_hwdep snd_soc_acpi kvm_amd sunrpc snd_pcm kvm binfmt_misc snd_seq_midi crct10dif_pclmul snd_seq_midi_event ghash_clmulni_intel sha512_ssse3 snd_rawmidi nls_iso8859_1 sha256_ssse3 sha1_ssse3 snd_seq aesni_intel snd_seq_device crypto_simd snd_timer cryptd input_leds
    [  150.834310]  wmi_bmof serio_raw k10temp rapl snd sp5100_tco ipmi_devintf soundcore ccp ipmi_msghandler cm32181 industrialio mac_hid msr parport_pc ppdev lp parport efi_pstore drm(OE) ip_tables x_tables pci_stub crc32_pclmul nvme ahci libahci i2c_piix4 r8169 nvme_core i2c_designware_pci realtek i2c_ccgx_ucsi video wmi hid_generic cdc_ether usbnet usbhid hid r8152 mii
    [  150.834354] CPU: 8 PID: 1812 Comm: rocrtst64 Tainted: G           OE      6.10.0-custom #492
    [  150.834358] Hardware name: AMD Majolica-RN/Majolica-RN, BIOS RMJ1009A 06/13/2021
    [  150.834360] RIP: 0010:check_unmap+0x1cc/0x930
    [  150.834363] Code: c0 4c 89 4d c8 e8 34 bf 86 00 4c 8b 4d c8 4c 8b 45 c0 48 8b 4d b8 48 89 c6 41 57 4c 89 ea 48 c7 c7 80 49 b4 84 e8 b4 81 f3 ff <0f> 0b 48 c7 c7 04 83 ac 84 e8 76 ba fc ff 41 8b 76 4c 49 8d 7e 50
    [  150.834365] RSP: 0018:ffffaac5023739e0 EFLAGS: 00010086
    [  150.834368] RAX: 0000000000000000 RBX: ffffffff8566a2e0 RCX: 0000000000000027
    [  150.834370] RDX: ffff8f6a8f621688 RSI: 0000000000000001 RDI: ffff8f6a8f621680
    [  150.834372] RBP: ffffaac502373a30 R08: 00000000000000c9 R09: ffffaac502373850
    [  150.834373] R10: ffffaac502373848 R11: ffffffff84f46328 R12: ffffaac502373a40
    [  150.834375] R13: ffff8f6741045330 R14: ffff8f6741a77700 R15: ffffffff84ac831b
    [  150.834377] FS:  00007faf0fc94c00(0000) GS:ffff8f6a8f600000(0000) knlGS:0000000000000000
    [  150.834379] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  150.834381] CR2: 00007faf0b600020 CR3: 000000010a52e000 CR4: 0000000000350ef0
    [  150.834383] Call Trace:
    [  150.834385]  <TASK>
    [  150.834387]  ? show_regs+0x6d/0x80
    [  150.834393]  ? __warn+0x8c/0x140
    [  150.834397]  ? check_unmap+0x1cc/0x930
    [  150.834400]  ? report_bug+0x193/0x1a0
    [  150.834406]  ? handle_bug+0x46/0x80
    [  150.834410]  ? exc_invalid_op+0x1d/0x80
    [  150.834413]  ? asm_exc_invalid_op+0x1f/0x30
    [  150.834420]  ? check_unmap+0x1cc/0x930
    [  150.834425]  debug_dma_unmap_page+0x86/0x90
    [  150.834431]  ? srso_return_thunk+0x5/0x5f
    [  150.834435]  ? rmap_walk+0x28/0x50
    [  150.834438]  ? srso_return_thunk+0x5/0x5f
    [  150.834441]  ? remove_migration_ptes+0x79/0x80
    [  150.834445]  ? srso_return_thunk+0x5/0x5f
    [  150.834448]  dma_unmap_page_attrs+0xfa/0x1d0
    [  150.834453]  svm_range_dma_unmap_dev+0x8a/0xf0 [amdgpu]
    [  150.834710]  svm_migrate_ram_to_vram+0x361/0x740 [amdgpu]
    [  150.834914]  svm_migrate_to_vram+0xa8/0xe0 [amdgpu]
    [  150.835111]  svm_range_set_attr+0xff2/0x1450 [amdgpu]
    [  150.835311]  svm_ioctl+0x4a/0x50 [amdgpu]
    [  150.835510]  kfd_ioctl_svm+0x54/0x90 [amdgpu]
    [  150.835701]  kfd_ioctl+0x3c2/0x530 [amdgpu]
    [  150.835888]  ? __pfx_kfd_ioctl_svm+0x10/0x10 [amdgpu]
    [  150.836075]  ? srso_return_thunk+0x5/0x5f
    [  150.836080]  ? tomoyo_file_ioctl+0x20/0x30
    [  150.836086]  __x64_sys_ioctl+0x9c/0xd0
    [  150.836091]  x64_sys_call+0x1219/0x20d0
    [  150.836095]  do_syscall_64+0x51/0x120
    [  150.836098]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  150.836102] RIP: 0033:0x7faf0f11a94f
    [  150.836105] Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
    [  150.836107] RSP: 002b:00007ffeced26bc0 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    [  150.836110] RAX: ffffffffffffffda RBX: 000055c683528fb0 RCX: 00007faf0f11a94f
    [  150.836112] RDX: 00007ffeced26c60 RSI: 00000000c0484b20 RDI: 0000000000000003
    [  150.836114] RBP: 00007ffeced26c50 R08: 0000000000000000 R09: 0000000000000001
    [  150.836115] R10: 0000000000000032 R11: 0000000000000246 R12: 000055c683528bd0
    [  150.836117] R13: 0000000000000000 R14: 0000000000000021 R15: 0000000000000000
    [  150.836122]  </TASK>
    [  150.836124] ---[ end trace 0000000000000000 ]---
    
    Signed-off-by: Prike Liang <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/bridge: adv7511_audio: Update Audio InfoFrame properly [+ + +]
Author: Stefan Ekenberg <[email protected]>
Date:   Tue Nov 19 08:40:29 2024 +0100

    drm/bridge: adv7511_audio: Update Audio InfoFrame properly
    
    [ Upstream commit 902806baf3c1e8383c1fe3ff0b6042b8cb5c2707 ]
    
    AUDIO_UPDATE bit (Bit 5 of MAIN register 0x4A) needs to be set to 1
    while updating Audio InfoFrame information and then set to 0 when done.
    Otherwise partially updated Audio InfoFrames could be sent out. Two
    cases where this rule were not followed are fixed:
     - In adv7511_hdmi_hw_params() make sure AUDIO_UPDATE bit is updated
       before/after setting ADV7511_REG_AUDIO_INFOFRAME.
     - In audio_startup() use the correct register for clearing
       AUDIO_UPDATE bit.
    
    The problem with corrupted audio infoframes were discovered by letting
    a HDMI logic analyser check the output of ADV7535.
    
    Note that this patchs replaces writing REG_GC(1) with
    REG_INFOFRAME_UPDATE. Bit 5 of REG_GC(1) is positioned within field
    GC_PP[3:0] and that field doesn't control audio infoframe and is read-
    only. My conclusion therefore was that the author if this code meant to
    clear bit 5 of REG_INFOFRAME_UPDATE from the very beginning.
    
    Tested-by: Biju Das <[email protected]>
    Fixes: 53c515befe28 ("drm/bridge: adv7511: Add Audio support")
    Signed-off-by: Stefan Ekenberg <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/cx0_phy: Fix C10 pll programming sequence [+ + +]
Author: Suraj Kandpal <[email protected]>
Date:   Mon Dec 16 23:45:54 2024 +0530

    drm/i915/cx0_phy: Fix C10 pll programming sequence
    
    [ Upstream commit 385a95cc72941c7f88630a7bc4176048cc03b395 ]
    
    According to spec VDR_CUSTOM_WIDTH register gets programmed after pll
    specific VDR registers and TX Lane programming registers are done.
    Moreover we only program into C10_VDR_CONTROL1 to update config and
    setup master lane once all VDR registers are written into.
    
    Bspec: 67636
    Fixes: 51390cc0e00a ("drm/i915/mtl: Add Support for C10 PHY message bus and pll programming")
    Signed-off-by: Suraj Kandpal <[email protected]>
    Reviewed-by: Ankit Nautiyal <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    (cherry picked from commit f9d418552ba1e3a0e92487ff82eb515dab7516c0)
    Signed-off-by: Tvrtko Ursulin <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/dg1: Fix power gate sequence. [+ + +]
Author: Rodrigo Vivi <[email protected]>
Date:   Thu Dec 19 16:00:19 2024 -0500

    drm/i915/dg1: Fix power gate sequence.
    
    [ Upstream commit 20e7c5313ffbf11c34a46395345677adbe890bee ]
    
    sub-pipe PG is not present on DG1. Setting these bits can disable
    other power gates and cause GPU hangs on video playbacks.
    
    VLK: 16314, 4304
    
    Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13381
    Fixes: 85a12d7eb8fe ("drm/i915/tgl: Fix Media power gate sequence.")
    Cc: Vinay Belgaumkar <[email protected]>
    Cc: Himal Prasad Ghimiray <[email protected]>
    Reviewed-by: Vinay Belgaumkar <[email protected]>
    Reviewed-by: Himal Prasad Ghimiray <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    (cherry picked from commit de7061947b4ed4be857d452c60d5fb795831d79e)
    Signed-off-by: Tvrtko Ursulin <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/pf: Use correct function to check LMEM provisioning [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Mon Dec 16 23:32:53 2024 +0100

    drm/xe/pf: Use correct function to check LMEM provisioning
    
    [ Upstream commit af12ba67d09ebe2b31ab997cea1a930864028562 ]
    
    There is a typo in function call and instead of VF LMEM we were
    looking at VF GGTT provisioning. Fix that.
    
    Fixes: 234670cea9a2 ("drm/xe/pf: Skip fair VFs provisioning if already provisioned")
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Cc: Piotr Piórkowski <[email protected]>
    Reviewed-by: Himal Prasad Ghimiray <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    (cherry picked from commit a8d0aa0e7fcd20c9f1992688c0f0d07a68287403)
    Signed-off-by: Thomas Hellström <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe: Fix fault on fd close after unbind [+ + +]
Author: Lucas De Marchi <[email protected]>
Date:   Tue Dec 17 21:31:21 2024 -0800

    drm/xe: Fix fault on fd close after unbind
    
    [ Upstream commit fe39b222a4139354d32ff9d46b88757f63f71d63 ]
    
    If userspace holds an fd open, unbinds the device and then closes it,
    the driver shouldn't try to access the hardware. Protect it by using
    drm_dev_enter()/drm_dev_exit(). This fixes the following page fault:
    
    <6> [IGT] xe_wedged: exiting, ret=98
    <1> BUG: unable to handle page fault for address: ffffc901bc5e508c
    <1> #PF: supervisor read access in kernel mode
    <1> #PF: error_code(0x0000) - not-present page
    ...
    <4>   xe_lrc_update_timestamp+0x1c/0xd0 [xe]
    <4>   xe_exec_queue_update_run_ticks+0x50/0xb0 [xe]
    <4>   xe_exec_queue_fini+0x16/0xb0 [xe]
    <4>   __guc_exec_queue_fini_async+0xc4/0x190 [xe]
    <4>   guc_exec_queue_fini_async+0xa0/0xe0 [xe]
    <4>   guc_exec_queue_fini+0x23/0x40 [xe]
    <4>   xe_exec_queue_destroy+0xb3/0xf0 [xe]
    <4>   xe_file_close+0xd4/0x1a0 [xe]
    <4>   drm_file_free+0x210/0x280 [drm]
    <4>   drm_close_helper.isra.0+0x6d/0x80 [drm]
    <4>   drm_release_noglobal+0x20/0x90 [drm]
    
    Fixes: 514447a12190 ("drm/xe: Stop accumulating LRC timestamp on job_free")
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/3421
    Reviewed-by: Umesh Nerlige Ramappa <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Lucas De Marchi <[email protected]>
    (cherry picked from commit 4ca1fd418338d4d135428a0eb1e16e3b3ce17ee8)
    Signed-off-by: Thomas Hellström <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Revert some changes that break a mesa debug tool [+ + +]
Author: John Harrison <[email protected]>
Date:   Fri Dec 13 09:28:33 2024 -0800

    drm/xe: Revert some changes that break a mesa debug tool
    
    [ Upstream commit a53da2fb25a31f4fb8eaeb93c7b1134fc14fd209 ]
    
    There is a mesa debug tool for decoding devcoredump files. Recent
    changes to improve the devcoredump output broke that tool. So revert
    the changes until the tool can be extended to support the new fields.
    
    Signed-off-by: John Harrison <[email protected]>
    Fixes: c28fd6c358db ("drm/xe/devcoredump: Improve section headings and add tile info")
    Fixes: ec1455ce7e35 ("drm/xe/devcoredump: Add ASCII85 dump helper function")
    Cc: John Harrison <[email protected]>
    Cc: Julia Filipchuk <[email protected]>
    Cc: Lucas De Marchi <[email protected]>
    Cc: Thomas Hellström <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Cc: [email protected]
    Reviewed-by: Jonathan Cavitt <[email protected]>
    Reviewed-by: José Roberto de Souza <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    (cherry picked from commit 70fb86a85dc9fd66014d7eb2fe356f50702ceeb6)
    Signed-off-by: Thomas Hellström <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Use non-interruptible wait when moving BO to system [+ + +]
Author: Nirmoy Das <[email protected]>
Date:   Fri Dec 13 13:24:14 2024 +0100

    drm/xe: Use non-interruptible wait when moving BO to system
    
    commit 528cef1b4170f328d28d4e9b437380d8e5a2d18f upstream.
    
    Ensure a non-interruptible wait is used when moving a bo to
    XE_PL_SYSTEM. This prevents dma_mappings from being removed prematurely
    while a GPU job is still in progress, even if the CPU receives a
    signal during the operation.
    
    Fixes: 75521e8b56e8 ("drm/xe: Perform dma_map when moving system buffer objects to TT")
    Cc: Thomas Hellström <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Cc: Lucas De Marchi <[email protected]>
    Cc: [email protected] # v6.11+
    Suggested-by: Matthew Auld <[email protected]>
    Reviewed-by: Matthew Auld <[email protected]>
    Reviewed-by: Thomas Hellström <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Nirmoy Das <[email protected]>
    (cherry picked from commit dc5e20ae1f8a7c354dc9833faa2720254e5a5443)
    Signed-off-by: Thomas Hellström <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/xe: Wait for migration job before unmapping pages [+ + +]
Author: Nirmoy Das <[email protected]>
Date:   Fri Dec 13 13:24:15 2024 +0100

    drm/xe: Wait for migration job before unmapping pages
    
    commit 5e0a67fdb894d34c5f109e969320eef9ddae7480 upstream.
    
    Fix a potential GPU page fault during tt -> system moves by waiting for
    migration jobs to complete before unmapping SG. This ensures that IOMMU
    mappings are not prematurely torn down while a migration job is still in
    progress.
    
    v2: Use intr=false(Matt A)
    v3: Update commit message(Matt A)
    v4: s/DMA_RESV_USAGE_BOOKKEEP/DMA_RESV_USAGE_KERNEL(Thomas)
    
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/3466
    Fixes: 75521e8b56e8 ("drm/xe: Perform dma_map when moving system buffer objects to TT")
    Cc: Thomas Hellström <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Cc: Lucas De Marchi <[email protected]>
    Cc: [email protected] # v6.11+
    Cc: Matthew Auld <[email protected]>
    Reviewed-by: Matthew Auld <[email protected]>
    Reviewed-by: Thomas Hellström <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Nirmoy Das <[email protected]>
    (cherry picked from commit cda06412c06893a6f07a2fbf89d42a0972ec9e8e)
    Signed-off-by: Thomas Hellström <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm: adv7511: Drop dsi single lane support [+ + +]
Author: Biju Das <[email protected]>
Date:   Tue Nov 19 19:20:31 2024 +0000

    drm: adv7511: Drop dsi single lane support
    
    commit 79d67c499c3f886202a40c5cb27e747e4fa4d738 upstream.
    
    As per [1] and [2], ADV7535/7533 supports only 2-, 3-, or 4-lane. Drop
    unsupported 1-lane.
    
    [1] https://www.analog.com/media/en/technical-documentation/data-sheets/ADV7535.pdf
    [2] https://www.analog.com/media/en/technical-documentation/data-sheets/ADV7533.pdf
    
    Fixes: 1e4d58cd7f88 ("drm/bridge: adv7533: Create a MIPI DSI device")
    Reported-by: Hien Huynh <[email protected]>
    Cc: [email protected]
    Reviewed-by: Laurent Pinchart <[email protected]>
    Reviewed-by: Adam Ford <[email protected]>
    Signed-off-by: Biju Das <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm: adv7511: Fix use-after-free in adv7533_attach_dsi() [+ + +]
Author: Biju Das <[email protected]>
Date:   Tue Nov 19 19:20:29 2024 +0000

    drm: adv7511: Fix use-after-free in adv7533_attach_dsi()
    
    commit 81adbd3ff21c1182e06aa02c6be0bfd9ea02d8e8 upstream.
    
    The host_node pointer was assigned and freed in adv7533_parse_dt(), and
    later, adv7533_attach_dsi() uses the same. Fix this use-after-free issue
    by dropping of_node_put() in adv7533_parse_dt() and calling of_node_put()
    in error path of probe() and also in the remove().
    
    Fixes: 1e4d58cd7f88 ("drm/bridge: adv7533: Create a MIPI DSI device")
    Cc: [email protected]
    Reviewed-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Biju Das <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dt-bindings: display: adi,adv7533: Drop single lane support [+ + +]
Author: Biju Das <[email protected]>
Date:   Tue Nov 19 19:20:30 2024 +0000

    dt-bindings: display: adi,adv7533: Drop single lane support
    
    commit ee8f9ed57a397605434caeef351bafa3ec4dfdd4 upstream.
    
    As per [1] and [2], ADV7535/7533 supports only 2-, 3-, or 4-lane. Drop
    unsupported 1-lane from bindings.
    
    [1] https://www.analog.com/media/en/technical-documentation/data-sheets/ADV7535.pdf
    [2] https://www.analog.com/media/en/technical-documentation/data-sheets/ADV7533.pdf
    
    Fixes: 1e4d58cd7f88 ("drm/bridge: adv7533: Create a MIPI DSI device")
    Cc: [email protected]
    Acked-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Biju Das <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
eth: bcmsysport: fix call balance of priv->clk handling routines [+ + +]
Author: Vitalii Mordan <[email protected]>
Date:   Fri Dec 27 15:30:07 2024 +0300

    eth: bcmsysport: fix call balance of priv->clk handling routines
    
    [ Upstream commit b255ef45fcc2141c1bf98456796abb956d843a27 ]
    
    Check the return value of clk_prepare_enable to ensure that priv->clk has
    been successfully enabled.
    
    If priv->clk was not enabled during bcm_sysport_probe, bcm_sysport_resume,
    or bcm_sysport_open, it must not be disabled in any subsequent execution
    paths.
    
    Fixes: 31bc72d97656 ("net: systemport: fetch and use clock resources")
    Signed-off-by: Vitalii Mordan <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fgraph: Add READ_ONCE() when accessing fgraph_array[] [+ + +]
Author: Zilin Guan <[email protected]>
Date:   Tue Dec 31 11:37:31 2024 +0000

    fgraph: Add READ_ONCE() when accessing fgraph_array[]
    
    commit d65474033740ded0a4fe9a097fce72328655b41d upstream.
    
    In __ftrace_return_to_handler(), a loop iterates over the fgraph_array[]
    elements, which are fgraph_ops. The loop checks if an element is a
    fgraph_stub to prevent using a fgraph_stub afterward.
    
    However, if the compiler reloads fgraph_array[] after this check, it might
    race with an update to fgraph_array[] that introduces a fgraph_stub. This
    could result in the stub being processed, but the stub contains a null
    "func_hash" field, leading to a NULL pointer dereference.
    
    To ensure that the gops compared against the fgraph_stub matches the gops
    processed later, add a READ_ONCE(). A similar patch appears in commit
    63a8dfb ("function_graph: Add READ_ONCE() when accessing fgraph_array[]").
    
    Cc: [email protected]
    Fixes: 37238abe3cb47 ("ftrace/function_graph: Pass fgraph_ops to function graph callbacks")
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Zilin Guan <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fs/proc/task_mmu: fix pagemap flags with PMD THP entries on 32bit [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Tue Dec 17 20:50:00 2024 +0100

    fs/proc/task_mmu: fix pagemap flags with PMD THP entries on 32bit
    
    commit 3754137d263f52f4b507cf9ae913f8f0497d1b0e upstream.
    
    Entries (including flags) are u64, even on 32bit.  So right now we are
    cutting of the flags on 32bit.  This way, for example the cow selftest
    complains about:
    
      # ./cow
      ...
      Bail Out! read and ioctl return unmatched results for populated: 0 1
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2c1f057e5be6 ("fs/proc/task_mmu: properly detect PM_MMAP_EXCLUSIVE per page of PMD-mapped THPs")
    Signed-off-by: David Hildenbrand <[email protected]>
    Cc: Oscar Salvador <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ftrace: Fix function profiler's filtering functionality [+ + +]
Author: Kohei Enju <[email protected]>
Date:   Thu Jan 2 04:08:20 2025 +0900

    ftrace: Fix function profiler's filtering functionality
    
    commit 789a8cff8d2dbe4b5c617c3004b5eb63fa7a3b35 upstream.
    
    Commit c132be2c4fcc ("function_graph: Have the instances use their own
    ftrace_ops for filtering"), function profiler (enabled via
    function_profile_enabled) has been showing statistics for all functions,
    ignoring set_ftrace_filter settings.
    
    While tracers are instantiated, the function profiler is not. Therefore, it
    should use the global set_ftrace_filter for consistency.  This patch
    modifies the function profiler to use the global filter, fixing the
    filtering functionality.
    
    Before (filtering not working):
    ```
    root@localhost:~# echo 'vfs*' > /sys/kernel/tracing/set_ftrace_filter
    root@localhost:~# echo 1 > /sys/kernel/tracing/function_profile_enabled
    root@localhost:~# sleep 1
    root@localhost:~# echo 0 > /sys/kernel/tracing/function_profile_enabled
    root@localhost:~# head /sys/kernel/tracing/trace_stat/*
      Function                               Hit    Time            Avg
         s^2
      --------                               ---    ----            ---
         ---
      schedule                               314    22290594 us     70989.15 us
         40372231 us
      x64_sys_call                          1527    8762510 us      5738.382 us
         3414354 us
      schedule_hrtimeout_range               176    8665356 us      49234.98 us
         405618876 us
      __x64_sys_ppoll                        324    5656635 us      17458.75 us
         19203976 us
      do_sys_poll                            324    5653747 us      17449.83 us
         19214945 us
      schedule_timeout                        67    5531396 us      82558.15 us
         2136740827 us
      __x64_sys_pselect6                      12    3029540 us      252461.7 us
         63296940171 us
      do_pselect.constprop.0                  12    3029532 us      252461.0 us
         63296952931 us
    ```
    
    After (filtering working):
    ```
    root@localhost:~# echo 'vfs*' > /sys/kernel/tracing/set_ftrace_filter
    root@localhost:~# echo 1 > /sys/kernel/tracing/function_profile_enabled
    root@localhost:~# sleep 1
    root@localhost:~# echo 0 > /sys/kernel/tracing/function_profile_enabled
    root@localhost:~# head /sys/kernel/tracing/trace_stat/*
      Function                               Hit    Time            Avg
         s^2
      --------                               ---    ----            ---
         ---
      vfs_write                              462    68476.43 us     148.217 us
         25874.48 us
      vfs_read                               641    9611.356 us     14.994 us
         28868.07 us
      vfs_fstat                              890    878.094 us      0.986 us
         1.667 us
      vfs_fstatat                            227    757.176 us      3.335 us
         18.928 us
      vfs_statx                              226    610.610 us      2.701 us
         17.749 us
      vfs_getattr_nosec                     1187    460.919 us      0.388 us
         0.326 us
      vfs_statx_path                         297    343.287 us      1.155 us
         11.116 us
      vfs_rename                               6    291.575 us      48.595 us
         9889.236 us
    ```
    
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Fixes: c132be2c4fcc ("function_graph: Have the instances use their own ftrace_ops for filtering")
    Signed-off-by: Kohei Enju <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gve: clean XDP queues in gve_tx_stop_ring_gqi [+ + +]
Author: Joshua Washington <[email protected]>
Date:   Wed Dec 18 05:34:11 2024 -0800

    gve: clean XDP queues in gve_tx_stop_ring_gqi
    
    commit 6321f5fb70d502d95de8a212a7b484c297ec9644 upstream.
    
    When stopping XDP TX rings, the XDP clean function needs to be called to
    clean out the entire queue, similar to what happens in the normal TX
    queue case. Otherwise, the FIFO won't be cleared correctly, and
    xsk_tx_completed won't be reported.
    
    Fixes: 75eaae158b1b ("gve: Add XDP DROP and TX support for GQI-QPL format")
    Cc: [email protected]
    Signed-off-by: Joshua Washington <[email protected]>
    Signed-off-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gve: fix XDP allocation path in edge cases [+ + +]
Author: Joshua Washington <[email protected]>
Date:   Wed Dec 18 05:34:15 2024 -0800

    gve: fix XDP allocation path in edge cases
    
    commit de63ac44a527b2c5067551dbd70d939fe151325a upstream.
    
    This patch fixes a number of consistency issues in the queue allocation
    path related to XDP.
    
    As it stands, the number of allocated XDP queues changes in three
    different scenarios.
    1) Adding an XDP program while the interface is up via
       gve_add_xdp_queues
    2) Removing an XDP program while the interface is up via
       gve_remove_xdp_queues
    3) After queues have been allocated and the old queue memory has been
       removed in gve_queues_start.
    
    However, the requirement for the interface to be up for
    gve_(add|remove)_xdp_queues to be called, in conjunction with the fact
    that the number of queues stored in priv isn't updated until _after_ XDP
    queues have been allocated in the normal queue allocation path means
    that if an XDP program is added while the interface is down, XDP queues
    won't be added until the _second_ if_up, not the first.
    
    Given the expectation that the number of XDP queues is equal to the
    number of RX queues, scenario (3) has another problematic implication.
    When changing the number of queues while an XDP program is loaded, the
    number of XDP queues must be updated as well, as there is logic in the
    driver (gve_xdp_tx_queue_id()) which relies on every RX queue having a
    corresponding XDP TX queue. However, the number of XDP queues stored in
    priv would not be updated until _after_ a close/open leading to a
    mismatch in the number of XDP queues reported vs the number of XDP
    queues which actually exist after the queue count update completes.
    
    This patch remedies these issues by doing the following:
    1) The allocation config getter function is set up to retrieve the
       _expected_ number of XDP queues to allocate instead of relying
       on the value stored in `priv` which is only updated once the queues
       have been allocated.
    2) When adjusting queues, XDP queues are adjusted to match the number of
       RX queues when XDP is enabled. This only works in the case when
       queues are live, so part (1) of the fix must still be available in
       the case that queues are adjusted when there is an XDP program and
       the interface is down.
    
    Fixes: 5f08cd3d6423 ("gve: Alloc before freeing when adjusting queues")
    Cc: [email protected]
    Signed-off-by: Joshua Washington <[email protected]>
    Signed-off-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Shailend Chand <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gve: guard XDP xmit NDO on existence of xdp queues [+ + +]
Author: Joshua Washington <[email protected]>
Date:   Wed Dec 18 05:34:12 2024 -0800

    gve: guard XDP xmit NDO on existence of xdp queues
    
    commit ff7c2dea9dd1a436fc79d6273adffdcc4a7ffea3 upstream.
    
    In GVE, dedicated XDP queues only exist when an XDP program is installed
    and the interface is up. As such, the NDO XDP XMIT callback should
    return early if either of these conditions are false.
    
    In the case of no loaded XDP program, priv->num_xdp_queues=0 which can
    cause a divide-by-zero error, and in the case of interface down,
    num_xdp_queues remains untouched to persist XDP queue count for the next
    interface up, but the TX pointer itself would be NULL.
    
    The XDP xmit callback also needs to synchronize with a device
    transitioning from open to close. This synchronization will happen via
    the GVE_PRIV_FLAGS_NAPI_ENABLED bit along with a synchronize_net() call,
    which waits for any RCU critical sections at call-time to complete.
    
    Fixes: 39a7f4aa3e4a ("gve: Add XDP REDIRECT support for GQI-QPL format")
    Cc: [email protected]
    Signed-off-by: Joshua Washington <[email protected]>
    Signed-off-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Shailend Chand <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gve: guard XSK operations on the existence of queues [+ + +]
Author: Joshua Washington <[email protected]>
Date:   Wed Dec 18 05:34:13 2024 -0800

    gve: guard XSK operations on the existence of queues
    
    commit 40338d7987d810fcaa95c500b1068a52b08eec9b upstream.
    
    This patch predicates the enabling and disabling of XSK pools on the
    existence of queues. As it stands, if the interface is down, disabling
    or enabling XSK pools would result in a crash, as the RX queue pointer
    would be NULL. XSK pool registration will occur as part of the next
    interface up.
    
    Similarly, xsk_wakeup needs be guarded against queues disappearing
    while the function is executing, so a check against the
    GVE_PRIV_FLAGS_NAPI_ENABLED flag is added to synchronize with the
    disabling of the bit and the synchronize_net() in gve_turndown.
    
    Fixes: fd8e40321a12 ("gve: Add AF_XDP zero-copy support for GQI-QPL format")
    Cc: [email protected]
    Signed-off-by: Joshua Washington <[email protected]>
    Signed-off-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Praveen Kaligineedi <[email protected]>
    Reviewed-by: Shailend Chand <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Reviewed-by: Larysa Zaremba <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gve: process XSK TX descriptors as part of RX NAPI [+ + +]
Author: Joshua Washington <[email protected]>
Date:   Wed Dec 18 05:34:14 2024 -0800

    gve: process XSK TX descriptors as part of RX NAPI
    
    commit ba0925c34e0fa6fe02d3d642bc02ab099ab312c7 upstream.
    
    When busy polling is enabled, xsk_sendmsg for AF_XDP zero copy marks
    the NAPI ID corresponding to the memory pool allocated for the socket.
    In GVE, this NAPI ID will never correspond to a NAPI ID of one of the
    dedicated XDP TX queues registered with the umem because XDP TX is not
    set up to share a NAPI with a corresponding RX queue.
    
    This patch moves XSK TX descriptor processing from the TX NAPI to the RX
    NAPI, and the gve_xsk_wakeup callback is updated to use the RX NAPI
    instead of the TX NAPI, accordingly. The branch on if the wakeup is for
    TX is removed, as the NAPI poll should be invoked whether the wakeup is
    for TX or for RX.
    
    Fixes: fd8e40321a12 ("gve: Add AF_XDP zero-copy support for GQI-QPL format")
    Cc: [email protected]
    Signed-off-by: Praveen Kaligineedi <[email protected]>
    Signed-off-by: Joshua Washington <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gve: trigger RX NAPI instead of TX NAPI in gve_xsk_wakeup [+ + +]
Author: Joshua Washington <[email protected]>
Date:   Fri Dec 20 19:28:06 2024 -0800

    gve: trigger RX NAPI instead of TX NAPI in gve_xsk_wakeup
    
    commit fb3a9a1165cea104b5ab3753e88218e4497b01c1 upstream.
    
    Commit ba0925c34e0f ("gve: process XSK TX descriptors as part of RX NAPI")
    moved XSK TX processing to be part of the RX NAPI. However, that commit
    did not include triggering the RX NAPI in gve_xsk_wakeup. This is
    necessary because the TX NAPI only processes TX completions, meaning
    that a TX wakeup would not actually trigger XSK descriptor processing.
    Also, the branch on XDP_WAKEUP_TX was supposed to have been removed, as
    the NAPI should be scheduled whether the wakeup is for RX or TX.
    
    Fixes: ba0925c34e0f ("gve: process XSK TX descriptors as part of RX NAPI")
    Cc: [email protected]
    Signed-off-by: Joshua Washington <[email protected]>
    Signed-off-by: Praveen Kaligineedi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ila: serialize calls to nf_register_net_hooks() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Dec 30 16:28:49 2024 +0000

    ila: serialize calls to nf_register_net_hooks()
    
    [ Upstream commit 260466b576bca0081a7d4acecc8e93687aa22d0e ]
    
    syzbot found a race in ila_add_mapping() [1]
    
    commit 031ae72825ce ("ila: call nf_unregister_net_hooks() sooner")
    attempted to fix a similar issue.
    
    Looking at the syzbot repro, we have concurrent ILA_CMD_ADD commands.
    
    Add a mutex to make sure at most one thread is calling nf_register_net_hooks().
    
    [1]
     BUG: KASAN: slab-use-after-free in rht_key_hashfn include/linux/rhashtable.h:159 [inline]
     BUG: KASAN: slab-use-after-free in __rhashtable_lookup.constprop.0+0x426/0x550 include/linux/rhashtable.h:604
    Read of size 4 at addr ffff888028f40008 by task dhcpcd/5501
    
    CPU: 1 UID: 0 PID: 5501 Comm: dhcpcd Not tainted 6.13.0-rc4-syzkaller-00054-gd6ef8b40d075 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
     <IRQ>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
      print_address_description mm/kasan/report.c:378 [inline]
      print_report+0xc3/0x620 mm/kasan/report.c:489
      kasan_report+0xd9/0x110 mm/kasan/report.c:602
      rht_key_hashfn include/linux/rhashtable.h:159 [inline]
      __rhashtable_lookup.constprop.0+0x426/0x550 include/linux/rhashtable.h:604
      rhashtable_lookup include/linux/rhashtable.h:646 [inline]
      rhashtable_lookup_fast include/linux/rhashtable.h:672 [inline]
      ila_lookup_wildcards net/ipv6/ila/ila_xlat.c:127 [inline]
      ila_xlat_addr net/ipv6/ila/ila_xlat.c:652 [inline]
      ila_nf_input+0x1ee/0x620 net/ipv6/ila/ila_xlat.c:185
      nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline]
      nf_hook_slow+0xbb/0x200 net/netfilter/core.c:626
      nf_hook.constprop.0+0x42e/0x750 include/linux/netfilter.h:269
      NF_HOOK include/linux/netfilter.h:312 [inline]
      ipv6_rcv+0xa4/0x680 net/ipv6/ip6_input.c:309
      __netif_receive_skb_one_core+0x12e/0x1e0 net/core/dev.c:5672
      __netif_receive_skb+0x1d/0x160 net/core/dev.c:5785
      process_backlog+0x443/0x15f0 net/core/dev.c:6117
      __napi_poll.constprop.0+0xb7/0x550 net/core/dev.c:6883
      napi_poll net/core/dev.c:6952 [inline]
      net_rx_action+0xa94/0x1010 net/core/dev.c:7074
      handle_softirqs+0x213/0x8f0 kernel/softirq.c:561
      __do_softirq kernel/softirq.c:595 [inline]
      invoke_softirq kernel/softirq.c:435 [inline]
      __irq_exit_rcu+0x109/0x170 kernel/softirq.c:662
      irq_exit_rcu+0x9/0x30 kernel/softirq.c:678
      instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline]
      sysvec_apic_timer_interrupt+0xa4/0xc0 arch/x86/kernel/apic/apic.c:1049
    
    Fixes: 7f00feaf1076 ("ila: Add generic ILA translation facility")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Florian Westphal <[email protected]>
    Cc: Tom Herbert <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/kbuf: use pre-committed buffer address for non-pollable file [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Fri Jan 3 09:29:09 2025 -0700

    io_uring/kbuf: use pre-committed buffer address for non-pollable file
    
    commit ed123c948d06688d10f3b10a7bce1d6fbfd1ed07 upstream.
    
    For non-pollable files, buffer ring consumption will commit upfront.
    This is fine, but io_ring_buffer_select() will return the address of the
    buffer after having committed it. For incrementally consumed buffers,
    this is incorrect as it will modify the buffer address.
    
    Store the pre-committed value and return that. If that isn't done, then
    the initial part of the buffer is not used and the application will
    correctly assume the content arrived at the start of the userspace
    buffer, but the kernel will have put it later in the buffer. Or it can
    cause a spurious -EFAULT returned in the CQE, depending on the buffer
    size. As bounds are suitably checked for doing the actual IO, no adverse
    side effects are possible - it's just a data misplacement within the
    existing buffer.
    
    Reported-by: Gwendal Fernet <[email protected]>
    Cc: [email protected]
    Fixes: ae98dbf43d75 ("io_uring/kbuf: add support for incremental buffer consumption")
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
io_uring/net: always initialize kmsg->msg.msg_inq upfront [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Thu Jan 2 16:32:51 2025 -0700

    io_uring/net: always initialize kmsg->msg.msg_inq upfront
    
    [ Upstream commit c6e60a0a68b7e6b3c7e33863a16e8e88ba9eee6f ]
    
    syzbot reports that ->msg_inq may get used uinitialized from the
    following path:
    
    BUG: KMSAN: uninit-value in io_recv_buf_select io_uring/net.c:1094 [inline]
    BUG: KMSAN: uninit-value in io_recv+0x930/0x1f90 io_uring/net.c:1158
     io_recv_buf_select io_uring/net.c:1094 [inline]
     io_recv+0x930/0x1f90 io_uring/net.c:1158
     io_issue_sqe+0x420/0x2130 io_uring/io_uring.c:1740
     io_queue_sqe io_uring/io_uring.c:1950 [inline]
     io_req_task_submit+0xfa/0x1d0 io_uring/io_uring.c:1374
     io_handle_tw_list+0x55f/0x5c0 io_uring/io_uring.c:1057
     tctx_task_work_run+0x109/0x3e0 io_uring/io_uring.c:1121
     tctx_task_work+0x6d/0xc0 io_uring/io_uring.c:1139
     task_work_run+0x268/0x310 kernel/task_work.c:239
     io_run_task_work+0x43a/0x4a0 io_uring/io_uring.h:343
     io_cqring_wait io_uring/io_uring.c:2527 [inline]
     __do_sys_io_uring_enter io_uring/io_uring.c:3439 [inline]
     __se_sys_io_uring_enter+0x204f/0x4ce0 io_uring/io_uring.c:3330
     __x64_sys_io_uring_enter+0x11f/0x1a0 io_uring/io_uring.c:3330
     x64_sys_call+0xce5/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:427
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    and it is correct, as it's never initialized upfront. Hence the first
    submission can end up using it uninitialized, if the recv wasn't
    successful and the networking stack didn't honor ->msg_get_inq being set
    and filling in the output value of ->msg_inq as requested.
    
    Set it to 0 upfront when it's allocated, just to silence this KMSAN
    warning. There's no side effect of using it uninitialized, it'll just
    potentially cause the next receive to use a recv value hint that's not
    accurate.
    
    Fixes: c6f32c7d9e09 ("io_uring/net: get rid of ->prep_async() for receive side")
    Reported-by: [email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/rw: fix downgraded mshot read [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Sat Dec 28 17:44:52 2024 +0000

    io_uring/rw: fix downgraded mshot read
    
    commit 38fc96a58ce40257aec79b32e9b310c86907c63c upstream.
    
    The io-wq path can downgrade a multishot request to oneshot mode,
    however io_read_mshot() doesn't handle that and would still post
    multiple CQEs. That's not allowed, because io_req_post_cqe() requires
    stricter context requirements.
    
    The described can only happen with pollable files that don't support
    FMODE_NOWAIT, which is an odd combination, so if even allowed it should
    be fairly rare.
    
    Cc: [email protected]
    Reported-by: chase xd <[email protected]>
    Fixes: bee1d5becdf5b ("io_uring: disable io-wq execution of multishot NOWAIT requests")
    Signed-off-by: Pavel Begunkov <[email protected]>
    Link: https://lore.kernel.org/r/c5c8c4a50a882fd581257b81bf52eee260ac29fd.1735407848.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
irqchip/gic: Correct declaration of *percpu_base pointer in union gic_base [+ + +]
Author: Uros Bizjak <[email protected]>
Date:   Fri Dec 13 15:57:53 2024 +0100

    irqchip/gic: Correct declaration of *percpu_base pointer in union gic_base
    
    [ Upstream commit a1855f1b7c33642c9f7a01991fb763342a312e9b ]
    
    percpu_base is used in various percpu functions that expect variable in
    __percpu address space. Correct the declaration of percpu_base to
    
    void __iomem * __percpu *percpu_base;
    
    to declare the variable as __percpu pointer.
    
    The patch fixes several sparse warnings:
    
    irq-gic.c:1172:44: warning: incorrect type in assignment (different address spaces)
    irq-gic.c:1172:44:    expected void [noderef] __percpu *[noderef] __iomem *percpu_base
    irq-gic.c:1172:44:    got void [noderef] __iomem *[noderef] __percpu *
    ...
    irq-gic.c:1231:43: warning: incorrect type in argument 1 (different address spaces)
    irq-gic.c:1231:43:    expected void [noderef] __percpu *__pdata
    irq-gic.c:1231:43:    got void [noderef] __percpu *[noderef] __iomem *percpu_base
    
    There were no changes in the resulting object files.
    
    Signed-off-by: Uros Bizjak <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Acked-by: Marc Zyngier <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
kbuild: pacman-pkg: provide versioned linux-api-headers package [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Fri Jan 3 19:20:23 2025 +0100

    kbuild: pacman-pkg: provide versioned linux-api-headers package
    
    [ Upstream commit 385443057f475e775fe1c66e77d4be9727f40973 ]
    
    The Arch Linux glibc package contains a versioned dependency on
    "linux-api-headers". If the linux-api-headers package provided by
    pacman-pkg does not specify an explicit version this dependency is not
    satisfied.
    Fix the dependency by providing an explicit version.
    
    Fixes: c8578539deba ("kbuild: add script and target to generate pacman package")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Reviewed-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kcov: mark in_softirq_really() as __always_inline [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Dec 17 08:18:10 2024 +0100

    kcov: mark in_softirq_really() as __always_inline
    
    commit cb0ca08b326aa03f87fe94bb91872ce8d2ef1ed8 upstream.
    
    If gcc decides not to inline in_softirq_really(), objtool warns about a
    function call with UACCESS enabled:
    
    kernel/kcov.o: warning: objtool: __sanitizer_cov_trace_pc+0x1e: call to in_softirq_really() with UACCESS enabled
    kernel/kcov.o: warning: objtool: check_kcov_mode+0x11: call to in_softirq_really() with UACCESS enabled
    
    Mark this as __always_inline to avoid the problem.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 7d4df2dad312 ("kcov: properly check for softirq context")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Marco Elver <[email protected]>
    Cc: Aleksandr Nogikh <[email protected]>
    Cc: Andrey Konovalov <[email protected]>
    Cc: Dmitry Vyukov <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ksmbd: retry iterate_dir in smb2_query_dir [+ + +]
Author: Hobin Woo <[email protected]>
Date:   Thu Dec 5 11:31:19 2024 +0900

    ksmbd: retry iterate_dir in smb2_query_dir
    
    [ Upstream commit 2b904d61a97e8ba79e3bc216ba290fd7e1d85028 ]
    
    Some file systems do not ensure that the single call of iterate_dir
    reaches the end of the directory. For example, FUSE fetches entries from
    a daemon using 4KB buffer and stops fetching if entries exceed the
    buffer. And then an actor of caller, KSMBD, is used to fill the entries
    from the buffer.
    Thus, pattern searching on FUSE, files located after the 4KB could not
    be found and STATUS_NO_SUCH_FILE was returned.
    
    Signed-off-by: Hobin Woo <[email protected]>
    Reviewed-by: Sungjong Seo <[email protected]>
    Reviewed-by: Namjae Jeon <[email protected]>
    Tested-by: Yoonho Shin <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ksmbd: set ATTR_CTIME flags when setting mtime [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Fri Dec 6 17:25:25 2024 +0900

    ksmbd: set ATTR_CTIME flags when setting mtime
    
    [ Upstream commit 21e46a79bbe6c4e1aa73b3ed998130f2ff07b128 ]
    
    David reported that the new warning from setattr_copy_mgtime is coming
    like the following.
    
    [  113.215316] ------------[ cut here ]------------
    [  113.215974] WARNING: CPU: 1 PID: 31 at fs/attr.c:300 setattr_copy+0x1ee/0x200
    [  113.219192] CPU: 1 UID: 0 PID: 31 Comm: kworker/1:1 Not tainted 6.13.0-rc1+ #234
    [  113.220127] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
    [  113.221530] Workqueue: ksmbd-io handle_ksmbd_work [ksmbd]
    [  113.222220] RIP: 0010:setattr_copy+0x1ee/0x200
    [  113.222833] Code: 24 28 49 8b 44 24 30 48 89 53 58 89 43 6c 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc 48 89 df e8 77 d6 ff ff e9 cd fe ff ff <0f> 0b e9 be fe ff ff 66 0
    [  113.225110] RSP: 0018:ffffaf218010fb68 EFLAGS: 00010202
    [  113.225765] RAX: 0000000000000120 RBX: ffffa446815f8568 RCX: 0000000000000003
    [  113.226667] RDX: ffffaf218010fd38 RSI: ffffa446815f8568 RDI: ffffffff94eb03a0
    [  113.227531] RBP: ffffaf218010fb90 R08: 0000001a251e217d R09: 00000000675259fa
    [  113.228426] R10: 0000000002ba8a6d R11: ffffa4468196c7a8 R12: ffffaf218010fd38
    [  113.229304] R13: 0000000000000120 R14: ffffffff94eb03a0 R15: 0000000000000000
    [  113.230210] FS:  0000000000000000(0000) GS:ffffa44739d00000(0000) knlGS:0000000000000000
    [  113.231215] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  113.232055] CR2: 00007efe0053d27e CR3: 000000000331a000 CR4: 00000000000006b0
    [  113.232926] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  113.233812] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  113.234797] Call Trace:
    [  113.235116]  <TASK>
    [  113.235393]  ? __warn+0x73/0xd0
    [  113.235802]  ? setattr_copy+0x1ee/0x200
    [  113.236299]  ? report_bug+0xf3/0x1e0
    [  113.236757]  ? handle_bug+0x4d/0x90
    [  113.237202]  ? exc_invalid_op+0x13/0x60
    [  113.237689]  ? asm_exc_invalid_op+0x16/0x20
    [  113.238185]  ? setattr_copy+0x1ee/0x200
    [  113.238692]  btrfs_setattr+0x80/0x820 [btrfs]
    [  113.239285]  ? get_stack_info_noinstr+0x12/0xf0
    [  113.239857]  ? __module_address+0x22/0xa0
    [  113.240368]  ? handle_ksmbd_work+0x6e/0x460 [ksmbd]
    [  113.240993]  ? __module_text_address+0x9/0x50
    [  113.241545]  ? __module_address+0x22/0xa0
    [  113.242033]  ? unwind_next_frame+0x10e/0x920
    [  113.242600]  ? __pfx_stack_trace_consume_entry+0x10/0x10
    [  113.243268]  notify_change+0x2c2/0x4e0
    [  113.243746]  ? stack_depot_save_flags+0x27/0x730
    [  113.244339]  ? set_file_basic_info+0x130/0x2b0 [ksmbd]
    [  113.244993]  set_file_basic_info+0x130/0x2b0 [ksmbd]
    [  113.245613]  ? process_scheduled_works+0xbe/0x310
    [  113.246181]  ? worker_thread+0x100/0x240
    [  113.246696]  ? kthread+0xc8/0x100
    [  113.247126]  ? ret_from_fork+0x2b/0x40
    [  113.247606]  ? ret_from_fork_asm+0x1a/0x30
    [  113.248132]  smb2_set_info+0x63f/0xa70 [ksmbd]
    
    ksmbd is trying to set the atime and mtime via notify_change without also
    setting the ctime. so This patch add ATTR_CTIME flags when setting mtime
    to avoid a warning.
    
    Reported-by: David Disseldorp <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.12.9 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Jan 9 13:33:55 2025 +0100

    Linux 6.12.9
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Ronald Warsow <[email protected]>
    Tested-by: Pavel Machek (CIP) <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Justin M. Forbes <[email protected]>
    Tested-by: SeongJae Park <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Luna Jernberg <[email protected]>
    Tested-by: Christian Heusel <[email protected]>
    Tested-by: Takeshi Ogasawara <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Harshit Mogalapalli <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: kernelci.org bot <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
maple_tree: reload mas before the second call for mas_empty_area [+ + +]
Author: Yang Erkun <[email protected]>
Date:   Sat Dec 14 17:30:05 2024 +0800

    maple_tree: reload mas before the second call for mas_empty_area
    
    commit 1fd8bc7cd889bd73d07a83cb32d674ac68f99153 upstream.
    
    Change the LONG_MAX in simple_offset_add to 1024, and do latter:
    
    [root@fedora ~]# mkdir /tmp/dir
    [root@fedora ~]# for i in {1..1024}; do touch /tmp/dir/$i; done
    touch: cannot touch '/tmp/dir/1024': Device or resource busy
    [root@fedora ~]# rm /tmp/dir/123
    [root@fedora ~]# touch /tmp/dir/1024
    [root@fedora ~]# rm /tmp/dir/100
    [root@fedora ~]# touch /tmp/dir/1025
    touch: cannot touch '/tmp/dir/1025': Device or resource busy
    
    After we delete file 100, actually this is a empty entry, but the latter
    create failed unexpected.
    
    mas_alloc_cyclic has two chance to find empty entry.  First find the entry
    with range range_lo and range_hi, if no empty entry exist, and range_lo >
    min, retry find with range min and range_hi.  However, the first call
    mas_empty_area may mark mas as EBUSY, and the second call for
    mas_empty_area will return false directly.  Fix this by reload mas before
    second call for mas_empty_area.
    
    [[email protected]: fix mas_alloc_cyclic() second search]
      Link: https://lore.kernel.org/all/[email protected]/
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 9b6713cc7522 ("maple_tree: Add mtree_alloc_cyclic()")
    Signed-off-by: Yang Erkun <[email protected]>
    Signed-off-by: Liam R. Howlett <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Chuck Lever <[email protected]> says:
    Cc: Liam R. Howlett <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/damon/core: fix ignored quota goals and filters of newly committed schemes [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Sun Dec 22 15:12:22 2024 -0800

    mm/damon/core: fix ignored quota goals and filters of newly committed schemes
    
    commit 7d390b53067ef745e2d9bee5a9683df4c96b80a0 upstream.
    
    damon_commit_schemes() ignores quota goals and filters of the newly
    committed schemes.  This makes users confused about the behaviors.
    Correctly handle those inputs.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 9cb3d0b9dfce ("mm/damon/core: implement DAMON context commit function")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm/damon/core: fix new damon_target objects leaks on damon_commit_targets() [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Sun Dec 22 15:12:21 2024 -0800

    mm/damon/core: fix new damon_target objects leaks on damon_commit_targets()
    
    commit 8debfc5b1aa569d3d2ac836af2553da037611c61 upstream.
    
    Patch series "mm/damon/core: fix memory leaks and ignored inputs from
    damon_commit_ctx()".
    
    Due to two bugs in damon_commit_targets() and damon_commit_schemes(),
    which are called from damon_commit_ctx(), some user inputs can be ignored,
    and some mmeory objects can be leaked.  Fix those.
    
    Note that only DAMON sysfs interface users are affected.  Other DAMON core
    API user modules that more focused more on simple and dedicated production
    usages, including DAMON_RECLAIM and DAMON_LRU_SORT are not using the buggy
    function in the way, so not affected.
    
    
    This patch (of 2):
    
    When new DAMON targets are added via damon_commit_targets(), the newly
    created targets are not deallocated when updating the internal data
    (damon_commit_target()) is failed.  Worse yet, even if the setup is
    successfully done, the new target is not linked to the context.  Hence,
    the new targets are always leaked regardless of the internal data setup
    failure.  Fix the leaks.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 9cb3d0b9dfce ("mm/damon/core: implement DAMON context commit function")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/kmemleak: fix sleeping function called from invalid context at print message [+ + +]
Author: Alessandro Carminati <[email protected]>
Date:   Tue Dec 17 14:20:33 2024 +0000

    mm/kmemleak: fix sleeping function called from invalid context at print message
    
    commit cddc76b165161a02ff14c4d84d0f5266d9d32b9e upstream.
    
    Address a bug in the kernel that triggers a "sleeping function called from
    invalid context" warning when /sys/kernel/debug/kmemleak is printed under
    specific conditions:
    - CONFIG_PREEMPT_RT=y
    - Set SELinux as the LSM for the system
    - Set kptr_restrict to 1
    - kmemleak buffer contains at least one item
    
    BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
    in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 136, name: cat
    preempt_count: 1, expected: 0
    RCU nest depth: 2, expected: 2
    6 locks held by cat/136:
     #0: ffff32e64bcbf950 (&p->lock){+.+.}-{3:3}, at: seq_read_iter+0xb8/0xe30
     #1: ffffafe6aaa9dea0 (scan_mutex){+.+.}-{3:3}, at: kmemleak_seq_start+0x34/0x128
     #3: ffff32e6546b1cd0 (&object->lock){....}-{2:2}, at: kmemleak_seq_show+0x3c/0x1e0
     #4: ffffafe6aa8d8560 (rcu_read_lock){....}-{1:2}, at: has_ns_capability_noaudit+0x8/0x1b0
     #5: ffffafe6aabbc0f8 (notif_lock){+.+.}-{2:2}, at: avc_compute_av+0xc4/0x3d0
    irq event stamp: 136660
    hardirqs last  enabled at (136659): [<ffffafe6a80fd7a0>] _raw_spin_unlock_irqrestore+0xa8/0xd8
    hardirqs last disabled at (136660): [<ffffafe6a80fd85c>] _raw_spin_lock_irqsave+0x8c/0xb0
    softirqs last  enabled at (0): [<ffffafe6a5d50b28>] copy_process+0x11d8/0x3df8
    softirqs last disabled at (0): [<0000000000000000>] 0x0
    Preemption disabled at:
    [<ffffafe6a6598a4c>] kmemleak_seq_show+0x3c/0x1e0
    CPU: 1 UID: 0 PID: 136 Comm: cat Tainted: G            E      6.11.0-rt7+ #34
    Tainted: [E]=UNSIGNED_MODULE
    Hardware name: linux,dummy-virt (DT)
    Call trace:
     dump_backtrace+0xa0/0x128
     show_stack+0x1c/0x30
     dump_stack_lvl+0xe8/0x198
     dump_stack+0x18/0x20
     rt_spin_lock+0x8c/0x1a8
     avc_perm_nonode+0xa0/0x150
     cred_has_capability.isra.0+0x118/0x218
     selinux_capable+0x50/0x80
     security_capable+0x7c/0xd0
     has_ns_capability_noaudit+0x94/0x1b0
     has_capability_noaudit+0x20/0x30
     restricted_pointer+0x21c/0x4b0
     pointer+0x298/0x760
     vsnprintf+0x330/0xf70
     seq_printf+0x178/0x218
     print_unreferenced+0x1a4/0x2d0
     kmemleak_seq_show+0xd0/0x1e0
     seq_read_iter+0x354/0xe30
     seq_read+0x250/0x378
     full_proxy_read+0xd8/0x148
     vfs_read+0x190/0x918
     ksys_read+0xf0/0x1e0
     __arm64_sys_read+0x70/0xa8
     invoke_syscall.constprop.0+0xd4/0x1d8
     el0_svc+0x50/0x158
     el0t_64_sync+0x17c/0x180
    
    %pS and %pK, in the same back trace line, are redundant, and %pS can void
    %pK service in certain contexts.
    
    %pS alone already provides the necessary information, and if it cannot
    resolve the symbol, it falls back to printing the raw address voiding
    the original intent behind the %pK.
    
    Additionally, %pK requires a privilege check CAP_SYSLOG enforced through
    the LSM, which can trigger a "sleeping function called from invalid
    context" warning under RT_PREEMPT kernels when the check occurs in an
    atomic context. This issue may also affect other LSMs.
    
    This change avoids the unnecessary privilege check and resolves the
    sleeping function warning without any loss of information.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 3a6f33d86baa ("mm/kmemleak: use %pK to display kernel pointers in backtrace")
    Signed-off-by: Alessandro Carminati <[email protected]>
    Acked-by: Sebastian Andrzej Siewior <[email protected]>
    Acked-by: Catalin Marinas <[email protected]>
    Cc: Clément Léger <[email protected]>
    Cc: Alessandro Carminati <[email protected]>
    Cc: Eric Chanudet <[email protected]>
    Cc: Gabriele Paoloni <[email protected]>
    Cc: Juri Lelli <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    Cc: Thomas Weißschuh <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/readahead: fix large folio support in async readahead [+ + +]
Author: Yafang Shao <[email protected]>
Date:   Fri Dec 6 16:30:25 2024 +0800

    mm/readahead: fix large folio support in async readahead
    
    commit 158cdce87c8c172787063998ad5dd3e2f658b963 upstream.
    
    When testing large folio support with XFS on our servers, we observed that
    only a few large folios are mapped when reading large files via mmap.
    After a thorough analysis, I identified it was caused by the
    `/sys/block/*/queue/read_ahead_kb` setting.  On our test servers, this
    parameter is set to 128KB.  After I tune it to 2MB, the large folio can
    work as expected.  However, I believe the large folio behavior should not
    be dependent on the value of read_ahead_kb.  It would be more robust if
    the kernel can automatically adopt to it.
    
    With /sys/block/*/queue/read_ahead_kb set to 128KB and performing a
    sequential read on a 1GB file using MADV_HUGEPAGE, the differences in
    /proc/meminfo are as follows:
    
    - before this patch
      FileHugePages:     18432 kB
      FilePmdMapped:      4096 kB
    
    - after this patch
      FileHugePages:   1067008 kB
      FilePmdMapped:   1048576 kB
    
    This shows that after applying the patch, the entire 1GB file is mapped to
    huge pages.  The stable list is CCed, as without this patch, large folios
    don't function optimally in the readahead path.
    
    It's worth noting that if read_ahead_kb is set to a larger value that
    isn't aligned with huge page sizes (e.g., 4MB + 128KB), it may still fail
    to map to hugepages.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 4687fdbb805a ("mm/filemap: Support VM_HUGEPAGE for file mappings")
    Signed-off-by: Yafang Shao <[email protected]>
    Tested-by: kernel test robot <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: hugetlb: independent PMD page table shared count [+ + +]
Author: Liu Shixin <[email protected]>
Date:   Mon Dec 16 15:11:47 2024 +0800

    mm: hugetlb: independent PMD page table shared count
    
    commit 59d9094df3d79443937add8700b2ef1a866b1081 upstream.
    
    The folio refcount may be increased unexpectly through try_get_folio() by
    caller such as split_huge_pages.  In huge_pmd_unshare(), we use refcount
    to check whether a pmd page table is shared.  The check is incorrect if
    the refcount is increased by the above caller, and this can cause the page
    table leaked:
    
     BUG: Bad page state in process sh  pfn:109324
     page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x66 pfn:0x109324
     flags: 0x17ffff800000000(node=0|zone=2|lastcpupid=0xfffff)
     page_type: f2(table)
     raw: 017ffff800000000 0000000000000000 0000000000000000 0000000000000000
     raw: 0000000000000066 0000000000000000 00000000f2000000 0000000000000000
     page dumped because: nonzero mapcount
     ...
     CPU: 31 UID: 0 PID: 7515 Comm: sh Kdump: loaded Tainted: G    B              6.13.0-rc2master+ #7
     Tainted: [B]=BAD_PAGE
     Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
     Call trace:
      show_stack+0x20/0x38 (C)
      dump_stack_lvl+0x80/0xf8
      dump_stack+0x18/0x28
      bad_page+0x8c/0x130
      free_page_is_bad_report+0xa4/0xb0
      free_unref_page+0x3cc/0x620
      __folio_put+0xf4/0x158
      split_huge_pages_all+0x1e0/0x3e8
      split_huge_pages_write+0x25c/0x2d8
      full_proxy_write+0x64/0xd8
      vfs_write+0xcc/0x280
      ksys_write+0x70/0x110
      __arm64_sys_write+0x24/0x38
      invoke_syscall+0x50/0x120
      el0_svc_common.constprop.0+0xc8/0xf0
      do_el0_svc+0x24/0x38
      el0_svc+0x34/0x128
      el0t_64_sync_handler+0xc8/0xd0
      el0t_64_sync+0x190/0x198
    
    The issue may be triggered by damon, offline_page, page_idle, etc, which
    will increase the refcount of page table.
    
    1. The page table itself will be discarded after reporting the
       "nonzero mapcount".
    
    2. The HugeTLB page mapped by the page table miss freeing since we
       treat the page table as shared and a shared page table will not be
       unmapped.
    
    Fix it by introducing independent PMD page table shared count.  As
    described by comment, pt_index/pt_mm/pt_frag_refcount are used for s390
    gmap, x86 pgds and powerpc, pt_share_count is used for x86/arm64/riscv
    pmds, so we can reuse the field as pt_share_count.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 39dde65c9940 ("[PATCH] shared page table for hugetlb page")
    Signed-off-by: Liu Shixin <[email protected]>
    Cc: Kefeng Wang <[email protected]>
    Cc: Ken Chen <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Nanyong Sun <[email protected]>
    Cc: Jane Chu <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: reinstate ability to map write-sealed memfd mappings read-only [+ + +]
Author: Lorenzo Stoakes <[email protected]>
Date:   Thu Nov 28 15:06:17 2024 +0000

    mm: reinstate ability to map write-sealed memfd mappings read-only
    
    commit 8ec396d05d1b737c87311fb7311f753b02c2a6b1 upstream.
    
    Patch series "mm: reinstate ability to map write-sealed memfd mappings
    read-only".
    
    In commit 158978945f31 ("mm: perform the mapping_map_writable() check
    after call_mmap()") (and preceding changes in the same series) it became
    possible to mmap() F_SEAL_WRITE sealed memfd mappings read-only.
    
    Commit 5de195060b2e ("mm: resolve faulty mmap_region() error path
    behaviour") unintentionally undid this logic by moving the
    mapping_map_writable() check before the shmem_mmap() hook is invoked,
    thereby regressing this change.
    
    This series reworks how we both permit write-sealed mappings being mapped
    read-only and disallow mprotect() from undoing the write-seal, fixing this
    regression.
    
    We also add a regression test to ensure that we do not accidentally
    regress this in future.
    
    Thanks to Julian Orth for reporting this regression.
    
    
    This patch (of 2):
    
    In commit 158978945f31 ("mm: perform the mapping_map_writable() check
    after call_mmap()") (and preceding changes in the same series) it became
    possible to mmap() F_SEAL_WRITE sealed memfd mappings read-only.
    
    This was previously unnecessarily disallowed, despite the man page
    documentation indicating that it would be, thereby limiting the usefulness
    of F_SEAL_WRITE logic.
    
    We fixed this by adapting logic that existed for the F_SEAL_FUTURE_WRITE
    seal (one which disallows future writes to the memfd) to also be used for
    F_SEAL_WRITE.
    
    For background - the F_SEAL_FUTURE_WRITE seal clears VM_MAYWRITE for a
    read-only mapping to disallow mprotect() from overriding the seal - an
    operation performed by seal_check_write(), invoked from shmem_mmap(), the
    f_op->mmap() hook used by shmem mappings.
    
    By extending this to F_SEAL_WRITE and critically - checking
    mapping_map_writable() to determine if we may map the memfd AFTER we
    invoke shmem_mmap() - the desired logic becomes possible.  This is because
    mapping_map_writable() explicitly checks for VM_MAYWRITE, which we will
    have cleared.
    
    Commit 5de195060b2e ("mm: resolve faulty mmap_region() error path
    behaviour") unintentionally undid this logic by moving the
    mapping_map_writable() check before the shmem_mmap() hook is invoked,
    thereby regressing this change.
    
    We reinstate this functionality by moving the check out of shmem_mmap()
    and instead performing it in do_mmap() at the point at which VMA flags are
    being determined, which seems in any case to be a more appropriate place
    in which to make this determination.
    
    In order to achieve this we rework memfd seal logic to allow us access to
    this information using existing logic and eliminate the clearing of
    VM_MAYWRITE from seal_check_write() which we are performing in do_mmap()
    instead.
    
    Link: https://lkml.kernel.org/r/99fc35d2c62bd2e05571cf60d9f8b843c56069e0.1732804776.git.lorenzo.stoakes@oracle.com
    Fixes: 5de195060b2e ("mm: resolve faulty mmap_region() error path behaviour")
    Signed-off-by: Lorenzo Stoakes <[email protected]>
    Reported-by: Julian Orth <[email protected]>
    Closes: https://lore.kernel.org/all/CAHijbEUMhvJTN9Xw1GmbM266FXXv=U7s4L_Jem5x3AaPZxrYpQ@mail.gmail.com/
    Cc: Jann Horn <[email protected]>
    Cc: Liam R. Howlett <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Shuah Khan <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: shmem: fix incorrect index alignment for within_size policy [+ + +]
Author: Baolin Wang <[email protected]>
Date:   Thu Dec 19 15:30:08 2024 +0800

    mm: shmem: fix incorrect index alignment for within_size policy
    
    commit d0e6983a6d1719738cf8d13982a68094f0a1872a upstream.
    
    With enabling the shmem per-size within_size policy, using an incorrect
    'order' size to round_up() the index can lead to incorrect i_size checks,
    resulting in an inappropriate large orders being returned.
    
    Changing to use '1 << order' to round_up() the index to fix this issue.
    Additionally, adding an 'aligned_index' variable to avoid affecting the
    index checks.
    
    Link: https://lkml.kernel.org/r/77d8ef76a7d3d646e9225e9af88a76549a68aab1.1734593154.git.baolin.wang@linux.alibaba.com
    Fixes: e7a2ab7b3bb5 ("mm: shmem: add mTHP support for anonymous shmem")
    Signed-off-by: Baolin Wang <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Hugh Dickins <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: shmem: fix the update of 'shmem_falloc->nr_unswapped' [+ + +]
Author: Baolin Wang <[email protected]>
Date:   Thu Dec 19 15:30:09 2024 +0800

    mm: shmem: fix the update of 'shmem_falloc->nr_unswapped'
    
    commit d77b90d2b2642655b5f60953c36ad887257e1802 upstream.
    
    The 'shmem_falloc->nr_unswapped' is used to record how many writepage
    refused to swap out because fallocate() is allocating, but after shmem
    supports large folio swap out, the update of 'shmem_falloc->nr_unswapped'
    does not use the correct number of pages in the large folio, which may
    lead to fallocate() not exiting as soon as possible.
    
    Anyway, this is found through code inspection, and I am not sure whether
    it would actually cause serious issues.
    
    Link: https://lkml.kernel.org/r/f66a0119d0564c2c37c84f045835b870d1b2196f.1734593154.git.baolin.wang@linux.alibaba.com
    Fixes: 809bc86517cc ("mm: shmem: support large folio swap out")
    Signed-off-by: Baolin Wang <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Hugh Dickins <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: vmscan: account for free pages to prevent infinite Loop in throttle_direct_reclaim() [+ + +]
Author: Seiji Nishikawa <[email protected]>
Date:   Sun Dec 1 01:12:34 2024 +0900

    mm: vmscan: account for free pages to prevent infinite Loop in throttle_direct_reclaim()
    
    commit 6aaced5abd32e2a57cd94fd64f824514d0361da8 upstream.
    
    The task sometimes continues looping in throttle_direct_reclaim() because
    allow_direct_reclaim(pgdat) keeps returning false.
    
     #0 [ffff80002cb6f8d0] __switch_to at ffff8000080095ac
     #1 [ffff80002cb6f900] __schedule at ffff800008abbd1c
     #2 [ffff80002cb6f990] schedule at ffff800008abc50c
     #3 [ffff80002cb6f9b0] throttle_direct_reclaim at ffff800008273550
     #4 [ffff80002cb6fa20] try_to_free_pages at ffff800008277b68
     #5 [ffff80002cb6fae0] __alloc_pages_nodemask at ffff8000082c4660
     #6 [ffff80002cb6fc50] alloc_pages_vma at ffff8000082e4a98
     #7 [ffff80002cb6fca0] do_anonymous_page at ffff80000829f5a8
     #8 [ffff80002cb6fce0] __handle_mm_fault at ffff8000082a5974
     #9 [ffff80002cb6fd90] handle_mm_fault at ffff8000082a5bd4
    
    At this point, the pgdat contains the following two zones:
    
            NODE: 4  ZONE: 0  ADDR: ffff00817fffe540  NAME: "DMA32"
              SIZE: 20480  MIN/LOW/HIGH: 11/28/45
              VM_STAT:
                    NR_FREE_PAGES: 359
            NR_ZONE_INACTIVE_ANON: 18813
              NR_ZONE_ACTIVE_ANON: 0
            NR_ZONE_INACTIVE_FILE: 50
              NR_ZONE_ACTIVE_FILE: 0
              NR_ZONE_UNEVICTABLE: 0
            NR_ZONE_WRITE_PENDING: 0
                         NR_MLOCK: 0
                        NR_BOUNCE: 0
                       NR_ZSPAGES: 0
                NR_FREE_CMA_PAGES: 0
    
            NODE: 4  ZONE: 1  ADDR: ffff00817fffec00  NAME: "Normal"
              SIZE: 8454144  PRESENT: 98304  MIN/LOW/HIGH: 68/166/264
              VM_STAT:
                    NR_FREE_PAGES: 146
            NR_ZONE_INACTIVE_ANON: 94668
              NR_ZONE_ACTIVE_ANON: 3
            NR_ZONE_INACTIVE_FILE: 735
              NR_ZONE_ACTIVE_FILE: 78
              NR_ZONE_UNEVICTABLE: 0
            NR_ZONE_WRITE_PENDING: 0
                         NR_MLOCK: 0
                        NR_BOUNCE: 0
                       NR_ZSPAGES: 0
                NR_FREE_CMA_PAGES: 0
    
    In allow_direct_reclaim(), while processing ZONE_DMA32, the sum of
    inactive/active file-backed pages calculated in zone_reclaimable_pages()
    based on the result of zone_page_state_snapshot() is zero.
    
    Additionally, since this system lacks swap, the calculation of inactive/
    active anonymous pages is skipped.
    
            crash> p nr_swap_pages
            nr_swap_pages = $1937 = {
              counter = 0
            }
    
    As a result, ZONE_DMA32 is deemed unreclaimable and skipped, moving on to
    the processing of the next zone, ZONE_NORMAL, despite ZONE_DMA32 having
    free pages significantly exceeding the high watermark.
    
    The problem is that the pgdat->kswapd_failures hasn't been incremented.
    
            crash> px ((struct pglist_data *) 0xffff00817fffe540)->kswapd_failures
            $1935 = 0x0
    
    This is because the node deemed balanced.  The node balancing logic in
    balance_pgdat() evaluates all zones collectively.  If one or more zones
    (e.g., ZONE_DMA32) have enough free pages to meet their watermarks, the
    entire node is deemed balanced.  This causes balance_pgdat() to exit early
    before incrementing the kswapd_failures, as it considers the overall
    memory state acceptable, even though some zones (like ZONE_NORMAL) remain
    under significant pressure.
    
    
    The patch ensures that zone_reclaimable_pages() includes free pages
    (NR_FREE_PAGES) in its calculation when no other reclaimable pages are
    available (e.g., file-backed or anonymous pages).  This change prevents
    zones like ZONE_DMA32, which have sufficient free pages, from being
    mistakenly deemed unreclaimable.  By doing so, the patch ensures proper
    node balancing, avoids masking pressure on other zones like ZONE_NORMAL,
    and prevents infinite loops in throttle_direct_reclaim() caused by
    allow_direct_reclaim(pgdat) repeatedly returning false.
    
    
    The kernel hangs due to a task stuck in throttle_direct_reclaim(), caused
    by a node being incorrectly deemed balanced despite pressure in certain
    zones, such as ZONE_NORMAL.  This issue arises from
    zone_reclaimable_pages() returning 0 for zones without reclaimable file-
    backed or anonymous pages, causing zones like ZONE_DMA32 with sufficient
    free pages to be skipped.
    
    The lack of swap or reclaimable pages results in ZONE_DMA32 being ignored
    during reclaim, masking pressure in other zones.  Consequently,
    pgdat->kswapd_failures remains 0 in balance_pgdat(), preventing fallback
    mechanisms in allow_direct_reclaim() from being triggered, leading to an
    infinite loop in throttle_direct_reclaim().
    
    This patch modifies zone_reclaimable_pages() to account for free pages
    (NR_FREE_PAGES) when no other reclaimable pages exist.  This ensures zones
    with sufficient free pages are not skipped, enabling proper balancing and
    reclaim behavior.
    
    [[email protected]: coding-style cleanups]
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 5a1c84b404a7 ("mm: remove reclaim and compaction retry approximations")
    Signed-off-by: Seiji Nishikawa <[email protected]>
    Cc: Mel Gorman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mmc: sdhci-msm: fix crypto key eviction [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Thu Dec 12 20:19:48 2024 -0800

    mmc: sdhci-msm: fix crypto key eviction
    
    commit 8d90a86ed053226a297ce062f4d9f4f521e05c4c upstream.
    
    Commit c7eed31e235c ("mmc: sdhci-msm: Switch to the new ICE API")
    introduced an incorrect check of the algorithm ID into the key eviction
    path, and thus qcom_ice_evict_key() is no longer ever called.  Fix it.
    
    Fixes: c7eed31e235c ("mmc: sdhci-msm: Switch to the new ICE API")
    Cc: [email protected]
    Cc: Abel Vesa <[email protected]>
    Signed-off-by: Eric Biggers <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
modpost: fix the missed iteration for the max bit in do_input() [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Thu Dec 26 00:33:35 2024 +0900

    modpost: fix the missed iteration for the max bit in do_input()
    
    [ Upstream commit bf36b4bf1b9a7a0015610e2f038ee84ddb085de2 ]
    
    This loop should iterate over the range from 'min' to 'max' inclusively.
    The last interation is missed.
    
    Fixes: 1d8f430c15b3 ("[PATCH] Input: add modalias support")
    Signed-off-by: Masahiro Yamada <[email protected]>
    Tested-by: John Paul Adrian Glaubitz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mptcp: don't always assume copied data in mptcp_cleanup_rbuf() [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Mon Dec 30 19:12:31 2024 +0100

    mptcp: don't always assume copied data in mptcp_cleanup_rbuf()
    
    commit 551844f26da2a9f76c0a698baaffa631d1178645 upstream.
    
    Under some corner cases the MPTCP protocol can end-up invoking
    mptcp_cleanup_rbuf() when no data has been copied, but such helper
    assumes the opposite condition.
    
    Explicitly drop such assumption and performs the costly call only
    when strictly needed - before releasing the msk socket lock.
    
    Fixes: fd8976790a6c ("mptcp: be careful on MPTCP-level ack.")
    Cc: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: fix recvbuffer adjust on sleeping rcvmsg [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Mon Dec 30 19:12:30 2024 +0100

    mptcp: fix recvbuffer adjust on sleeping rcvmsg
    
    commit 449e6912a2522af672e99992e1201a454910864e upstream.
    
    If the recvmsg() blocks after receiving some data - i.e. due to
    SO_RCVLOWAT - the MPTCP code will attempt multiple times to
    adjust the receive buffer size, wrongly accounting every time the
    cumulative of received data - instead of accounting only for the
    delta.
    
    Address the issue moving mptcp_rcv_space_adjust just after the
    data reception and passing it only the just received bytes.
    
    This also removes an unneeded difference between the TCP and MPTCP
    RX code path implementation.
    
    Fixes: 581302298524 ("mptcp: error out earlier on disconnect")
    Cc: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mptcp: fix TCP options overflow. [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Sat Dec 21 09:51:46 2024 +0100

    mptcp: fix TCP options overflow.
    
    commit cbb26f7d8451fe56ccac802c6db48d16240feebd upstream.
    
    Syzbot reported the following splat:
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
    CPU: 1 UID: 0 PID: 5836 Comm: sshd Not tainted 6.13.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
    RIP: 0010:_compound_head include/linux/page-flags.h:242 [inline]
    RIP: 0010:put_page+0x23/0x260 include/linux/mm.h:1552
    Code: 90 90 90 90 90 90 90 55 41 57 41 56 53 49 89 fe 48 bd 00 00 00 00 00 fc ff df e8 f8 5e 12 f8 49 8d 5e 08 48 89 d8 48 c1 e8 03 <80> 3c 28 00 74 08 48 89 df e8 8f c7 78 f8 48 8b 1b 48 89 de 48 83
    RSP: 0000:ffffc90003916c90 EFLAGS: 00010202
    RAX: 0000000000000001 RBX: 0000000000000008 RCX: ffff888030458000
    RDX: 0000000000000100 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: dffffc0000000000 R08: ffffffff898ca81d R09: 1ffff110054414ac
    R10: dffffc0000000000 R11: ffffed10054414ad R12: 0000000000000007
    R13: ffff88802a20a542 R14: 0000000000000000 R15: 0000000000000000
    FS:  00007f34f496e800(0000) GS:ffff8880b8700000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f9d6ec9ec28 CR3: 000000004d260000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     skb_page_unref include/linux/skbuff_ref.h:43 [inline]
     __skb_frag_unref include/linux/skbuff_ref.h:56 [inline]
     skb_release_data+0x483/0x8a0 net/core/skbuff.c:1119
     skb_release_all net/core/skbuff.c:1190 [inline]
     __kfree_skb+0x55/0x70 net/core/skbuff.c:1204
     tcp_clean_rtx_queue net/ipv4/tcp_input.c:3436 [inline]
     tcp_ack+0x2442/0x6bc0 net/ipv4/tcp_input.c:4032
     tcp_rcv_state_process+0x8eb/0x44e0 net/ipv4/tcp_input.c:6805
     tcp_v4_do_rcv+0x77d/0xc70 net/ipv4/tcp_ipv4.c:1939
     tcp_v4_rcv+0x2dc0/0x37f0 net/ipv4/tcp_ipv4.c:2351
     ip_protocol_deliver_rcu+0x22e/0x440 net/ipv4/ip_input.c:205
     ip_local_deliver_finish+0x341/0x5f0 net/ipv4/ip_input.c:233
     NF_HOOK+0x3a4/0x450 include/linux/netfilter.h:314
     NF_HOOK+0x3a4/0x450 include/linux/netfilter.h:314
     __netif_receive_skb_one_core net/core/dev.c:5672 [inline]
     __netif_receive_skb+0x2bf/0x650 net/core/dev.c:5785
     process_backlog+0x662/0x15b0 net/core/dev.c:6117
     __napi_poll+0xcb/0x490 net/core/dev.c:6883
     napi_poll net/core/dev.c:6952 [inline]
     net_rx_action+0x89b/0x1240 net/core/dev.c:7074
     handle_softirqs+0x2d4/0x9b0 kernel/softirq.c:561
     __do_softirq kernel/softirq.c:595 [inline]
     invoke_softirq kernel/softirq.c:435 [inline]
     __irq_exit_rcu+0xf7/0x220 kernel/softirq.c:662
     irq_exit_rcu+0x9/0x30 kernel/softirq.c:678
     instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline]
     sysvec_apic_timer_interrupt+0x57/0xc0 arch/x86/kernel/apic/apic.c:1049
     asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
    RIP: 0033:0x7f34f4519ad5
    Code: 85 d2 74 0d 0f 10 02 48 8d 54 24 20 0f 11 44 24 20 64 8b 04 25 18 00 00 00 85 c0 75 27 41 b8 08 00 00 00 b8 0f 01 00 00 0f 05 <48> 3d 00 f0 ff ff 76 75 48 8b 15 24 73 0d 00 f7 d8 64 89 02 48 83
    RSP: 002b:00007ffec5b32ce0 EFLAGS: 00000246
    RAX: 0000000000000001 RBX: 00000000000668a0 RCX: 00007f34f4519ad5
    RDX: 00007ffec5b32d00 RSI: 0000000000000004 RDI: 0000564f4bc6cae0
    RBP: 0000564f4bc6b5a0 R08: 0000000000000008 R09: 0000000000000000
    R10: 00007ffec5b32de8 R11: 0000000000000246 R12: 0000564f48ea8aa4
    R13: 0000000000000001 R14: 0000564f48ea93e8 R15: 00007ffec5b32d68
     </TASK>
    
    Eric noted a probable shinfo->nr_frags corruption, which indeed
    occurs.
    
    The root cause is a buggy MPTCP option len computation in some
    circumstances: the ADD_ADDR option should be mutually exclusive
    with DSS since the blamed commit.
    
    Still, mptcp_established_options_add_addr() tries to set the
    relevant info in mptcp_out_options, if the remaining space is
    large enough even when DSS is present.
    
    Since the ADD_ADDR infos and the DSS share the same union
    fields, adding first corrupts the latter. In the worst-case
    scenario, such corruption increases the DSS binary layout,
    exceeding the computed length and possibly overwriting the
    skb shared info.
    
    Address the issue by enforcing mutual exclusion in
    mptcp_established_options_add_addr(), too.
    
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/538
    Fixes: 1bff1e43a30e ("mptcp: optimize out option generation")
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/025d9df8cde3c9a557befc47e9bc08fbbe3476e5.1734771049.git.pabeni@redhat.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/mlx5: DR, select MSIX vector 0 for completion queue creation [+ + +]
Author: Shahar Shitrit <[email protected]>
Date:   Fri Dec 20 10:15:02 2024 +0200

    net/mlx5: DR, select MSIX vector 0 for completion queue creation
    
    [ Upstream commit 050a4c011b0dfeb91664a5d7bd3647ff38db08ce ]
    
    When creating a software steering completion queue (CQ), an arbitrary
    MSIX vector n is selected. This results in the CQ sharing the same
    Ethernet traffic channel n associated with the chosen vector. However,
    the value of n is often unpredictable, which can introduce complications
    for interrupt monitoring and verification tools.
    
    Moreover, SW steering uses polling rather than event-driven interrupts.
    Therefore, there is no need to select any MSIX vector other than the
    existing vector 0 for CQ creation.
    
    In light of these factors, and to enhance predictability, we modify the
    code to consistently select MSIX vector 0 for CQ creation.
    
    Fixes: 297cccebdc5a ("net/mlx5: DR, Expose an internal API to issue RDMA operations")
    Signed-off-by: Shahar Shitrit <[email protected]>
    Reviewed-by: Yevgeny Kliteynik <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5e: Keep netdev when leave switchdev for devlink set legacy only [+ + +]
Author: Jianbo Liu <[email protected]>
Date:   Fri Dec 20 10:15:05 2024 +0200

    net/mlx5e: Keep netdev when leave switchdev for devlink set legacy only
    
    [ Upstream commit 2a4f56fbcc473d8faeb29b73082df39efbe5893c ]
    
    In the cited commit, when changing from switchdev to legacy mode,
    uplink representor's netdev is kept, and its profile is replaced with
    nic profile, so netdev is detached from old profile, then attach to
    new profile.
    
    During profile change, the hardware resources allocated by the old
    profile will be cleaned up. However, the cleanup is relying on the
    related kernel modules. And they may need to flush themselves first,
    which is triggered by netdev events, for example, NETDEV_UNREGISTER.
    However, netdev is kept, or netdev_register is called after the
    cleanup, which may cause troubles because the resources are still
    referred by kernel modules.
    
    The same process applies to all the caes when uplink is leaving
    switchdev mode, including devlink eswitch mode set legacy, driver
    unload and devlink reload. For the first one, it can be blocked and
    returns failure to users, whenever possible. But it's hard for the
    others. Besides, the attachment to nic profile is unnecessary as the
    netdev will be unregistered anyway for such cases.
    
    So in this patch, the original behavior is kept only for devlink
    eswitch set mode legacy. For the others, moves netdev unregistration
    before the profile change.
    
    Fixes: 7a9fb35e8c3a ("net/mlx5e: Do not reload ethernet ports when changing eswitch mode")
    Signed-off-by: Jianbo Liu <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: macsec: Maintain TX SA from encoding_sa [+ + +]
Author: Dragos Tatulea <[email protected]>
Date:   Fri Dec 20 10:15:03 2024 +0200

    net/mlx5e: macsec: Maintain TX SA from encoding_sa
    
    [ Upstream commit 8c6254479b3d5bd788d2b5fefaa48fb194331ed0 ]
    
    In MACsec, it is possible to create multiple active TX SAs on a SC,
    but only one such SA can be used at a time for transmission. This SA
    is selected through the encoding_sa link parameter.
    
    When there are 2 or more active TX SAs configured (encoding_sa=0):
      ip macsec add macsec0 tx sa 0 pn 1 on key 00 <KEY1>
      ip macsec add macsec0 tx sa 1 pn 1 on key 00 <KEY2>
    
    ... the traffic should be still sent via TX SA 0 as the encoding_sa was
    not changed. However, the driver ignores the encoding_sa and overrides
    it to SA 1 by installing the flow steering id of the newly created TX SA
    into the SCI -> flow steering id hash map. The future packet tx
    descriptors will point to the incorrect flow steering rule (SA 1).
    
    This patch fixes the issue by avoiding the creation of the flow steering
    rule for an active TX SA that is not the encoding_sa. The driver side
    tx_sa object and the FW side macsec object are still created. When the
    encoding_sa link parameter is changed to another active TX SA, only the
    new flow steering rule will be created in the mlx5e_macsec_upd_txsa()
    handler.
    
    Fixes: 8ff0ac5be144 ("net/mlx5: Add MACsec offload Tx command support")
    Signed-off-by: Dragos Tatulea <[email protected]>
    Reviewed-by: Cosmin Ratiu <[email protected]>
    Reviewed-by: Lior Nahmanson <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: Skip restore TC rules for vport rep without loaded flag [+ + +]
Author: Jianbo Liu <[email protected]>
Date:   Fri Dec 20 10:15:04 2024 +0200

    net/mlx5e: Skip restore TC rules for vport rep without loaded flag
    
    [ Upstream commit 5a03b368562a7ff5f5f1f63b5adf8309cbdbd5be ]
    
    During driver unload, unregister_netdev is called after unloading
    vport rep. So, the mlx5e_rep_priv is already freed while trying to get
    rpriv->netdev, or walk rpriv->tc_ht, which results in use-after-free.
    So add the checking to make sure access the data of vport rep which is
    still loaded.
    
    Fixes: d1569537a837 ("net/mlx5e: Modify and restore TC rules for IPSec TX rules")
    Signed-off-by: Jianbo Liu <[email protected]>
    Reviewed-by: Saeed Mahameed <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/sctp: Prevent autoclose integer overflow in sctp_association_init() [+ + +]
Author: Nikolay Kuratov <[email protected]>
Date:   Thu Dec 19 19:21:14 2024 +0300

    net/sctp: Prevent autoclose integer overflow in sctp_association_init()
    
    commit 4e86729d1ff329815a6e8a920cb554a1d4cb5b8d upstream.
    
    While by default max_autoclose equals to INT_MAX / HZ, one may set
    net.sctp.max_autoclose to UINT_MAX. There is code in
    sctp_association_init() that can consequently trigger overflow.
    
    Cc: [email protected]
    Fixes: 9f70f46bd4c7 ("sctp: properly latch and use autoclose value from sock to association")
    Signed-off-by: Nikolay Kuratov <[email protected]>
    Acked-by: Xin Long <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net: dsa: microchip: Fix KSZ9477 set_ageing_time function [+ + +]
Author: Tristram Ha <[email protected]>
Date:   Tue Dec 17 18:02:23 2024 -0800

    net: dsa: microchip: Fix KSZ9477 set_ageing_time function
    
    [ Upstream commit 262bfba8ab820641c8cfbbf03b86d6c00242c078 ]
    
    The aging count is not a simple 11-bit value but comprises a 3-bit
    multiplier and an 8-bit second count.  The code tries to use the
    original multiplier which is 4 as the second count is still 300 seconds
    by default.
    
    Fixes: 2c119d9982b1 ("net: dsa: microchip: add the support for set_ageing_time")
    Signed-off-by: Tristram Ha <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: microchip: Fix LAN937X set_ageing_time function [+ + +]
Author: Tristram Ha <[email protected]>
Date:   Tue Dec 17 18:02:24 2024 -0800

    net: dsa: microchip: Fix LAN937X set_ageing_time function
    
    [ Upstream commit bb9869043438af5b94230f94fb4c39206525d758 ]
    
    The aging count is not a simple 20-bit value but comprises a 3-bit
    multiplier and a 20-bit second time.  The code tries to use the
    original multiplier which is 4 as the second count is still 300 seconds
    by default.
    
    As the 20-bit number is now too large for practical use there is an option
    to interpret it as microseconds instead of seconds.
    
    Fixes: 2c119d9982b1 ("net: dsa: microchip: add the support for set_ageing_time")
    Signed-off-by: Tristram Ha <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: ti: am65-cpsw: default to round-robin for host port receive [+ + +]
Author: Siddharth Vadapalli <[email protected]>
Date:   Fri Dec 20 13:26:14 2024 +0530

    net: ethernet: ti: am65-cpsw: default to round-robin for host port receive
    
    commit 4a4d38ace1fb0586bffd2aab03caaa05d6011748 upstream.
    
    The Host Port (i.e. CPU facing port) of CPSW receives traffic from Linux
    via TX DMA Channels which are Hardware Queues consisting of traffic
    categorized according to their priority. The Host Port is configured to
    dequeue traffic from these Hardware Queues on the basis of priority i.e.
    as long as traffic exists on a Hardware Queue of a higher priority, the
    traffic on Hardware Queues of lower priority isn't dequeued. An alternate
    operation is also supported wherein traffic can be dequeued by the Host
    Port in a Round-Robin manner.
    
    Until commit under Fixes, the am65-cpsw driver enabled a single TX DMA
    Channel, due to which, unless modified by user via "ethtool", all traffic
    from Linux is transmitted on DMA Channel 0. Therefore, configuring
    the Host Port for priority based dequeuing or Round-Robin operation
    is identical since there is a single DMA Channel.
    
    Since commit under Fixes, all 8 TX DMA Channels are enabled by default.
    Additionally, the default "tc mapping" doesn't take into account
    the possibility of different traffic profiles which various users
    might have. This results in traffic starvation at the Host Port
    due to the priority based dequeuing which has been enabled by default
    since the inception of the driver. The traffic starvation triggers
    NETDEV WATCHDOG timeout for all TX DMA Channels that haven't been serviced
    due to the presence of traffic on the higher priority TX DMA Channels.
    
    Fix this by defaulting to Round-Robin dequeuing at the Host Port, which
    shall ensure that traffic is dequeued from all TX DMA Channels irrespective
    of the traffic profile. This will address the NETDEV WATCHDOG timeouts.
    At the same time, users can still switch from Round-Robin to Priority
    based dequeuing at the Host Port with the help of the "p0-rx-ptype-rrobin"
    private flag of "ethtool". Users are expected to setup an appropriate
    "tc mapping" that suits their traffic profile when switching to priority
    based dequeuing at the Host Port.
    
    Fixes: be397ea3473d ("net: ethernet: am65-cpsw: Set default TX channels to maximum")
    Cc: <[email protected]>
    Signed-off-by: Siddharth Vadapalli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: fix memory leak in tcp_conn_request() [+ + +]
Author: Wang Liang <[email protected]>
Date:   Thu Dec 19 15:28:59 2024 +0800

    net: fix memory leak in tcp_conn_request()
    
    [ Upstream commit 4f4aa4aa28142d53f8b06585c478476cfe325cfc ]
    
    If inet_csk_reqsk_queue_hash_add() return false, tcp_conn_request() will
    return without free the dst memory, which allocated in af_ops->route_req.
    
    Here is the kmemleak stack:
    
    unreferenced object 0xffff8881198631c0 (size 240):
      comm "softirq", pid 0, jiffies 4299266571 (age 1802.392s)
      hex dump (first 32 bytes):
        00 10 9b 03 81 88 ff ff 80 98 da bc ff ff ff ff  ................
        81 55 18 bb ff ff ff ff 00 00 00 00 00 00 00 00  .U..............
      backtrace:
        [<ffffffffb93e8d4c>] kmem_cache_alloc+0x60c/0xa80
        [<ffffffffba11b4c5>] dst_alloc+0x55/0x250
        [<ffffffffba227bf6>] rt_dst_alloc+0x46/0x1d0
        [<ffffffffba23050a>] __mkroute_output+0x29a/0xa50
        [<ffffffffba23456b>] ip_route_output_key_hash+0x10b/0x240
        [<ffffffffba2346bd>] ip_route_output_flow+0x1d/0x90
        [<ffffffffba254855>] inet_csk_route_req+0x2c5/0x500
        [<ffffffffba26b331>] tcp_conn_request+0x691/0x12c0
        [<ffffffffba27bd08>] tcp_rcv_state_process+0x3c8/0x11b0
        [<ffffffffba2965c6>] tcp_v4_do_rcv+0x156/0x3b0
        [<ffffffffba299c98>] tcp_v4_rcv+0x1cf8/0x1d80
        [<ffffffffba239656>] ip_protocol_deliver_rcu+0xf6/0x360
        [<ffffffffba2399a6>] ip_local_deliver_finish+0xe6/0x1e0
        [<ffffffffba239b8e>] ip_local_deliver+0xee/0x360
        [<ffffffffba239ead>] ip_rcv+0xad/0x2f0
        [<ffffffffba110943>] __netif_receive_skb_one_core+0x123/0x140
    
    Call dst_release() to free the dst memory when
    inet_csk_reqsk_queue_hash_add() return false in tcp_conn_request().
    
    Fixes: ff46e3b44219 ("Fix race for duplicate reqsk on identical SYN")
    Signed-off-by: Wang Liang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: Fix netns for ip_tunnel_init_flow() [+ + +]
Author: Xiao Liang <[email protected]>
Date:   Thu Dec 19 21:03:36 2024 +0800

    net: Fix netns for ip_tunnel_init_flow()
    
    [ Upstream commit b5a7b661a073727219fedc35f5619f62418ffe72 ]
    
    The device denoted by tunnel->parms.link resides in the underlay net
    namespace. Therefore pass tunnel->net to ip_tunnel_init_flow().
    
    Fixes: db53cd3d88dc ("net: Handle l3mdev in ip_tunnel_init_flow")
    Signed-off-by: Xiao Liang <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: llc: reset skb->transport_header [+ + +]
Author: Antonio Pastor <[email protected]>
Date:   Tue Dec 24 20:07:20 2024 -0500

    net: llc: reset skb->transport_header
    
    [ Upstream commit a024e377efed31ecfb39210bed562932321345b3 ]
    
    802.2+LLC+SNAP frames received by napi_complete_done with GRO and DSA
    have skb->transport_header set two bytes short, or pointing 2 bytes
    before network_header & skb->data. As snap_rcv expects transport_header
    to point to SNAP header (OID:PID) after LLC processing advances offset
    over LLC header (llc_rcv & llc_fixup_skb), code doesn't find a match
    and packet is dropped.
    
    Between napi_complete_done and snap_rcv, transport_header is not used
    until __netif_receive_skb_core, where originally it was being reset.
    Commit fda55eca5a33 ("net: introduce skb_transport_header_was_set()")
    only does so if not set, on the assumption the value was set correctly
    by GRO (and also on assumption that "network stacks usually reset the
    transport header anyway"). Afterwards it is moved forward by
    llc_fixup_skb.
    
    Locally generated traffic shows up at __netif_receive_skb_core with no
    transport_header set and is processed without issue. On a setup with
    GRO but no DSA, transport_header and network_header are both set to
    point to skb->data which is also correct.
    
    As issue is LLC specific, to avoid impacting non-LLC traffic, and to
    follow up on original assumption made on previous code change,
    llc_fixup_skb to reset the offset after skb pull. llc_fixup_skb
    assumes the LLC header is at skb->data, and by definition SNAP header
    immediately follows.
    
    Fixes: fda55eca5a33 ("net: introduce skb_transport_header_was_set()")
    Signed-off-by: Antonio Pastor <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: mv643xx_eth: fix an OF node reference leak [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Sat Dec 21 17:14:48 2024 +0900

    net: mv643xx_eth: fix an OF node reference leak
    
    [ Upstream commit ad5c318086e2e23b577eca33559c5ebf89bc7eb9 ]
    
    Current implementation of mv643xx_eth_shared_of_add_port() calls
    of_parse_phandle(), but does not release the refcount on error. Call
    of_node_put() in the error path and in mv643xx_eth_shared_of_remove().
    
    This bug was found by an experimental verification tool that I am
    developing.
    
    Fixes: 76723bca2802 ("net: mv643xx_eth: add DT parsing support")
    Signed-off-by: Joe Hattori <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: micrel: Dynamically control external clock of KSZ PHY [+ + +]
Author: Wei Fang <[email protected]>
Date:   Tue Dec 17 14:35:00 2024 +0800

    net: phy: micrel: Dynamically control external clock of KSZ PHY
    
    [ Upstream commit 25c6a5ab151fb9c886552bf5aa7cbf2a5c6e96af ]
    
    On the i.MX6ULL-14x14-EVK board, enet1_ref and enet2_ref are used as the
    clock sources for two external KSZ PHYs. However, after closing the two
    FEC ports, the clk_enable_count of the enet1_ref and enet2_ref clocks is
    not 0. The root cause is that since the commit 985329462723 ("net: phy:
    micrel: use devm_clk_get_optional_enabled for the rmii-ref clock"), the
    external clock of KSZ PHY has been enabled when the PHY driver probes,
    and it can only be disabled when the PHY driver is removed. This causes
    the clock to continue working when the system is suspended or the network
    port is down.
    
    Although Heiko explained in the commit message that the patch was because
    some clock suppliers need to enable the clock to get the valid clock rate
    , it seems that the simple fix is to disable the clock after getting the
    clock rate to solve the current problem. This is indeed true, but we need
    to admit that Heiko's patch has been applied for more than a year, and we
    cannot guarantee whether there are platforms that only enable rmii-ref in
    the KSZ PHY driver during this period. If this is the case, disabling
    rmii-ref will cause RMII on these platforms to not work.
    
    Secondly, commit 99ac4cbcc2a5 ("net: phy: micrel: allow usage of generic
    ethernet-phy clock") just simply enables the generic clock permanently,
    which seems like the generic clock may only be enabled in the PHY driver.
    If we simply disable the generic clock, RMII may not work. If we keep it
    as it is, the platform using the generic clock will have the same problem
    as the i.MX6ULL platform.
    
    To solve this problem, the clock is enabled when phy_driver::resume() is
    called, and the clock is disabled when phy_driver::suspend() is called.
    Since phy_driver::resume() and phy_driver::suspend() are not called in
    pairs, an additional clk_enable flag is added. When phy_driver::suspend()
    is called, the clock is disabled only if clk_enable is true. Conversely,
    when phy_driver::resume() is called, the clock is enabled if clk_enable
    is false.
    
    The changes that introduced the problem were only a few lines, while the
    current fix is about a hundred lines, which seems out of proportion, but
    it is necessary because kszphy_probe() is used by multiple KSZ PHYs and
    we need to fix all of them.
    
    Fixes: 985329462723 ("net: phy: micrel: use devm_clk_get_optional_enabled for the rmii-ref clock")
    Fixes: 99ac4cbcc2a5 ("net: phy: micrel: allow usage of generic ethernet-phy clock")
    Signed-off-by: Wei Fang <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: pse-pd: tps23881: Fix power on/off issue [+ + +]
Author: Kory Maincent <[email protected]>
Date:   Fri Dec 20 18:04:00 2024 +0100

    net: pse-pd: tps23881: Fix power on/off issue
    
    [ Upstream commit 75221e96101fa93390d3db5c23e026f5e3565d9b ]
    
    An issue was present in the initial driver implementation. The driver
    read the power status of all channels before toggling the bit of the
    desired one. Using the power status register as a base value introduced
    a problem, because only the bit corresponding to the concerned channel ID
    should be set in the write-only power enable register. This led to cases
    where disabling power for one channel also powered off other channels.
    
    This patch removes the power status read and ensures the value is
    limited to the bit matching the channel index of the PI.
    
    Fixes: 20e6d190ffe1 ("net: pse-pd: Add TI TPS23881 PSE controller driver")
    Signed-off-by: Kory Maincent <[email protected]>
    Acked-by: Oleksij Rempel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: reenable NETIF_F_IPV6_CSUM offload for BIG TCP packets [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Wed Jan 1 11:47:40 2025 -0500

    net: reenable NETIF_F_IPV6_CSUM offload for BIG TCP packets
    
    [ Upstream commit 68e068cabd2c6c533ef934c2e5151609cf6ecc6d ]
    
    The blamed commit disabled hardware offoad of IPv6 packets with
    extension headers on devices that advertise NETIF_F_IPV6_CSUM,
    based on the definition of that feature in skbuff.h:
    
     *   * - %NETIF_F_IPV6_CSUM
     *     - Driver (device) is only able to checksum plain
     *       TCP or UDP packets over IPv6. These are specifically
     *       unencapsulated packets of the form IPv6|TCP or
     *       IPv6|UDP where the Next Header field in the IPv6
     *       header is either TCP or UDP. IPv6 extension headers
     *       are not supported with this feature. This feature
     *       cannot be set in features for a device with
     *       NETIF_F_HW_CSUM also set. This feature is being
     *       DEPRECATED (see below).
    
    The change causes skb_warn_bad_offload to fire for BIG TCP
    packets.
    
    [  496.310233] WARNING: CPU: 13 PID: 23472 at net/core/dev.c:3129 skb_warn_bad_offload+0xc4/0xe0
    
    [  496.310297]  ? skb_warn_bad_offload+0xc4/0xe0
    [  496.310300]  skb_checksum_help+0x129/0x1f0
    [  496.310303]  skb_csum_hwoffload_help+0x150/0x1b0
    [  496.310306]  validate_xmit_skb+0x159/0x270
    [  496.310309]  validate_xmit_skb_list+0x41/0x70
    [  496.310312]  sch_direct_xmit+0x5c/0x250
    [  496.310317]  __qdisc_run+0x388/0x620
    
    BIG TCP introduced an IPV6_TLV_JUMBO IPv6 extension header to
    communicate packet length, as this is an IPv6 jumbogram. But, the
    feature is only enabled on devices that support BIG TCP TSO. The
    header is only present for PF_PACKET taps like tcpdump, and not
    transmitted by physical devices.
    
    For this specific case of extension headers that are not
    transmitted, return to the situation before the blamed commit
    and support hardware offload.
    
    ipv6_has_hopopt_jumbo() tests not only whether this header is present,
    but also that it is the only extension header before a terminal (L4)
    header.
    
    Fixes: 04c20a9356f2 ("net: skip offload for NETIF_F_IPV6_CSUM if ipv6 header contains extension")
    Reported-by: syzbot <[email protected]>
    Reported-by: Eric Dumazet <[email protected]>
    Closes: https://lore.kernel.org/netdev/CANn89iK1hdC3Nt8KPhOtTF8vCPc1AHDCtse_BTNki1pWxAByTQ@mail.gmail.com/
    Signed-off-by: Willem de Bruijn <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: restrict SO_REUSEPORT to inet sockets [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Dec 31 16:05:27 2024 +0000

    net: restrict SO_REUSEPORT to inet sockets
    
    [ Upstream commit 5b0af621c3f6ef9261cf6067812f2fd9943acb4b ]
    
    After blamed commit, crypto sockets could accidentally be destroyed
    from RCU call back, as spotted by zyzbot [1].
    
    Trying to acquire a mutex in RCU callback is not allowed.
    
    Restrict SO_REUSEPORT socket option to inet sockets.
    
    v1 of this patch supported TCP, UDP and SCTP sockets,
    but fcnal-test.sh test needed RAW and ICMP support.
    
    [1]
    BUG: sleeping function called from invalid context at kernel/locking/mutex.c:562
    in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 24, name: ksoftirqd/1
    preempt_count: 100, expected: 0
    RCU nest depth: 0, expected: 0
    1 lock held by ksoftirqd/1/24:
      #0: ffffffff8e937ba0 (rcu_callback){....}-{0:0}, at: rcu_lock_acquire include/linux/rcupdate.h:337 [inline]
      #0: ffffffff8e937ba0 (rcu_callback){....}-{0:0}, at: rcu_do_batch kernel/rcu/tree.c:2561 [inline]
      #0: ffffffff8e937ba0 (rcu_callback){....}-{0:0}, at: rcu_core+0xa37/0x17a0 kernel/rcu/tree.c:2823
    Preemption disabled at:
     [<ffffffff8161c8c8>] softirq_handle_begin kernel/softirq.c:402 [inline]
     [<ffffffff8161c8c8>] handle_softirqs+0x128/0x9b0 kernel/softirq.c:537
    CPU: 1 UID: 0 PID: 24 Comm: ksoftirqd/1 Not tainted 6.13.0-rc3-syzkaller-00174-ga024e377efed #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    Call Trace:
     <TASK>
      __dump_stack lib/dump_stack.c:94 [inline]
      dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
      __might_resched+0x5d4/0x780 kernel/sched/core.c:8758
      __mutex_lock_common kernel/locking/mutex.c:562 [inline]
      __mutex_lock+0x131/0xee0 kernel/locking/mutex.c:735
      crypto_put_default_null_skcipher+0x18/0x70 crypto/crypto_null.c:179
      aead_release+0x3d/0x50 crypto/algif_aead.c:489
      alg_do_release crypto/af_alg.c:118 [inline]
      alg_sock_destruct+0x86/0xc0 crypto/af_alg.c:502
      __sk_destruct+0x58/0x5f0 net/core/sock.c:2260
      rcu_do_batch kernel/rcu/tree.c:2567 [inline]
      rcu_core+0xaaa/0x17a0 kernel/rcu/tree.c:2823
      handle_softirqs+0x2d4/0x9b0 kernel/softirq.c:561
      run_ksoftirqd+0xca/0x130 kernel/softirq.c:950
      smpboot_thread_fn+0x544/0xa30 kernel/smpboot.c:164
      kthread+0x2f0/0x390 kernel/kthread.c:389
      ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
     </TASK>
    
    Fixes: 8c7138b33e5c ("net: Unpublish sk from sk_reuseport_cb before call_rcu")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Martin KaFai Lau <[email protected]>
    Reviewed-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]>

net: sfc: Correct key_len for efx_tc_ct_zone_ht_params [+ + +]
Author: Liang Jie <[email protected]>
Date:   Mon Dec 30 17:37:09 2024 +0800

    net: sfc: Correct key_len for efx_tc_ct_zone_ht_params
    
    [ Upstream commit a8620de72e5676993ec3a3b975f7c10908f5f60f ]
    
    In efx_tc_ct_zone_ht_params, the key_len was previously set to
    offsetof(struct efx_tc_ct_zone, linkage). This calculation is incorrect
    because it includes any padding between the zone field and the linkage
    field due to structure alignment, which can vary between systems.
    
    This patch updates key_len to use sizeof_field(struct efx_tc_ct_zone, zone)
    , ensuring that the hash table correctly uses the zone as the key. This fix
    prevents potential hash lookup errors and improves connection tracking
    reliability.
    
    Fixes: c3bb5c6acd4e ("sfc: functions to register for conntrack zone offload")
    Signed-off-by: Liang Jie <[email protected]>
    Acked-by: Edward Cree <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: restructure the error path of stmmac_probe_config_dt() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Thu Dec 19 11:41:19 2024 +0900

    net: stmmac: restructure the error path of stmmac_probe_config_dt()
    
    [ Upstream commit 2b6ffcd7873b7e8a62c3e15a6f305bfc747c466b ]
    
    Current implementation of stmmac_probe_config_dt() does not release the
    OF node reference obtained by of_parse_phandle() in some error paths.
    The problem is that some error paths call stmmac_remove_config_dt() to
    clean up but others use and unwind ladder.  These two types of error
    handling have not kept in sync and have been a recurring source of bugs.
    Re-write the error handling in stmmac_probe_config_dt() to use an unwind
    ladder. Consequently, stmmac_remove_config_dt() is not needed anymore,
    thus remove it.
    
    This bug was found by an experimental verification tool that I am
    developing.
    
    Fixes: 4838a5405028 ("net: stmmac: Fix wrapper drivers not detecting PHY")
    Signed-off-by: Joe Hattori <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ti: icssg-prueth: Fix clearing of IEP_CMP_CFG registers during iep_init [+ + +]
Author: Meghana Malladi <[email protected]>
Date:   Mon Dec 23 20:45:50 2024 +0530

    net: ti: icssg-prueth: Fix clearing of IEP_CMP_CFG registers during iep_init
    
    [ Upstream commit 9b115361248dc6cce182a2dc030c1c70b0a9639e ]
    
    When ICSSG interfaces are brought down and brought up again, the
    pru cores are shut down and booted again, flushing out all the memories
    and start again in a clean state. Hence it is expected that the
    IEP_CMP_CFG register needs to be flushed during iep_init() to ensure
    that the existing residual configuration doesn't cause any unusual
    behavior. If the register is not cleared, existing IEP_CMP_CFG set for
    CMP1 will result in SYNC0_OUT signal based on the SYNC_OUT register values.
    
    After bringing the interface up, calling PPS enable doesn't work as
    the driver believes PPS is already enabled, (iep->pps_enabled is not
    cleared during interface bring down) and driver will just return true
    even though there is no signal. Fix this by disabling pps and perout.
    
    Fixes: c1e0230eeaab ("net: ti: icss-iep: Add IEP driver")
    Signed-off-by: Meghana Malladi <[email protected]>
    Reviewed-by: Roger Quadros <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ti: icssg-prueth: Fix firmware load sequence. [+ + +]
Author: MD Danish Anwar <[email protected]>
Date:   Mon Dec 23 20:45:49 2024 +0530

    net: ti: icssg-prueth: Fix firmware load sequence.
    
    [ Upstream commit 9facce84f4062f782ebde18daa7006a23d40b607 ]
    
    Timesync related operations are ran in PRU0 cores for both ICSSG SLICE0
    and SLICE1. Currently whenever any ICSSG interface comes up we load the
    respective firmwares to PRU cores and whenever interface goes down, we
    stop the resective cores. Due to this, when SLICE0 goes down while
    SLICE1 is still active, PRU0 firmwares are unloaded and PRU0 core is
    stopped. This results in clock jump for SLICE1 interface as the timesync
    related operations are no longer running.
    
    As there are interdependencies between SLICE0 and SLICE1 firmwares,
    fix this by running both PRU0 and PRU1 firmwares as long as at least 1
    ICSSG interface is up. Add new flag in prueth struct to check if all
    firmwares are running and remove the old flag (fw_running).
    
    Use emacs_initialized as reference count to load the firmwares for the
    first and last interface up/down. Moving init_emac_mode and fw_offload_mode
    API outside of icssg_config to icssg_common_start API as they need
    to be called only once per firmware boot.
    
    Change prueth_emac_restart() to return error code and add error prints
    inside the caller of this functions in case of any failures.
    
    Move prueth_emac_stop() from common to sr1 driver.
    sr1 and sr2 drivers have different logic handling for stopping
    the firmwares. While sr1 driver is dependent on emac structure
    to stop the corresponding pru cores for that slice, for sr2
    all the pru cores of both the slices are stopped and is not
    dependent on emac. So the prueth_emac_stop() function is no
    longer common and can be moved to sr1 driver.
    
    Fixes: c1e0230eeaab ("net: ti: icss-iep: Add IEP driver")
    Signed-off-by: MD Danish Anwar <[email protected]>
    Signed-off-by: Meghana Malladi <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: qmi_wwan: add Telit FE910C04 compositions [+ + +]
Author: Daniele Palmas <[email protected]>
Date:   Mon Dec 9 16:18:21 2024 +0100

    net: usb: qmi_wwan: add Telit FE910C04 compositions
    
    [ Upstream commit 3b58b53a26598209a7ad8259a5114ce71f7c3d64 ]
    
    Add the following Telit FE910C04 compositions:
    
    0x10c0: rmnet + tty (AT/NMEA) + tty (AT) + tty (diag)
    T:  Bus=02 Lev=01 Prnt=03 Port=06 Cnt=01 Dev#= 13 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10c0 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FE910
    S:  SerialNumber=f71b8b32
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10c4: rmnet + tty (AT) + tty (AT) + tty (diag)
    T:  Bus=02 Lev=01 Prnt=03 Port=06 Cnt=01 Dev#= 14 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10c4 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FE910
    S:  SerialNumber=f71b8b32
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10c8: rmnet + tty (AT) + tty (diag) + DPL (data packet logging) + adb
    T:  Bus=02 Lev=01 Prnt=03 Port=06 Cnt=01 Dev#= 17 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10c8 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FE910
    S:  SerialNumber=f71b8b32
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Daniele Palmas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wwan: iosm: Properly check for valid exec stage in ipc_mmio_init() [+ + +]
Author: Maciej S. Szmigiero <[email protected]>
Date:   Sun Dec 29 17:46:58 2024 +0100

    net: wwan: iosm: Properly check for valid exec stage in ipc_mmio_init()
    
    [ Upstream commit a7af435df0e04cfb4a4004136d597c42639a2ae7 ]
    
    ipc_mmio_init() used the post-decrement operator in its loop continuing
    condition of "retries" counter being "> 0", which meant that when this
    condition caused loop exit "retries" counter reached -1.
    
    But the later valid exec stage failure check only tests for "retries"
    counter being exactly zero, so it didn't trigger in this case (but
    would wrongly trigger if the code reaches a valid exec stage in the
    very last loop iteration).
    
    Fix this by using the pre-decrement operator instead, so the loop counter
    is exactly zero on valid exec stage failure.
    
    Fixes: dc0514f5d828 ("net: iosm: mmio scratchpad")
    Signed-off-by: Maciej S. Szmigiero <[email protected]>
    Link: https://patch.msgid.link/8b19125a825f9dcdd81c667c1e5c48ba28d505a6.1735490770.git.mail@maciej.szmigiero.name
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wwan: t7xx: Fix FSM command timeout issue [+ + +]
Author: Jinjian Song <[email protected]>
Date:   Tue Dec 24 12:15:52 2024 +0800

    net: wwan: t7xx: Fix FSM command timeout issue
    
    [ Upstream commit 4f619d518db9cd1a933c3a095a5f95d0c1584ae8 ]
    
    When driver processes the internal state change command, it use an
    asynchronous thread to process the command operation. If the main
    thread detects that the task has timed out, the asynchronous thread
    will panic when executing the completion notification because the
    main thread completion object has been released.
    
    BUG: unable to handle page fault for address: fffffffffffffff8
    PGD 1f283a067 P4D 1f283a067 PUD 1f283c067 PMD 0
    Oops: 0000 [#1] PREEMPT SMP NOPTI
    RIP: 0010:complete_all+0x3e/0xa0
    [...]
    Call Trace:
     <TASK>
     ? __die_body+0x68/0xb0
     ? page_fault_oops+0x379/0x3e0
     ? exc_page_fault+0x69/0xa0
     ? asm_exc_page_fault+0x22/0x30
     ? complete_all+0x3e/0xa0
     fsm_main_thread+0xa3/0x9c0 [mtk_t7xx (HASH:1400 5)]
     ? __pfx_autoremove_wake_function+0x10/0x10
     kthread+0xd8/0x110
     ? __pfx_fsm_main_thread+0x10/0x10 [mtk_t7xx (HASH:1400 5)]
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x38/0x50
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1b/0x30
     </TASK>
    [...]
    CR2: fffffffffffffff8
    ---[ end trace 0000000000000000 ]---
    
    Use the reference counter to ensure safe release as Sergey suggests:
    https://lore.kernel.org/all/[email protected]/
    
    Fixes: 13e920d93e37 ("net: wwan: t7xx: Add core components")
    Signed-off-by: Jinjian Song <[email protected]>
    Acked-by: Sergey Ryazanov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netdev-genl: avoid empty messages in napi get [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Wed Dec 18 19:28:32 2024 -0800

    netdev-genl: avoid empty messages in napi get
    
    [ Upstream commit 4a25201aa46ce88e8e31f9ccdec0e4e3dd6bb736 ]
    
    Empty netlink responses from do() are not correct (as opposed to
    dump() where not dumping anything is perfectly fine).
    We should return an error if the target object does not exist,
    in this case if the netdev is down we "hide" the NAPI instances.
    
    Fixes: 27f91aaf49b3 ("netdev-genl: Add netlink framework functions for napi")
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: nft_set_hash: unaligned atomic read on struct nft_set_ext [+ + +]
Author: Pablo Neira Ayuso <[email protected]>
Date:   Sat Dec 21 00:29:20 2024 +0100

    netfilter: nft_set_hash: unaligned atomic read on struct nft_set_ext
    
    [ Upstream commit 542ed8145e6f9392e3d0a86a0e9027d2ffd183e4 ]
    
    Access to genmask field in struct nft_set_ext results in unaligned
    atomic read:
    
    [   72.130109] Unable to handle kernel paging request at virtual address ffff0000c2bb708c
    [   72.131036] Mem abort info:
    [   72.131213]   ESR = 0x0000000096000021
    [   72.131446]   EC = 0x25: DABT (current EL), IL = 32 bits
    [   72.132209]   SET = 0, FnV = 0
    [   72.133216]   EA = 0, S1PTW = 0
    [   72.134080]   FSC = 0x21: alignment fault
    [   72.135593] Data abort info:
    [   72.137194]   ISV = 0, ISS = 0x00000021, ISS2 = 0x00000000
    [   72.142351]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [   72.145989]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [   72.150115] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000237d27000
    [   72.154893] [ffff0000c2bb708c] pgd=0000000000000000, p4d=180000023ffff403, pud=180000023f84b403, pmd=180000023f835403,
    +pte=0068000102bb7707
    [   72.163021] Internal error: Oops: 0000000096000021 [#1] SMP
    [...]
    [   72.170041] CPU: 7 UID: 0 PID: 54 Comm: kworker/7:0 Tainted: G            E      6.13.0-rc3+ #2
    [   72.170509] Tainted: [E]=UNSIGNED_MODULE
    [   72.170720] Hardware name: QEMU QEMU Virtual Machine, BIOS edk2-stable202302-for-qemu 03/01/2023
    [   72.171192] Workqueue: events_power_efficient nft_rhash_gc [nf_tables]
    [   72.171552] pstate: 21400005 (nzCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
    [   72.171915] pc : nft_rhash_gc+0x200/0x2d8 [nf_tables]
    [   72.172166] lr : nft_rhash_gc+0x128/0x2d8 [nf_tables]
    [   72.172546] sp : ffff800081f2bce0
    [   72.172724] x29: ffff800081f2bd40 x28: ffff0000c2bb708c x27: 0000000000000038
    [   72.173078] x26: ffff0000c6780ef0 x25: ffff0000c643df00 x24: ffff0000c6778f78
    [   72.173431] x23: 000000000000001a x22: ffff0000c4b1f000 x21: ffff0000c6780f78
    [   72.173782] x20: ffff0000c2bb70dc x19: ffff0000c2bb7080 x18: 0000000000000000
    [   72.174135] x17: ffff0000c0a4e1c0 x16: 0000000000003000 x15: 0000ac26d173b978
    [   72.174485] x14: ffffffffffffffff x13: 0000000000000030 x12: ffff0000c6780ef0
    [   72.174841] x11: 0000000000000000 x10: ffff800081f2bcf8 x9 : ffff0000c3000000
    [   72.175193] x8 : 00000000000004be x7 : 0000000000000000 x6 : 0000000000000000
    [   72.175544] x5 : 0000000000000040 x4 : ffff0000c3000010 x3 : 0000000000000000
    [   72.175871] x2 : 0000000000003a98 x1 : ffff0000c2bb708c x0 : 0000000000000004
    [   72.176207] Call trace:
    [   72.176316]  nft_rhash_gc+0x200/0x2d8 [nf_tables] (P)
    [   72.176653]  process_one_work+0x178/0x3d0
    [   72.176831]  worker_thread+0x200/0x3f0
    [   72.176995]  kthread+0xe8/0xf8
    [   72.177130]  ret_from_fork+0x10/0x20
    [   72.177289] Code: 54fff984 d503201f d2800080 91003261 (f820303f)
    [   72.177557] ---[ end trace 0000000000000000 ]---
    
    Align struct nft_set_ext to word size to address this and
    documentation it.
    
    pahole reports that this increases the size of elements for rhash and
    pipapo in 8 bytes on x86_64.
    
    Fixes: 7ffc7481153b ("netfilter: nft_set_hash: skip duplicated elements pending gc run")
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netrom: check buffer length before accessing it [+ + +]
Author: Ilya Shchipletsov <[email protected]>
Date:   Thu Dec 19 08:23:07 2024 +0000

    netrom: check buffer length before accessing it
    
    [ Upstream commit a4fd163aed2edd967a244499754dec991d8b4c7d ]
    
    Syzkaller reports an uninit value read from ax25cmp when sending raw message
    through ieee802154 implementation.
    
    =====================================================
    BUG: KMSAN: uninit-value in ax25cmp+0x3a5/0x460 net/ax25/ax25_addr.c:119
     ax25cmp+0x3a5/0x460 net/ax25/ax25_addr.c:119
     nr_dev_get+0x20e/0x450 net/netrom/nr_route.c:601
     nr_route_frame+0x1a2/0xfc0 net/netrom/nr_route.c:774
     nr_xmit+0x5a/0x1c0 net/netrom/nr_dev.c:144
     __netdev_start_xmit include/linux/netdevice.h:4940 [inline]
     netdev_start_xmit include/linux/netdevice.h:4954 [inline]
     xmit_one net/core/dev.c:3548 [inline]
     dev_hard_start_xmit+0x247/0xa10 net/core/dev.c:3564
     __dev_queue_xmit+0x33b8/0x5130 net/core/dev.c:4349
     dev_queue_xmit include/linux/netdevice.h:3134 [inline]
     raw_sendmsg+0x654/0xc10 net/ieee802154/socket.c:299
     ieee802154_sock_sendmsg+0x91/0xc0 net/ieee802154/socket.c:96
     sock_sendmsg_nosec net/socket.c:730 [inline]
     __sock_sendmsg net/socket.c:745 [inline]
     ____sys_sendmsg+0x9c2/0xd60 net/socket.c:2584
     ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2638
     __sys_sendmsg net/socket.c:2667 [inline]
     __do_sys_sendmsg net/socket.c:2676 [inline]
     __se_sys_sendmsg net/socket.c:2674 [inline]
     __x64_sys_sendmsg+0x307/0x490 net/socket.c:2674
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0x44/0x110 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x63/0x6b
    
    Uninit was created at:
     slab_post_alloc_hook+0x129/0xa70 mm/slab.h:768
     slab_alloc_node mm/slub.c:3478 [inline]
     kmem_cache_alloc_node+0x5e9/0xb10 mm/slub.c:3523
     kmalloc_reserve+0x13d/0x4a0 net/core/skbuff.c:560
     __alloc_skb+0x318/0x740 net/core/skbuff.c:651
     alloc_skb include/linux/skbuff.h:1286 [inline]
     alloc_skb_with_frags+0xc8/0xbd0 net/core/skbuff.c:6334
     sock_alloc_send_pskb+0xa80/0xbf0 net/core/sock.c:2780
     sock_alloc_send_skb include/net/sock.h:1884 [inline]
     raw_sendmsg+0x36d/0xc10 net/ieee802154/socket.c:282
     ieee802154_sock_sendmsg+0x91/0xc0 net/ieee802154/socket.c:96
     sock_sendmsg_nosec net/socket.c:730 [inline]
     __sock_sendmsg net/socket.c:745 [inline]
     ____sys_sendmsg+0x9c2/0xd60 net/socket.c:2584
     ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2638
     __sys_sendmsg net/socket.c:2667 [inline]
     __do_sys_sendmsg net/socket.c:2676 [inline]
     __se_sys_sendmsg net/socket.c:2674 [inline]
     __x64_sys_sendmsg+0x307/0x490 net/socket.c:2674
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0x44/0x110 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x63/0x6b
    
    CPU: 0 PID: 5037 Comm: syz-executor166 Not tainted 6.7.0-rc7-syzkaller-00003-gfbafc3e621c3 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/17/2023
    =====================================================
    
    This issue occurs because the skb buffer is too small, and it's actual
    allocation is aligned. This hides an actual issue, which is that nr_route_frame
    does not validate the buffer size before using it.
    
    Fix this issue by checking skb->len before accessing any fields in skb->data.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Co-developed-by: Nikita Marushkin <[email protected]>
    Signed-off-by: Nikita Marushkin <[email protected]>
    Signed-off-by: Ilya Shchipletsov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme-pci: 512 byte aligned dma pool segment quirk [+ + +]
Author: Robert Beckett <[email protected]>
Date:   Tue Nov 12 19:50:00 2024 +0000

    nvme-pci: 512 byte aligned dma pool segment quirk
    
    [ Upstream commit ebefac5647968679f6ef5803e5d35a71997d20fa ]
    
    We initially introduced a quick fix limiting the queue depth to 1 as
    experimentation showed that it fixed data corruption on 64GB steamdecks.
    
    Further experimentation revealed corruption only happens when the last
    PRP data element aligns to the end of the page boundary. The device
    appears to treat this as a PRP chain to a new list instead of the data
    element that it actually is. This implementation is in violation of the
    spec. Encountering this errata with the Linux driver requires the host
    request a 128k transfer and coincidently be handed the last small pool
    dma buffer within a page.
    
    The QD1 quirk effectly works around this because the last data PRP
    always was at a 248 byte offset from the page start, so it never
    appeared at the end of the page, but comes at the expense of throttling
    IO and wasting the remainder of the PRP page beyond 256 bytes. Also to
    note, the MDTS on these devices is small enough that the "large" prp
    pool can hold enough PRP elements to never reach the end, so that pool
    is not a problem either.
    
    Introduce a new quirk to ensure the small pool is always aligned such
    that the last PRP element can't appear a the end of the page. This comes
    at the expense of wasting 256 bytes per small pool page allocated.
    
    Link: https://lore.kernel.org/linux-nvme/[email protected]/T/#u
    Fixes: 83bdfcbdbe5d ("nvme-pci: qdepth 1 quirk")
    Cc: Paweł Anikiel <[email protected]>
    Signed-off-by: Robert Beckett <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmet: Don't overflow subsysnqn [+ + +]
Author: Leo Stone <[email protected]>
Date:   Wed Dec 18 10:49:57 2024 -0800

    nvmet: Don't overflow subsysnqn
    
    [ Upstream commit 4db3d750ac7e894278ef1cb1c53cc7d883060496 ]
    
    nvmet_root_discovery_nqn_store treats the subsysnqn string like a fixed
    size buffer, even though it is dynamically allocated to the size of the
    string.
    
    Create a new string with kstrndup instead of using the old buffer.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=ff4aab278fa7e27e0f9e
    Fixes: 95409e277d83 ("nvmet: implement unique discovery NQN")
    Signed-off-by: Leo Stone <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ocfs2: fix slab-use-after-free due to dangling pointer dqi_priv [+ + +]
Author: Dennis Lam <[email protected]>
Date:   Tue Dec 17 21:39:25 2024 -0500

    ocfs2: fix slab-use-after-free due to dangling pointer dqi_priv
    
    commit 5f3fd772d152229d94602bca243fbb658068a597 upstream.
    
    When mounting ocfs2 and then remounting it as read-only, a
    slab-use-after-free occurs after the user uses a syscall to
    quota_getnextquota.  Specifically, sb_dqinfo(sb, type)->dqi_priv is the
    dangling pointer.
    
    During the remounting process, the pointer dqi_priv is freed but is never
    set as null leaving it to be accessed.  Additionally, the read-only option
    for remounting sets the DQUOT_SUSPENDED flag instead of setting the
    DQUOT_USAGE_ENABLED flags.  Moreover, later in the process of getting the
    next quota, the function ocfs2_get_next_id is called and only checks the
    quota usage flags and not the quota suspended flags.
    
    To fix this, I set dqi_priv to null when it is freed after remounting with
    read-only and put a check for DQUOT_SUSPENDED in ocfs2_get_next_id.
    
    [[email protected]: coding-style cleanups]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 8f9e8f5fcc05 ("ocfs2: Fix Q_GETNEXTQUOTA for filesystem without quotas")
    Signed-off-by: Dennis Lam <[email protected]>
    Reported-by: [email protected]
    Tested-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Reviewed-by: Joseph Qi <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
perf/x86/intel: Add Arrow Lake U support [+ + +]
Author: Kan Liang <[email protected]>
Date:   Thu Nov 21 10:05:26 2024 -0800

    perf/x86/intel: Add Arrow Lake U support
    
    [ Upstream commit 4e54ed496343702837ddca5f5af720161c6a5407 ]
    
    From PMU's perspective, the new Arrow Lake U is the same as the
    Meteor Lake.
    
    Signed-off-by: Kan Liang <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: mcp23s08: Fix sleeping in atomic context due to regmap locking [+ + +]
Author: Evgenii Shatokhin <[email protected]>
Date:   Mon Dec 9 10:46:59 2024 +0300

    pinctrl: mcp23s08: Fix sleeping in atomic context due to regmap locking
    
    commit a37eecb705f33726f1fb7cd2a67e514a15dfe693 upstream.
    
    If a device uses MCP23xxx IO expander to receive IRQs, the following
    bug can happen:
    
      BUG: sleeping function called from invalid context
        at kernel/locking/mutex.c:283
      in_atomic(): 1, irqs_disabled(): 1, non_block: 0, ...
      preempt_count: 1, expected: 0
      ...
      Call Trace:
      ...
      __might_resched+0x104/0x10e
      __might_sleep+0x3e/0x62
      mutex_lock+0x20/0x4c
      regmap_lock_mutex+0x10/0x18
      regmap_update_bits_base+0x2c/0x66
      mcp23s08_irq_set_type+0x1ae/0x1d6
      __irq_set_trigger+0x56/0x172
      __setup_irq+0x1e6/0x646
      request_threaded_irq+0xb6/0x160
      ...
    
    We observed the problem while experimenting with a touchscreen driver which
    used MCP23017 IO expander (I2C).
    
    The regmap in the pinctrl-mcp23s08 driver uses a mutex for protection from
    concurrent accesses, which is the default for regmaps without .fast_io,
    .disable_locking, etc.
    
    mcp23s08_irq_set_type() calls regmap_update_bits_base(), and the latter
    locks the mutex.
    
    However, __setup_irq() locks desc->lock spinlock before calling these
    functions. As a result, the system tries to lock the mutex whole holding
    the spinlock.
    
    It seems, the internal regmap locks are not needed in this driver at all.
    mcp->lock seems to protect the regmap from concurrent accesses already,
    except, probably, in mcp_pinconf_get/set.
    
    mcp23s08_irq_set_type() and mcp23s08_irq_mask/unmask() are called under
    chip_bus_lock(), which calls mcp23s08_irq_bus_lock(). The latter takes
    mcp->lock and enables regmap caching, so that the potentially slow I2C
    accesses are deferred until chip_bus_unlock().
    
    The accesses to the regmap from mcp23s08_probe_one() do not need additional
    locking.
    
    In all remaining places where the regmap is accessed, except
    mcp_pinconf_get/set(), the driver already takes mcp->lock.
    
    This patch adds locking in mcp_pinconf_get/set() and disables internal
    locking in the regmap config. Among other things, it fixes the sleeping
    in atomic context described above.
    
    Fixes: 8f38910ba4f6 ("pinctrl: mcp23s08: switch to regmap caching")
    Cc: [email protected]
    Signed-off-by: Evgenii Shatokhin <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
platform/x86: hp-wmi: mark 8A15 board for timed OMEN thermal profile [+ + +]
Author: Mingcong Bai <[email protected]>
Date:   Thu Dec 26 14:22:05 2024 +0800

    platform/x86: hp-wmi: mark 8A15 board for timed OMEN thermal profile
    
    commit 032fe9b0516702599c2dd990a4703f783d5716b8 upstream.
    
    The HP OMEN 8 (2022), corresponding to a board ID of 8A15, supports OMEN
    thermal profile and requires the timed profile quirk.
    
    Upon adding this ID to both the omen_thermal_profile_boards and
    omen_timed_thermal_profile_boards, significant bump in performance can be
    observed. For instance, SilverBench (https://silver.urih.com/) results
    improved from ~56,000 to ~69,000, as a result of higher power draws (and
    thus core frequencies) whilst under load:
    
    Package Power:
    
    - Before the patch: ~65W (dropping to about 55W under sustained load).
    - After the patch: ~115W (dropping to about 105W under sustained load).
    
    Core Power:
    
    - Before: ~60W (ditto above).
    - After: ~108W (ditto above).
    
    Add 8A15 to omen_thermal_profile_boards and
    omen_timed_thermal_profile_boards to improve performance.
    
    Signed-off-by: Xi Xiao <[email protected]>
    Signed-off-by: Mingcong Bai <[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: Greg Kroah-Hartman <[email protected]>

platform/x86: mlx-platform: call pci_dev_put() to balance the refcount [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Mon Dec 16 11:25:38 2024 +0900

    platform/x86: mlx-platform: call pci_dev_put() to balance the refcount
    
    [ Upstream commit 185e1b1d91e419445d3fd99c1c0376a970438acf ]
    
    mlxplat_pci_fpga_device_init() calls pci_get_device() but does not
    release the refcount on error path. Call pci_dev_put() on the error path
    and in mlxplat_pci_fpga_device_exit() to fix this.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 02daa222fbdd ("platform: mellanox: Add initial support for PCIe based programming logic device")
    Signed-off-by: Joe Hattori <[email protected]>
    Reviewed-by: Vadim Pasternak <[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]>
platform/x86: thinkpad-acpi: Add support for hotkey 0x1401 [+ + +]
Author: Vishnu Sankar <[email protected]>
Date:   Sat Dec 28 08:18:40 2024 +0900

    platform/x86: thinkpad-acpi: Add support for hotkey 0x1401
    
    commit 7e16ae558a87ac9099b6a93a43f19b42d809fd78 upstream.
    
    F8 mode key on Lenovo 2025 platforms use a different key code.
    Adding support for the new keycode 0x1401.
    
    Tested on X1 Carbon Gen 13 and X1 2-in-1 Gen 10.
    
    Signed-off-by: Vishnu Sankar <[email protected]>
    Reviewed-by: Mark Pearson <[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: Greg Kroah-Hartman <[email protected]>

 
pmdomain: core: add dummy release function to genpd device [+ + +]
Author: Lucas Stach <[email protected]>
Date:   Wed Dec 18 19:44:33 2024 +0100

    pmdomain: core: add dummy release function to genpd device
    
    commit f64f610ec6ab59dd0391b03842cea3a4cd8ee34f upstream.
    
    The genpd device, which is really only used as a handle to lookup
    OPP, but not even registered to the device core otherwise and thus
    lifetime linked to the genpd struct it is contained in, is missing
    a release function. After b8f7bbd1f4ec ("pmdomain: core: Add
    missing put_device()") the device will be cleaned up going through
    the driver core device_release() function, which will warn when no
    release callback is present for the device. Add a dummy release
    function to shut up the warning.
    
    Signed-off-by: Lucas Stach <[email protected]>
    Tested-by: Luca Ceresoli <[email protected]>
    Fixes: b8f7bbd1f4ec ("pmdomain: core: Add missing put_device()")
    Cc: [email protected]
    Message-ID: <[email protected]>
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pmdomain: imx: gpcv2: fix an OF node reference leak in imx_gpcv2_probe() [+ + +]
Author: Joe Hattori <[email protected]>
Date:   Sun Dec 15 12:01:59 2024 +0900

    pmdomain: imx: gpcv2: fix an OF node reference leak in imx_gpcv2_probe()
    
    commit 469c0682e03d67d8dc970ecaa70c2d753057c7c0 upstream.
    
    imx_gpcv2_probe() leaks an OF node reference obtained by
    of_get_child_by_name(). Fix it by declaring the device node with the
    __free(device_node) cleanup construct.
    
    This bug was found by an experimental static analysis tool that I am
    developing.
    
    Fixes: 03aa12629fc4 ("soc: imx: Add GPCv2 power gating driver")
    Signed-off-by: Joe Hattori <[email protected]>
    Cc: [email protected]
    Message-ID: <[email protected]>
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
RDMA/bnxt_re: Add check for path mtu in modify_qp [+ + +]
Author: Saravanan Vajravel <[email protected]>
Date:   Wed Dec 11 14:09:28 2024 +0530

    RDMA/bnxt_re: Add check for path mtu in modify_qp
    
    [ Upstream commit 798653a0ee30d3cd495099282751c0f248614ae7 ]
    
    When RDMA app configures path MTU, add a check in modify_qp verb
    to make sure that it doesn't go beyond interface MTU. If this
    check fails, driver will fail the modify_qp verb.
    
    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Saravanan Vajravel <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Add send queue size check for variable wqe [+ + +]
Author: Damodharam Ammepalli <[email protected]>
Date:   Tue Dec 17 15:56:47 2024 +0530

    RDMA/bnxt_re: Add send queue size check for variable wqe
    
    [ Upstream commit d13be54dc18baee7a3e44349b80755a8c8205d3f ]
    
    For the fixed WQE case, HW supports 0xFFFF WQEs.
    For variable Size WQEs, HW treats this number as
    the 16 bytes slots. The maximum supported WQEs
    needs to be adjusted based on the number of slots.
    Set a maximum WQE limit for variable WQE scenario.
    
    Fixes: de1d364c3815 ("RDMA/bnxt_re: Add support for Variable WQE in Genp7 adapters")
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Damodharam Ammepalli <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Avoid initializing the software queue for user queues [+ + +]
Author: Selvin Xavier <[email protected]>
Date:   Wed Dec 4 13:24:13 2024 +0530

    RDMA/bnxt_re: Avoid initializing the software queue for user queues
    
    [ Upstream commit 5effcacc8a8f3eb2a9f069d7e81a9ac793598dfb ]
    
    Software Queues to hold the WRs needs to be created
    for only kernel queues. Avoid allocating the unnecessary
    memory for user Queues.
    
    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Fixes: 159fb4ceacd7 ("RDMA/bnxt_re: introduce a function to allocate swq")
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Avoid sending the modify QP workaround for latest adapters [+ + +]
Author: Kashyap Desai <[email protected]>
Date:   Wed Dec 4 13:24:14 2024 +0530

    RDMA/bnxt_re: Avoid sending the modify QP workaround for latest adapters
    
    [ Upstream commit 064c22408a73b9e945139b64614c534cbbefb591 ]
    
    The workaround to modify the UD QP from RTS to RTS is required
    only for older adapters. Issuing this for latest adapters can caus
    some unexpected behavior. Fix it
    
    Fixes: 1801d87b3598 ("RDMA/bnxt_re: Support new 5760X P7 devices")
    Signed-off-by: Kashyap Desai <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Disable use of reserved wqes [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Tue Dec 17 15:56:46 2024 +0530

    RDMA/bnxt_re: Disable use of reserved wqes
    
    [ Upstream commit d5a38bf2f35979537c526acbc56bc435ed40685f ]
    
    Disabling the reserved wqes logic for Gen P5/P7 devices
    because this workaround is required only for legacy devices.
    
    Fixes: ecb53febfcad ("RDMA/bnxt_en: Enable RDMA driver support for 57500 chip")
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix error recovery sequence [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Tue Dec 31 08:20:08 2024 +0530

    RDMA/bnxt_re: Fix error recovery sequence
    
    [ Upstream commit e6178bf78d0378c2d397a6aafaf4882d0af643fa ]
    
    Fixed to return ENXIO from __send_message_basic_sanity()
    to indicate that device is in error state. In the case of
    ERR_DEVICE_DETACHED state, the driver should not post the
    commands to the firmware as it will time out eventually.
    
    Removed bnxt_re_modify_qp() call from bnxt_re_dev_stop()
    as it is a no-op.
    
    Fixes: cc5b9b48d447 ("RDMA/bnxt_re: Recover the device when FW error is detected")
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Kashyap Desai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Selvin Xavier <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix max SGEs for the Work Request [+ + +]
Author: Kashyap Desai <[email protected]>
Date:   Wed Dec 4 13:24:12 2024 +0530

    RDMA/bnxt_re: Fix max SGEs for the Work Request
    
    [ Upstream commit 79d330fbdffd8cee06d8bdf38d82cb62d8363a27 ]
    
    Gen P7 supports up to 13 SGEs for now. WQE software structure
    can hold only 6 now. Since the max send sge is reported as
    13, the stack can give requests up to 13 SGEs. This is causing
    traffic failures and system crashes.
    
    Use the define for max SGE supported for variable size. This
    will work for both static and variable WQEs.
    
    Fixes: 227f51743b61 ("RDMA/bnxt_re: Fix the max WQE size for static WQE support")
    Signed-off-by: Kashyap Desai <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix max_qp_wrs reported [+ + +]
Author: Selvin Xavier <[email protected]>
Date:   Tue Dec 17 15:56:45 2024 +0530

    RDMA/bnxt_re: Fix max_qp_wrs reported
    
    [ Upstream commit 40be32303ec829ea12f9883e499bfd3fe9e52baf ]
    
    While creating qps, driver adds one extra entry to the sq size
    passed by the ULPs in order to avoid queue full condition.
    When ULPs creates QPs with max_qp_wr reported, driver creates
    QP with 1 more than the max_wqes supported by HW. Create QP fails
    in this case. To avoid this error, reduce 1 entry in max_qp_wqes
    and report it to the stack.
    
    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix MSN table size for variable wqe mode [+ + +]
Author: Damodharam Ammepalli <[email protected]>
Date:   Tue Dec 17 15:56:48 2024 +0530

    RDMA/bnxt_re: Fix MSN table size for variable wqe mode
    
    [ Upstream commit bb839f3ace0fee532a0487b692cc4d868fccb7cf ]
    
    For variable size wqe mode, the MSN table size should be
    half the size of the SQ depth. Fixing this to avoid wrap
    around problems in the retransmission path.
    
    Fixes: de1d364c3815 ("RDMA/bnxt_re: Add support for Variable WQE in Genp7 adapters")
    Reviewed-by: Kashyap Desai <[email protected]>
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Damodharam Ammepalli <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix reporting hw_ver in query_device [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Wed Dec 11 14:09:31 2024 +0530

    RDMA/bnxt_re: Fix reporting hw_ver in query_device
    
    [ Upstream commit 7179fe0074a3c962e43a9e51169304c4911989ed ]
    
    Driver currently populates subsystem_device id in the
    "hw_ver" field of ib_attr structure in query_device.
    
    Updated to populate PCI revision ID.
    
    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Reviewed-by: Preethi G <[email protected]>
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix the check for 9060 condition [+ + +]
Author: Kalesh AP <[email protected]>
Date:   Wed Dec 11 14:09:27 2024 +0530

    RDMA/bnxt_re: Fix the check for 9060 condition
    
    [ Upstream commit 38651476e46e088598354510502c383e932e2297 ]
    
    The check for 9060 condition should only be made for legacy chips.
    
    Fixes: 9152e0b722b2 ("RDMA/bnxt_re: HW workarounds for handling specific conditions")
    Reviewed-by: Kashyap Desai <[email protected]>
    Signed-off-by: Kalesh AP <[email protected]>
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Fix the locking while accessing the QP table [+ + +]
Author: Selvin Xavier <[email protected]>
Date:   Tue Dec 17 15:56:49 2024 +0530

    RDMA/bnxt_re: Fix the locking while accessing the QP table
    
    [ Upstream commit 9272cba0ded71b5a2084da3004ec7806b8cb7fd2 ]
    
    QP table handling is synchronized with destroy QP and Async
    event from the HW. The same needs to be synchronized
    during create_qp also. Use the same lock in create_qp also.
    
    Fixes: 76d3ddff7153 ("RDMA/bnxt_re: synchronize the qp-handle table array")
    Fixes: f218d67ef004 ("RDMA/bnxt_re: Allow posting when QPs are in error")
    Fixes: 84cf229f4001 ("RDMA/bnxt_re: Fix the qp table indexing")
    Signed-off-by: Selvin Xavier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/bnxt_re: Remove always true dattr validity check [+ + +]
Author: Leon Romanovsky <[email protected]>
Date:   Tue Nov 26 15:10:31 2024 +0200

    RDMA/bnxt_re: Remove always true dattr validity check
    
    [ Upstream commit eb867d797d294a00a092b5027d08439da68940b2 ]
    
    res->dattr is always valid at this point as it was initialized
    during device addition in bnxt_re_add_device().
    
    This change is fixing the following smatch error:
    drivers/infiniband/hw/bnxt_re/qplib_fp.c:1090 bnxt_qplib_create_qp()
         error: we previously assumed 'res->dattr' could be null (see line 985)
    
    Fixes: 07f830ae4913 ("RDMA/bnxt_re: Adds MSN table capability for Gen P7 adapters")
    Reported-by: kernel test robot <[email protected]>
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Link: https://patch.msgid.link/be0d8836b64cba3e479fbcbca717acad04aae02e.1732626579.git.leonro@nvidia.com
    Acked-by: Selvin Xavier <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/core: Fix ENODEV error for iWARP test over vlan [+ + +]
Author: Anumula Murali Mohan Reddy <[email protected]>
Date:   Tue Dec 3 19:30:53 2024 +0530

    RDMA/core: Fix ENODEV error for iWARP test over vlan
    
    [ Upstream commit a4048c83fd87c65657a4acb17d639092d4b6133d ]
    
    If traffic is over vlan, cma_validate_port() fails to match
    net_device ifindex with bound_if_index and results in ENODEV error.
    As iWARP gid table is static, it contains entry corresponding  to
    only one net device which is either real netdev or vlan netdev for
    cases like  siw attached to a vlan interface.
    This patch fixes the issue by assigning bound_if_index with net
    device index, if real net device obtained from bound if index matches
    with net device retrieved from gid table
    
    Fixes: f8ef1be816bf ("RDMA/cma: Avoid GID lookups on iWARP devices")
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Anumula Murali Mohan Reddy <[email protected]>
    Signed-off-by: Potnuri Bharat Teja <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/hns: Fix accessing invalid dip_ctx during destroying QP [+ + +]
Author: Chengchang Tang <[email protected]>
Date:   Fri Dec 20 13:52:47 2024 +0800

    RDMA/hns: Fix accessing invalid dip_ctx during destroying QP
    
    [ Upstream commit 0572eccf239ce4bd89bd531767ec5ab20e249290 ]
    
    If it fails to modify QP to RTR, dip_ctx will not be attached. And
    during detroying QP, the invalid dip_ctx pointer will be accessed.
    
    Fixes: faa62440a577 ("RDMA/hns: Fix different dgids mapping to the same dip_idx")
    Signed-off-by: Chengchang Tang <[email protected]>
    Signed-off-by: Junxian Huang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/hns: Fix mapping error of zero-hop WQE buffer [+ + +]
Author: wenglianfa <[email protected]>
Date:   Fri Dec 20 13:52:46 2024 +0800

    RDMA/hns: Fix mapping error of zero-hop WQE buffer
    
    [ Upstream commit 8673a6c2d9e483dfeeef83a1f06f59e05636f4d1 ]
    
    Due to HW limitation, the three region of WQE buffer must be mapped
    and set to HW in a fixed order: SQ buffer, SGE buffer, and RQ buffer.
    
    Currently when one region is zero-hop while the other two are not,
    the zero-hop region will not be mapped. This violate the limitation
    above and leads to address error.
    
    Fixes: 38389eaa4db1 ("RDMA/hns: Add mtr support for mixed multihop addressing")
    Signed-off-by: wenglianfa <[email protected]>
    Signed-off-by: Junxian Huang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/hns: Fix missing flush CQE for DWQE [+ + +]
Author: Chengchang Tang <[email protected]>
Date:   Fri Dec 20 13:52:49 2024 +0800

    RDMA/hns: Fix missing flush CQE for DWQE
    
    [ Upstream commit e3debdd48423d3d75b9d366399228d7225d902cd ]
    
    Flush CQE handler has not been called if QP state gets into errored
    mode in DWQE path. So, the new added outstanding WQEs will never be
    flushed.
    
    It leads to a hung task timeout when using NFS over RDMA:
        __switch_to+0x7c/0xd0
        __schedule+0x350/0x750
        schedule+0x50/0xf0
        schedule_timeout+0x2c8/0x340
        wait_for_common+0xf4/0x2b0
        wait_for_completion+0x20/0x40
        __ib_drain_sq+0x140/0x1d0 [ib_core]
        ib_drain_sq+0x98/0xb0 [ib_core]
        rpcrdma_xprt_disconnect+0x68/0x270 [rpcrdma]
        xprt_rdma_close+0x20/0x60 [rpcrdma]
        xprt_autoclose+0x64/0x1cc [sunrpc]
        process_one_work+0x1d8/0x4e0
        worker_thread+0x154/0x420
        kthread+0x108/0x150
        ret_from_fork+0x10/0x18
    
    Fixes: 01584a5edcc4 ("RDMA/hns: Add support of direct wqe")
    Signed-off-by: Chengchang Tang <[email protected]>
    Signed-off-by: Junxian Huang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/hns: Fix warning storm caused by invalid input in IO path [+ + +]
Author: Chengchang Tang <[email protected]>
Date:   Fri Dec 20 13:52:48 2024 +0800

    RDMA/hns: Fix warning storm caused by invalid input in IO path
    
    [ Upstream commit fa5c4ba8cdbfd2c2d6422e001311c8213283ebbf ]
    
    WARN_ON() is called in the IO path. And it could lead to a warning
    storm. Use WARN_ON_ONCE() instead of WARN_ON().
    
    Fixes: 12542f1de179 ("RDMA/hns: Refactor process about opcode in post_send()")
    Signed-off-by: Chengchang Tang <[email protected]>
    Signed-off-by: Junxian Huang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/mlx5: Enable multiplane mode only when it is supported [+ + +]
Author: Mark Zhang <[email protected]>
Date:   Thu Dec 19 14:23:36 2024 +0200

    RDMA/mlx5: Enable multiplane mode only when it is supported
    
    commit 45d339fefaa3dcd237038769e0d34584fb867390 upstream.
    
    Driver queries vport_cxt.num_plane and enables multiplane when it is
    greater then 0, but some old FWs (versions from x.40.1000 till x.42.1000),
    report vport_cxt.num_plane = 1 unexpectedly.
    
    Fix it by querying num_plane only when HCA_CAP2.multiplane bit is set.
    
    Fixes: 2a5db20fa532 ("RDMA/mlx5: Add support to multi-plane device and port")
    Link: https://patch.msgid.link/r/1ef901acdf564716fcf550453cf5e94f343777ec.1734610916.git.leon@kernel.org
    Cc: [email protected]
    Reported-by: Francesco Poli <[email protected]>
    Closes: https://lore.kernel.org/all/nvs4i2v7o6vn6zhmtq4sgazy2hu5kiulukxcntdelggmznnl7h@so3oul6uwgbl/
    Signed-off-by: Mark Zhang <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

RDMA/mlx5: Enforce same type port association for multiport RoCE [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Tue Dec 3 15:45:37 2024 +0200

    RDMA/mlx5: Enforce same type port association for multiport RoCE
    
    [ Upstream commit e05feab22fd7dabcd6d272c4e2401ec1acdfdb9b ]
    
    Different core device types such as PFs and VFs shouldn't be affiliated
    together since they have different capabilities, fix that by enforcing
    type check before doing the affiliation.
    
    Fixes: 32f69e4be269 ("{net, IB}/mlx5: Manage port association for multiport RoCE")
    Reviewed-by: Mark Bloch <[email protected]>
    Signed-off-by: Patrisious Haddad <[email protected]>
    Link: https://patch.msgid.link/88699500f690dff1c1852c1ddb71f8a1cc8b956e.1733233480.git.leonro@nvidia.com
    Reviewed-by: Mateusz Polchlopek <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/nldev: Set error code in rdma_nl_notify_event [+ + +]
Author: Chiara Meiohas <[email protected]>
Date:   Tue Dec 10 09:33:10 2024 +0200

    RDMA/nldev: Set error code in rdma_nl_notify_event
    
    [ Upstream commit 13a6691910cc23ea9ba4066e098603088673d5b0 ]
    
    In case of error set the error code before the goto.
    
    Fixes: 6ff57a2ea7c2 ("RDMA/nldev: Fix NULL pointer dereferences issue in rdma_nl_notify_event")
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/linux-rdma/[email protected]/
    Signed-off-by: Chiara Meiohas <[email protected]>
    Reviewed-by: Maher Sanalla <[email protected]>
    Link: https://patch.msgid.link/13eb25961923f5de9eb9ecbbc94e26113d6049ef.1733815944.git.leonro@nvidia.com
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/rtrs: Ensure 'ib_sge list' is accessible [+ + +]
Author: Li Zhijian <[email protected]>
Date:   Tue Dec 31 09:34:16 2024 +0800

    RDMA/rtrs: Ensure 'ib_sge list' is accessible
    
    [ Upstream commit fb514b31395946022f13a08e06a435f53cf9e8b3 ]
    
    Move the declaration of the 'ib_sge list' variable outside the
    'always_invalidate' block to ensure it remains accessible for use
    throughout the function.
    
    Previously, 'ib_sge list' was declared within the 'always_invalidate'
    block, limiting its accessibility, then caused a
    'BUG: kernel NULL pointer dereference'[1].
     ? __die_body.cold+0x19/0x27
     ? page_fault_oops+0x15a/0x2d0
     ? search_module_extables+0x19/0x60
     ? search_bpf_extables+0x5f/0x80
     ? exc_page_fault+0x7e/0x180
     ? asm_exc_page_fault+0x26/0x30
     ? memcpy_orig+0xd5/0x140
     rxe_mr_copy+0x1c3/0x200 [rdma_rxe]
     ? rxe_pool_get_index+0x4b/0x80 [rdma_rxe]
     copy_data+0xa5/0x230 [rdma_rxe]
     rxe_requester+0xd9b/0xf70 [rdma_rxe]
     ? finish_task_switch.isra.0+0x99/0x2e0
     rxe_sender+0x13/0x40 [rdma_rxe]
     do_task+0x68/0x1e0 [rdma_rxe]
     process_one_work+0x177/0x330
     worker_thread+0x252/0x390
     ? __pfx_worker_thread+0x10/0x10
    
    This change ensures the variable is available for subsequent operations
    that require it.
    
    [1] https://lore.kernel.org/linux-rdma/[email protected]/
    
    Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
    Signed-off-by: Li Zhijian <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/rxe: Remove the direct link to net_device [+ + +]
Author: Zhu Yanjun <[email protected]>
Date:   Fri Dec 20 23:23:25 2024 +0100

    RDMA/rxe: Remove the direct link to net_device
    
    [ Upstream commit 2ac5415022d16d63d912a39a06f32f1f51140261 ]
    
    The similar patch in siw is in the link:
    https://git.kernel.org/rdma/rdma/c/16b87037b48889
    
    This problem also occurred in RXE. The following analyze this problem.
    In the following Call Traces:
    "
    BUG: KASAN: slab-use-after-free in dev_get_flags+0x188/0x1d0 net/core/dev.c:8782
    Read of size 4 at addr ffff8880554640b0 by task kworker/1:4/5295
    
    CPU: 1 UID: 0 PID: 5295 Comm: kworker/1:4 Not tainted
    6.12.0-rc3-syzkaller-00399-g9197b73fd7bb #0
    Hardware name: Google Compute Engine/Google Compute Engine,
    BIOS Google 09/13/2024
    Workqueue: infiniband ib_cache_event_task
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:377 [inline]
     print_report+0x169/0x550 mm/kasan/report.c:488
     kasan_report+0x143/0x180 mm/kasan/report.c:601
     dev_get_flags+0x188/0x1d0 net/core/dev.c:8782
     rxe_query_port+0x12d/0x260 drivers/infiniband/sw/rxe/rxe_verbs.c:60
     __ib_query_port drivers/infiniband/core/device.c:2111 [inline]
     ib_query_port+0x168/0x7d0 drivers/infiniband/core/device.c:2143
     ib_cache_update+0x1a9/0xb80 drivers/infiniband/core/cache.c:1494
     ib_cache_event_task+0xf3/0x1e0 drivers/infiniband/core/cache.c:1568
     process_one_work kernel/workqueue.c:3229 [inline]
     process_scheduled_works+0xa65/0x1850 kernel/workqueue.c:3310
     worker_thread+0x870/0xd30 kernel/workqueue.c:3391
     kthread+0x2f2/0x390 kernel/kthread.c:389
     ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
     </TASK>
    "
    
    1). In the link [1],
    
    "
     infiniband syz2: set down
    "
    
    This means that on 839.350575, the event ib_cache_event_task was sent andi
    queued in ib_wq.
    
    2). In the link [1],
    
    "
     team0 (unregistering): Port device team_slave_0 removed
    "
    
    It indicates that before 843.251853, the net device should be freed.
    
    3). In the link [1],
    
    "
     BUG: KASAN: slab-use-after-free in dev_get_flags+0x188/0x1d0
    "
    
    This means that on 850.559070, this slab-use-after-free problem occurred.
    
    In all, on 839.350575, the event ib_cache_event_task was sent and queued
    in ib_wq,
    
    before 843.251853, the net device veth was freed.
    
    on 850.559070, this event was executed, and the mentioned freed net device
    was called. Thus, the above call trace occurred.
    
    [1] https://syzkaller.appspot.com/x/log.txt?x=12e7025f980000
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=4b87489410b4efd181bf
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Zhu Yanjun <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/siw: Remove direct link to net_device [+ + +]
Author: Bernard Metzler <[email protected]>
Date:   Thu Dec 12 16:18:48 2024 +0100

    RDMA/siw: Remove direct link to net_device
    
    [ Upstream commit 16b87037b48889d21854c8e97aec8a1baf2642b3 ]
    
    Do not manage a per device direct link to net_device. Rely
    on associated ib_devices net_device management, not doubling
    the effort locally. A badly managed local link to net_device
    was causing a 'KASAN: slab-use-after-free' exception during
    siw_query_port() call.
    
    Fixes: bdcf26bf9b3a ("rdma/siw: network and RDMA core interface")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=4b87489410b4efd181bf
    Signed-off-by: Bernard Metzler <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Zhu Yanjun <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/uverbs: Prevent integer overflow issue [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Sat Nov 30 13:06:41 2024 +0300

    RDMA/uverbs: Prevent integer overflow issue
    
    commit d0257e089d1bbd35c69b6c97ff73e3690ab149a9 upstream.
    
    In the expression "cmd.wqe_size * cmd.wr_count", both variables are u32
    values that come from the user so the multiplication can lead to integer
    wrapping.  Then we pass the result to uverbs_request_next_ptr() which also
    could potentially wrap.  The "cmd.sge_count * sizeof(struct ib_uverbs_sge)"
    multiplication can also overflow on 32bit systems although it's fine on
    64bit systems.
    
    This patch does two things.  First, I've re-arranged the condition in
    uverbs_request_next_ptr() so that the use controlled variable "len" is on
    one side of the comparison by itself without any math.  Then I've modified
    all the callers to use size_mul() for the multiplications.
    
    Fixes: 67cdb40ca444 ("[IB] uverbs: Implement more commands")
    Cc: [email protected]
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "ALSA: ump: Don't enumeration invalid groups for legacy rawmidi" [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Mon Dec 30 12:40:22 2024 +0100

    Revert "ALSA: ump: Don't enumeration invalid groups for legacy rawmidi"
    
    commit abbff41b6932cde359589fd51f4024b7c85f366b upstream.
    
    This reverts commit c2d188e137e77294323132a760a4608321a36a70.
    
    Although it's fine to filter the invalid UMP groups at the first probe
    time, this will become a problem when UMP groups are updated and
    (re-)activated.  Then there is no way to re-add the substreams
    properly for the legacy rawmidi, and the new active groups will be
    still invisible.
    
    So let's revert the change.  This will move back to showing the full
    16 groups, but it's better than forever lost.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sched_ext: fix application of sizeof to pointer [+ + +]
Author: guanjing <[email protected]>
Date:   Sun Nov 17 10:51:29 2024 +0800

    sched_ext: fix application of sizeof to pointer
    
    [ Upstream commit f24d192985cbd6782850fdbb3839039da2f0ee76 ]
    
    sizeof when applied to a pointer typed expression gives the size of
    the pointer.
    
    The proper fix in this particular case is to code sizeof(*cpuset)
    instead of sizeof(cpuset).
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: 22a920209ab6 ("sched_ext: Implement tickless support")
    Signed-off-by: guanjing <[email protected]>
    Acked-by: Andrea Righi <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sched_ext: Fix invalid irq restore in scx_ops_bypass() [+ + +]
Author: Tejun Heo <[email protected]>
Date:   Wed Dec 11 11:01:51 2024 -1000

    sched_ext: Fix invalid irq restore in scx_ops_bypass()
    
    commit 18b2093f4598d8ee67a8153badc93f0fa7686b8a upstream.
    
    While adding outer irqsave/restore locking, 0e7ffff1b811 ("scx: Fix raciness
    in scx_ops_bypass()") forgot to convert an inner rq_unlock_irqrestore() to
    rq_unlock() which could re-enable IRQ prematurely leading to the following
    warning:
    
      raw_local_irq_restore() called with IRQs enabled
      WARNING: CPU: 1 PID: 96 at kernel/locking/irqflag-debug.c:10 warn_bogus_irq_restore+0x30/0x40
      ...
      Sched_ext: create_dsq (enabling)
      pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : warn_bogus_irq_restore+0x30/0x40
      lr : warn_bogus_irq_restore+0x30/0x40
      ...
      Call trace:
       warn_bogus_irq_restore+0x30/0x40 (P)
       warn_bogus_irq_restore+0x30/0x40 (L)
       scx_ops_bypass+0x224/0x3b8
       scx_ops_enable.isra.0+0x2c8/0xaa8
       bpf_scx_reg+0x18/0x30
      ...
      irq event stamp: 33739
      hardirqs last  enabled at (33739): [<ffff8000800b699c>] scx_ops_bypass+0x174/0x3b8
      hardirqs last disabled at (33738): [<ffff800080d48ad4>] _raw_spin_lock_irqsave+0xb4/0xd8
    
    Drop the stray _irqrestore().
    
    Signed-off-by: Tejun Heo <[email protected]>
    Reported-by: Ihor Solodrai <[email protected]>
    Link: http://lkml.kernel.org/r/qC39k3UsonrBYD_SmuxHnZIQLsuuccoCrkiqb_BT7DvH945A1_LZwE4g-5Pu9FcCtqZt4lY1HhIPi0homRuNWxkgo1rgP3bkxa0donw8kV4=@pm.me
    Fixes: 0e7ffff1b811 ("scx: Fix raciness in scx_ops_bypass()")
    Cc: [email protected] # v6.12
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

sched_ext: initialize kit->cursor.flags [+ + +]
Author: Henry Huang <[email protected]>
Date:   Sun Dec 22 23:43:16 2024 +0800

    sched_ext: initialize kit->cursor.flags
    
    commit 35bf430e08a18fdab6eb94492a06d9ad14c6179b upstream.
    
    struct bpf_iter_scx_dsq *it maybe not initialized.
    If we didn't call scx_bpf_dsq_move_set_vtime and scx_bpf_dsq_move_set_slice
    before scx_bpf_dsq_move, it would cause unexpected behaviors:
    1. Assign a huge slice into p->scx.slice
    2. Assign a invalid vtime into p->scx.dsq_vtime
    
    Signed-off-by: Henry Huang <[email protected]>
    Fixes: 6462dd53a260 ("sched_ext: Compact struct bpf_iter_scx_dsq_kern")
    Cc: [email protected] # v6.12
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
scripts/mksysmap: Fix escape chars '$' [+ + +]
Author: Mostafa Saleh <[email protected]>
Date:   Mon Dec 23 12:44:53 2024 +0000

    scripts/mksysmap: Fix escape chars '$'
    
    [ Upstream commit 7a6c355b55c051eb37cb15d191241da3aa3d6cba ]
    
    Commit b18b047002b7 ("kbuild: change scripts/mksysmap into sed script")
    changed the invocation of the script, to call sed directly without
    shell.
    
    That means, the current extra escape that was added in:
    commit ec336aa83162 ("scripts/mksysmap: Fix badly escaped '$'")
    for the shell is not correct any more, at the moment the stack traces
    for nvhe are corrupted:
    [   22.840904] kvm [190]:  [<ffff80008116dd54>] __kvm_nvhe_$x.220+0x58/0x9c
    [   22.842913] kvm [190]:  [<ffff8000811709bc>] __kvm_nvhe_$x.9+0x44/0x50
    [   22.844112] kvm [190]:  [<ffff80008116f8fc>] __kvm_nvhe___skip_pauth_save+0x4/0x4
    
    With this patch:
    [   25.793513] kvm [192]: nVHE call trace:
    [   25.794141] kvm [192]:  [<ffff80008116dd54>] __kvm_nvhe_hyp_panic+0xb0/0xf4
    [   25.796590] kvm [192]:  [<ffff8000811709bc>] __kvm_nvhe_handle_trap+0xe4/0x188
    [   25.797553] kvm [192]:  [<ffff80008116f8fc>] __kvm_nvhe___skip_pauth_save+0x4/0x4
    
    Fixes: b18b047002b7 ("kbuild: change scripts/mksysmap into sed script")
    Signed-off-by: Mostafa Saleh <[email protected]>
    Reviewed-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scripts/sorttable: fix orc_sort_cmp() to maintain symmetry and transitivity [+ + +]
Author: Kuan-Wei Chiu <[email protected]>
Date:   Thu Dec 26 22:03:32 2024 +0800

    scripts/sorttable: fix orc_sort_cmp() to maintain symmetry and transitivity
    
    commit 0210d251162f4033350a94a43f95b1c39ec84a90 upstream.
    
    The orc_sort_cmp() function, used with qsort(), previously violated the
    symmetry and transitivity rules required by the C standard.  Specifically,
    when both entries are ORC_TYPE_UNDEFINED, it could result in both a < b
    and b < a, which breaks the required symmetry and transitivity.  This can
    lead to undefined behavior and incorrect sorting results, potentially
    causing memory corruption in glibc implementations [1].
    
    Symmetry: If x < y, then y > x.
    Transitivity: If x < y and y < z, then x < z.
    
    Fix the comparison logic to return 0 when both entries are
    ORC_TYPE_UNDEFINED, ensuring compliance with qsort() requirements.
    
    Link: https://www.qualys.com/2024/01/30/qsort.txt [1]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 57fa18994285 ("scripts/sorttable: Implement build-time ORC unwind table sorting")
    Fixes: fb799447ae29 ("x86,objtool: Split UNWIND_HINT_EMPTY in two")
    Signed-off-by: Kuan-Wei Chiu <[email protected]>
    Cc: Ching-Chun (Jim) Huang <[email protected]>
    Cc: <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Shile Zhang <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
selftests: net: local_termination: require mausezahn [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Thu Dec 19 17:54:10 2024 +0200

    selftests: net: local_termination: require mausezahn
    
    [ Upstream commit 246068b86b1c36e4590388ab8f278e21f1997dc1 ]
    
    Since the blamed commit, we require mausezahn because send_raw() uses it.
    Remove the "REQUIRE_MZ=no" line, which overwrites the default of requiring it.
    
    Fixes: 237979504264 ("selftests: net: local_termination: add PTP frames to the mix")
    Signed-off-by: Vladimir Oltean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selinux: ignore unknown extended permissions [+ + +]
Author: Thiébaud Weksteen <[email protected]>
Date:   Thu Dec 5 12:09:19 2024 +1100

    selinux: ignore unknown extended permissions
    
    commit 900f83cf376bdaf798b6f5dcb2eae0c822e908b6 upstream.
    
    When evaluating extended permissions, ignore unknown permissions instead
    of calling BUG(). This commit ensures that future permissions can be
    added without interfering with older kernels.
    
    Cc: [email protected]
    Fixes: fa1aa143ac4a ("selinux: extended permissions for ioctls")
    Signed-off-by: Thiébaud Weksteen <[email protected]>
    Signed-off-by: Paul Moore <[email protected]>
    Acked-by: Paul Moore <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sky2: Add device ID 11ab:4373 for Marvell 88E8075 [+ + +]
Author: Pascal Hambourg <[email protected]>
Date:   Mon Dec 23 17:44:01 2024 +0100

    sky2: Add device ID 11ab:4373 for Marvell 88E8075
    
    commit 03c8d0af2e409e15c16130b185e12b5efba0a6b9 upstream.
    
    A Marvell 88E8075 ethernet controller has this device ID instead of
    11ab:4370 and works fine with the sky2 driver.
    
    Signed-off-by: Pascal Hambourg <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
smb: client: destroy cfid_put_wq on module exit [+ + +]
Author: Enzo Matsumiya <[email protected]>
Date:   Tue Dec 10 10:21:48 2024 -0300

    smb: client: destroy cfid_put_wq on module exit
    
    [ Upstream commit 633609c48a358134d3f8ef8241dff24841577f58 ]
    
    Fix potential problem in rmmod
    
    Signed-off-by: Enzo Matsumiya <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sound: usb: enable DSD output for ddHiFi TC44C [+ + +]
Author: Adrian Ratiu <[email protected]>
Date:   Mon Dec 9 11:05:28 2024 +0200

    sound: usb: enable DSD output for ddHiFi TC44C
    
    [ Upstream commit c84bd6c810d1880194fea2229c7086e4b73fddc1 ]
    
    This is a UAC 2 DAC capable of raw DSD on intf 2 alt 4:
    
    Bus 007 Device 004: ID 262a:9302 SAVITECH Corp. TC44C
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2 [unknown]
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x262a SAVITECH Corp.
      idProduct          0x9302 TC44C
      bcdDevice            0.01
      iManufacturer           1 DDHIFI
      iProduct                2 TC44C
      iSerial                 6 5000000001
    .......
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       4
          bNumEndpoints           2
          bInterfaceClass         1 Audio
          bInterfaceSubClass      2 Streaming
          bInterfaceProtocol      32
          iInterface              0
            AudioStreaming Interface Descriptor:
              bLength                16
              bDescriptorType        36
              bDescriptorSubtype     1 (AS_GENERAL)
              bTerminalLink          3
              bmControls             0x00
              bFormatType            1
              bmFormats              0x80000000
              bNrChannels            2
              bmChannelConfig        0x00000000
              iChannelNames          0
    .......
    
    Signed-off-by: Adrian Ratiu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sound: usb: format: don't warn that raw DSD is unsupported [+ + +]
Author: Adrian Ratiu <[email protected]>
Date:   Mon Dec 9 11:05:29 2024 +0200

    sound: usb: format: don't warn that raw DSD is unsupported
    
    [ Upstream commit b50a3e98442b8d72f061617c7f7a71f7dba19484 ]
    
    UAC 2 & 3 DAC's set bit 31 of the format to signal support for a
    RAW_DATA type, typically used for DSD playback.
    
    This is correctly tested by (format & UAC*_FORMAT_TYPE_I_RAW_DATA),
    fp->dsd_raw = true; and call snd_usb_interface_dsd_format_quirks(),
    however a confusing and unnecessary message gets printed because
    the bit is not properly tested in the last "unsupported" if test:
    if (format & ~0x3F) { ... }
    
    For example the output:
    
    usb 7-1: new high-speed USB device number 5 using xhci_hcd
    usb 7-1: New USB device found, idVendor=262a, idProduct=9302, bcdDevice=0.01
    usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
    usb 7-1: Product: TC44C
    usb 7-1: Manufacturer: TC44C
    usb 7-1: SerialNumber: 5000000001
    hid-generic 0003:262A:9302.001E: No inputs registered, leaving
    hid-generic 0003:262A:9302.001E: hidraw6: USB HID v1.00 Device [DDHIFI TC44C] on usb-0000:08:00.3-1/input0
    usb 7-1: 2:4 : unsupported format bits 0x100000000
    
    This last "unsupported format" is actually wrong: we know the
    format is a RAW_DATA which we assume is DSD, so there is no need
    to print the confusing message.
    
    This we unset bit 31 of the format after recognizing it, to avoid
    the message.
    
    Suggested-by: Takashi Iwai <[email protected]>
    Signed-off-by: Adrian Ratiu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: spi-cadence-qspi: Disable STIG mode for Altera SoCFPGA. [+ + +]
Author: Niravkumar L Rabara <[email protected]>
Date:   Wed Dec 4 14:33:38 2024 +0800

    spi: spi-cadence-qspi: Disable STIG mode for Altera SoCFPGA.
    
    [ Upstream commit 25fb0e77b90e290a1ca30900d54c6a495eea65e2 ]
    
    STIG mode is enabled by default for less than 8 bytes data read/write.
    STIG mode doesn't work with Altera SocFPGA platform due hardware
    limitation.
    Add a quirks to disable STIG mode for Altera SoCFPGA platform.
    
    Signed-off-by: Niravkumar L Rabara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing: Have process_string() also allow arrays [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Tue Dec 31 00:06:46 2024 -0500

    tracing: Have process_string() also allow arrays
    
    commit afc6717628f959941d7b33728570568b4af1c4b8 upstream.
    
    In order to catch a common bug where a TRACE_EVENT() TP_fast_assign()
    assigns an address of an allocated string to the ring buffer and then
    references it in TP_printk(), which can be executed hours later when the
    string is free, the function test_event_printk() runs on all events as
    they are registered to make sure there's no unwanted dereferencing.
    
    It calls process_string() to handle cases in TP_printk() format that has
    "%s". It returns whether or not the string is safe. But it can have some
    false positives.
    
    For instance, xe_bo_move() has:
    
     TP_printk("move_lacks_source:%s, migrate object %p [size %zu] from %s to %s device_id:%s",
                __entry->move_lacks_source ? "yes" : "no", __entry->bo, __entry->size,
                xe_mem_type_to_name[__entry->old_placement],
                xe_mem_type_to_name[__entry->new_placement], __get_str(device_id))
    
    Where the "%s" references into xe_mem_type_to_name[]. This is an array of
    pointers that should be safe for the event to access. Instead of flagging
    this as a bad reference, if a reference points to an array, where the
    record field is the index, consider it safe.
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: 65a25d9f7ac02 ("tracing: Add "%s" check in test_event_printk()")
    Reported-by: Genes Lists <[email protected]>
    Tested-by: Gene C <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
wifi: cfg80211: clear link ID from bitmap during link delete after clean up [+ + +]
Author: Aditya Kumar Singh <[email protected]>
Date:   Thu Nov 21 09:45:30 2024 +0530

    wifi: cfg80211: clear link ID from bitmap during link delete after clean up
    
    [ Upstream commit b5c32ff6a3a38c74facdd1fe34c0d709a55527fd ]
    
    Currently, during link deletion, the link ID is first removed from the
    valid_links bitmap before performing any clean-up operations. However, some
    functions require the link ID to remain in the valid_links bitmap. One
    such example is cfg80211_cac_event(). The flow is -
    
    nl80211_remove_link()
        cfg80211_remove_link()
            ieee80211_del_intf_link()
                ieee80211_vif_set_links()
                    ieee80211_vif_update_links()
                        ieee80211_link_stop()
                            cfg80211_cac_event()
    
    cfg80211_cac_event() requires link ID to be present but it is cleared
    already in cfg80211_remove_link(). Ultimately, WARN_ON() is hit.
    
    Therefore, clear the link ID from the bitmap only after completing the link
    clean-up.
    
    Signed-off-by: Aditya Kumar Singh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: fix CRF name for Bz [+ + +]
Author: Emmanuel Grumbach <[email protected]>
Date:   Thu Dec 12 13:29:42 2024 +0200

    wifi: iwlwifi: fix CRF name for Bz
    
    [ Upstream commit 0e8c52091633b354b12d0c29a27a22077584c111 ]
    
    We had BE201 hard coded.
    Look at the RF_ID and decide based on its value.
    
    Fixes: 6795a37161fb ("wifi: iwlwifi: Print a specific device name.")
    Signed-off-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20241212132940.b9eebda1ca60.I36791a134ed5e538e059418eb6520761da97b44c@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mvm: Fix __counted_by usage in cfg80211_wowlan_nd_* [+ + +]
Author: Kees Cook <[email protected]>
Date:   Wed Jun 19 14:12:45 2024 -0700

    wifi: iwlwifi: mvm: Fix __counted_by usage in cfg80211_wowlan_nd_*
    
    commit cc0c53f4fac562efb3aca2bc493515e77642ae33 upstream.
    
    Both struct cfg80211_wowlan_nd_match and struct cfg80211_wowlan_nd_info
    pre-allocate space for channels and matches, but then may end up using
    fewer that the full allocation. Shrink the associated counter
    (n_channels and n_matches) after counting the results. This avoids
    compile-time (and run-time) warnings from __counted_by. (The counter
    member needs to be updated _before_ accessing the array index.)
    
    Seen with coming GCC 15:
    
    drivers/net/wireless/intel/iwlwifi/mvm/d3.c: In function 'iwl_mvm_query_set_freqs':
    drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2877:66: warning: operation on 'match->n_channels' may be undefined [-Wsequence-point]
     2877 |                                 match->channels[match->n_channels++] =
          |                                                 ~~~~~~~~~~~~~~~~~^~
    drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2885:66: warning: operation on 'match->n_channels' may be undefined [-Wsequence-point]
     2885 |                                 match->channels[match->n_channels++] =
          |                                                 ~~~~~~~~~~~~~~~~~^~
    drivers/net/wireless/intel/iwlwifi/mvm/d3.c: In function 'iwl_mvm_query_netdetect_reasons':
    drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2982:58: warning: operation on 'net_detect->n_matches' may be undefined [-Wsequence-point]
     2982 |                 net_detect->matches[net_detect->n_matches++] = match;
          |                                     ~~~~~~~~~~~~~~~~~~~~~^~
    
    Cc: [email protected]
    Fixes: aa4ec06c455d ("wifi: cfg80211: use __counted_by where appropriate")
    Signed-off-by: Kees Cook <[email protected]>
    Reviewed-by: Gustavo A. R. Silva <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mac80211: fix mbss changed flags corruption on 32 bit systems [+ + +]
Author: Issam Hamdi <[email protected]>
Date:   Mon Nov 25 17:29:20 2024 +0100

    wifi: mac80211: fix mbss changed flags corruption on 32 bit systems
    
    [ Upstream commit 49dba1ded8dd5a6a12748631403240b2ab245c34 ]
    
    On 32-bit systems, the size of an unsigned long is 4 bytes,
    while a u64 is 8 bytes. Therefore, when using
    or_each_set_bit(bit, &bits, sizeof(changed) * BITS_PER_BYTE),
    the code is incorrectly searching for a bit in a 32-bit
    variable that is expected to be 64 bits in size,
    leading to incorrect bit finding.
    
    Solution: Ensure that the size of the bits variable is correctly
    adjusted for each architecture.
    
     Call Trace:
      ? show_regs+0x54/0x58
      ? __warn+0x6b/0xd4
      ? ieee80211_link_info_change_notify+0xcc/0xd4 [mac80211]
      ? report_bug+0x113/0x150
      ? exc_overflow+0x30/0x30
      ? handle_bug+0x27/0x44
      ? exc_invalid_op+0x18/0x50
      ? handle_exception+0xf6/0xf6
      ? exc_overflow+0x30/0x30
      ? ieee80211_link_info_change_notify+0xcc/0xd4 [mac80211]
      ? exc_overflow+0x30/0x30
      ? ieee80211_link_info_change_notify+0xcc/0xd4 [mac80211]
      ? ieee80211_mesh_work+0xff/0x260 [mac80211]
      ? cfg80211_wiphy_work+0x72/0x98 [cfg80211]
      ? process_one_work+0xf1/0x1fc
      ? worker_thread+0x2c0/0x3b4
      ? kthread+0xc7/0xf0
      ? mod_delayed_work_on+0x4c/0x4c
      ? kthread_complete_and_exit+0x14/0x14
      ? ret_from_fork+0x24/0x38
      ? kthread_complete_and_exit+0x14/0x14
      ? ret_from_fork_asm+0xf/0x14
      ? entry_INT80_32+0xf0/0xf0
    
    Signed-off-by: Issam Hamdi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [restore no-op path for no changes]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: wake the queues in case of failure in resume [+ + +]
Author: Emmanuel Grumbach <[email protected]>
Date:   Tue Nov 19 17:35:39 2024 +0200

    wifi: mac80211: wake the queues in case of failure in resume
    
    [ Upstream commit 220bf000530f9b1114fa2a1022a871c7ce8a0b38 ]
    
    In case we fail to resume, we'll WARN with
    "Hardware became unavailable during restart." and we'll wait until user
    space does something. It'll typically bring the interface down and up to
    recover. This won't work though because the queues are still stopped on
    IEEE80211_QUEUE_STOP_REASON_SUSPEND reason.
    Make sure we clear that reason so that we give a chance to the recovery
    to succeed.
    
    Signed-off-by: Emmanuel Grumbach <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219447
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20241119173108.cd628f560f97.I76a15fdb92de450e5329940125f3c58916be3942@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
workqueue: add printf attribute to __alloc_workqueue() [+ + +]
Author: Su Hui <[email protected]>
Date:   Tue Dec 24 12:43:58 2024 +0800

    workqueue: add printf attribute to __alloc_workqueue()
    
    [ Upstream commit d57212f281fda9056412cd6cca983d9d2eb89f53 ]
    
    Fix a compiler warning with W=1:
    kernel/workqueue.c: error:
    function ‘__alloc_workqueue’ might be a candidate for ‘gnu_printf’
    format attribute[-Werror=suggest-attribute=format]
     5657 |  name_len = vsnprintf(wq->name, sizeof(wq->name), fmt, args);
          |  ^~~~~~~~
    
    Fixes: 9b59a85a84dc ("workqueue: Don't call va_start / va_end twice")
    Signed-off-by: Su Hui <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

workqueue: Do not warn when cancelling WQ_MEM_RECLAIM work from !WQ_MEM_RECLAIM worker [+ + +]
Author: Tvrtko Ursulin <[email protected]>
Date:   Thu Dec 19 09:30:30 2024 +0000

    workqueue: Do not warn when cancelling WQ_MEM_RECLAIM work from !WQ_MEM_RECLAIM worker
    
    commit de35994ecd2dd6148ab5a6c5050a1670a04dec77 upstream.
    
    After commit
    746ae46c1113 ("drm/sched: Mark scheduler work queues with WQ_MEM_RECLAIM")
    amdgpu started seeing the following warning:
    
     [ ] workqueue: WQ_MEM_RECLAIM sdma0:drm_sched_run_job_work [gpu_sched] is flushing !WQ_MEM_RECLAIM events:amdgpu_device_delay_enable_gfx_off [amdgpu]
    ...
     [ ] Workqueue: sdma0 drm_sched_run_job_work [gpu_sched]
    ...
     [ ] Call Trace:
     [ ]  <TASK>
    ...
     [ ]  ? check_flush_dependency+0xf5/0x110
    ...
     [ ]  cancel_delayed_work_sync+0x6e/0x80
     [ ]  amdgpu_gfx_off_ctrl+0xab/0x140 [amdgpu]
     [ ]  amdgpu_ring_alloc+0x40/0x50 [amdgpu]
     [ ]  amdgpu_ib_schedule+0xf4/0x810 [amdgpu]
     [ ]  ? drm_sched_run_job_work+0x22c/0x430 [gpu_sched]
     [ ]  amdgpu_job_run+0xaa/0x1f0 [amdgpu]
     [ ]  drm_sched_run_job_work+0x257/0x430 [gpu_sched]
     [ ]  process_one_work+0x217/0x720
    ...
     [ ]  </TASK>
    
    The intent of the verifcation done in check_flush_depedency is to ensure
    forward progress during memory reclaim, by flagging cases when either a
    memory reclaim process, or a memory reclaim work item is flushed from a
    context not marked as memory reclaim safe.
    
    This is correct when flushing, but when called from the
    cancel(_delayed)_work_sync() paths it is a false positive because work is
    either already running, or will not be running at all. Therefore
    cancelling it is safe and we can relax the warning criteria by letting the
    helper know of the calling context.
    
    Signed-off-by: Tvrtko Ursulin <[email protected]>
    Fixes: fca839c00a12 ("workqueue: warn if memory reclaim tries to flush !WQ_MEM_RECLAIM workqueue")
    References: 746ae46c1113 ("drm/sched: Mark scheduler work queues with WQ_MEM_RECLAIM")
    Cc: Tejun Heo <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Lai Jiangshan <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: Christian König <[email protected]
    Cc: Matthew Brost <[email protected]>
    Cc: <[email protected]> # v4.5+
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>