Changelog in Linux kernel 6.6.70

 
ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A [+ + +]
Author: Qinxin Xia <xiaqinxin@huawei.com>
Date:   Thu Dec 5 09:33:31 2024 +0800

    ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A
    
    [ Upstream commit c2b46ae022704a2d845e59461fa24431ad627022 ]
    
    HiSilicon HIP09A platforms using the same SMMU PMCG with HIP09
    and thus suffers the same erratum. List them in the PMCG platform
    information list without introducing a new SMMU PMCG Model.
    
    Update the silicon-errata.rst as well.
    
    Reviewed-by: Yicong Yang <yangyicong@hisilicon.com>
    Acked-by: Hanjun Guo <guohanjun@huawei.com>
    Signed-off-by: Qinxin Xia <xiaqinxin@huawei.com>
    Link: https://lore.kernel.org/r/20241205013331.1484017-1-xiaqinxin@huawei.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ACPI/IORT: Add PMCG platform information for HiSilicon HIP10/11 [+ + +]
Author: Yicong Yang <yangyicong@hisilicon.com>
Date:   Wed Jul 31 17:26:58 2024 +0800

    ACPI/IORT: Add PMCG platform information for HiSilicon HIP10/11
    
    [ Upstream commit f3b78b470f28bb2a3a40e88bdf5c6de6a35a9b76 ]
    
    HiSilicon HIP10/11 platforms using the same SMMU PMCG with HIP09
    and thus suffers the same erratum. List them in the PMCG platform
    information list without introducing a new SMMU PMCG Model.
    
    Update the silicon-errata.rst as well.
    
    Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
    Link: https://lore.kernel.org/r/20240731092658.11012-1-yangyicong@huawei.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Stable-dep-of: c2b46ae02270 ("ACPI/IORT: Add PMCG platform information for HiSilicon HIP09A")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ACPI: PCC: Add PCC shared memory region command and status bitfields [+ + +]
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Wed Sep 27 17:26:10 2023 +0100

    ACPI: PCC: Add PCC shared memory region command and status bitfields
    
    [ Upstream commit 55d235ebb684b993b3247740c1c8e273f8af4a54 ]
    
    Define the common macros to use when referring to various bitfields in
    the PCC generic communications channel command and status fields.
    
    Currently different drivers that need to use these bitfields have defined
    these locally. This common macro is intended to consolidate and replace
    those.
    
    Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
    Link: https://lore.kernel.org/r/20230927-pcc_defines-v2-1-0b8ffeaef2e5@arm.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Stable-dep-of: 7f9e19f207be ("mailbox: pcc: Check before sending MCTP PCC response ACK")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
af_packet: fix vlan_get_protocol_dgram() vs MSG_PEEK [+ + +]
Author: Eric Dumazet <edumazet@google.com>
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: syzbot+74f70bb1cb968bf09e4f@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/6772c485.050a0220.2f3838.04c5.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Chengen Du <chengen.du@canonical.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://patch.msgid.link/20241230161004.2681892-2-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

af_packet: fix vlan_get_tci() vs MSG_PEEK [+ + +]
Author: Eric Dumazet <edumazet@google.com>
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: syzbot+8400677f3fd43f37d3bc@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/6772c485.050a0220.2f3838.04c6.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Chengen Du <chengen.du@canonical.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://patch.msgid.link/20241230161004.2681892-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ALSA hda/realtek: Add quirk for Framework F111:000C [+ + +]
Author: Daniel Schaefer <dhs@frame.work>
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 <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: linux@frame.work
    Cc: Dustin L. Howett <dustin@howett.net>
    Signed-off-by: Daniel Schaefer <dhs@frame.work>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20241231045958.14545-1-dhs@frame.work
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ALSA: hda/ca0132: Use standard HD-audio quirk matching helpers [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
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/20241207133754.3658-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: hda/realtek: Add new alc2xx-fixup-headset-mic model [+ + +]
Author: Vasiliy Kovalev <kovalev@altlinux.org>
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 <kovalev@altlinux.org>
    Link: https://patch.msgid.link/20241207201836.6879-1-kovalev@altlinux.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: seq: Check UMP support for midi_version change [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
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: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20241231145358.21946-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: seq: oss: Fix races at processing SysEx messages [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
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 <huk23@m.fudan.edu.cn>
    Closes: https://lore.kernel.org/2B7E93E4-B13A-4AE4-8E87-306A8EE9BBB7@m.fudan.edu.cn
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20241230110543.32454-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: ump: Don't open legacy substream for an inactive group [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 29 10:45:42 2024 +0100

    ALSA: ump: Don't open legacy substream for an inactive group
    
    [ Upstream commit 3978d53df7236f0a517c2abeb43ddf6ac162cdd8 ]
    
    When a UMP Group is inactive, we shouldn't allow users to access it
    via the legacy MIDI access.  Add the group active flag check and
    return -ENODEV if it's inactive.
    
    Link: https://patch.msgid.link/20241129094546.32119-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: ump: Indicate the inactive group in legacy substream names [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 29 10:45:43 2024 +0100

    ALSA: ump: Indicate the inactive group in legacy substream names
    
    [ Upstream commit e29e504e7890b9ee438ca6370d0180d607c473f9 ]
    
    Since the legacy rawmidi has no proper way to know the inactive group,
    indicate it in the rawmidi substream names with "[Inactive]" suffix
    when the corresponding UMP group is inactive.
    
    Link: https://patch.msgid.link/20241129094546.32119-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: ump: Shut up truncated string warning [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Nov 30 10:00:08 2024 +0100

    ALSA: ump: Shut up truncated string warning
    
    [ Upstream commit ed990c07af70d286f5736021c6e25d8df6f2f7b0 ]
    
    The recent change for the legacy substream name update brought a
    compile warning for some compilers due to the nature of snprintf().
    Use scnprintf() to shut up the warning since the truncation is
    intentional.
    
    Fixes: e29e504e7890 ("ALSA: ump: Indicate the inactive group in legacy substream names")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202411300103.FrGuTAYp-lkp@intel.com/
    Link: https://patch.msgid.link/20241130090009.19849-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: ump: Update legacy substream names upon FB info update [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 29 10:45:44 2024 +0100

    ALSA: ump: Update legacy substream names upon FB info update
    
    [ Upstream commit edad3f9519fcacb926d0e3f3217aecaf628a593f ]
    
    The legacy rawmidi substreams should be updated when UMP FB Info or
    UMP FB Name are received, too.
    
    Link: https://patch.msgid.link/20241129094546.32119-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: ump: Use guard() for locking [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 27 09:52:43 2024 +0100

    ALSA: ump: Use guard() for locking
    
    [ Upstream commit 631896f7eaaf8cf8c639b065d3c9fbaa66da5d32 ]
    
    We can simplify the code gracefully with new guard() macro and co for
    automatic cleanup of locks.
    
    Only the code refactoring, and no functional changes.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20240227085306.9764-2-tiwai@suse.de
    Stable-dep-of: 3978d53df723 ("ALSA: ump: Don't open legacy substream for an inactive group")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ALSA: usb-audio: US16x08: Initialize array before use [+ + +]
Author: Tanya Agarwal <tanyaagarwal25699@gmail.com>
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 <tanyaagarwal25699@gmail.com>
    Link: https://patch.msgid.link/20241229060240.1642-1-tanyaagarwal25699@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ARC: build: Try to guess GCC variant of cross compiler [+ + +]
Author: Leon Romanovsky <leon@kernel.org>
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 <leonro@nvidia.com>
    Signed-off-by: Vineet Gupta <vgupta@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Bluetooth: Add support ITTIM PE50-M75C [+ + +]
Author: Jingyang Wang <wjy7717@126.com>
Date:   Wed Sep 6 16:31:47 2023 +0800

    Bluetooth: Add support ITTIM PE50-M75C
    
    [ Upstream commit 00b1c3c4b682ba4b4f9fc46e047b537e668576af ]
    
    -Device(35f5:7922) from /sys/kernel/debug/usb/devices
    P:  Vendor=35f5 ProdID=7922 Rev= 1.00
    S:  Manufacturer=MediaTek Inc.
    S:  Product=Wireless_Device
    S:  SerialNumber=000000000
    C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
    I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
    
    Signed-off-by: Jingyang Wang <wjy7717@126.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Stable-dep-of: faa5fd605d20 ("Bluetooth: btusb: Add new VID/PID 0489/e111 for MT7925")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btusb: add callback function in btusb suspend/resume [+ + +]
Author: Chris Lu <chris.lu@mediatek.com>
Date:   Thu Jul 4 14:01:12 2024 +0800

    Bluetooth: btusb: add callback function in btusb suspend/resume
    
    [ Upstream commit 95f92928ad2215b5f524903e67eebd8e14f99564 ]
    
    Add suspend/resum callback function in btusb_data which are reserved
    for vendor specific usage during suspend/resume. hdev->suspend will be
    added before stop traffic in btusb_suspend and hdev-> resume will be
    added after resubmit urb in btusb_resume.
    
    Signed-off-by: Chris Lu <chris.lu@mediatek.com>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Stable-dep-of: cea1805f165c ("Bluetooth: btusb: mediatek: add callback function in btusb_disconnect")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btusb: Add new VID/PID 0489/e111 for MT7925 [+ + +]
Author: Hao Qin <hao.qin@mediatek.com>
Date:   Sat Oct 26 11:18:18 2024 +0800

    Bluetooth: btusb: Add new VID/PID 0489/e111 for MT7925
    
    [ Upstream commit faa5fd605d2081b6c9fa2355b59582d4ccd24b16 ]
    
    Add VID 0489 & PID e111 for MediaTek MT7925 USB Bluetooth chip.
    
    The information in /sys/kernel/debug/usb/devices about the Bluetooth
    device is listed as the below.
    
    T:  Bus=02 Lev=02 Prnt=02 Port=04 Cnt=02 Dev#=  4 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0489 ProdID=e111 Rev= 1.00
    S:  Manufacturer=MediaTek Inc.
    S:  Product=Wireless_Device
    S:  SerialNumber=000000000
    C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
    I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
    
    Signed-off-by: Hao Qin <hao.qin@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btusb: Add new VID/PID 13d3/3602 for MT7925 [+ + +]
Author: Ulrik Strid <ulrik@strid.tech>
Date:   Sat Jan 13 15:27:38 2024 +0800

    Bluetooth: btusb: Add new VID/PID 13d3/3602 for MT7925
    
    [ Upstream commit 560ff4bc99070bfb493018b6b7045af269a008a4 ]
    
    Add VID 13d3 & PID 3602 for MediaTek MT7925 USB Bluetooth chip.
    
    The information in /sys/kernel/debug/usb/devices about the Bluetooth
    device is listed as the below.
    
    T:  Bus=07 Lev=01 Prnt=01 Port=10 Cnt=02 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=13d3 ProdID=3602 Rev= 1.00
    S:  Manufacturer=MediaTek Inc.
    S:  Product=Wireless_Device
    S:  SerialNumber=000000000
    C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
    A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
    I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
    E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
    E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
    
    Signed-off-by: Ulrik Strid <ulrik@strid.tech>
    Signed-off-by: Deren Wu <deren.wu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Stable-dep-of: faa5fd605d20 ("Bluetooth: btusb: Add new VID/PID 0489/e111 for MT7925")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btusb: Add USB HW IDs for MT7921/MT7922/MT7925 [+ + +]
Author: Jiande Lu <jiande.lu@mediatek.com>
Date:   Tue Apr 23 14:51:56 2024 +0800

    Bluetooth: btusb: Add USB HW IDs for MT7921/MT7922/MT7925
    
    [ Upstream commit 129d329286f624b0ccd66e904a2c27eb4d5196e5 ]
    
    Add HW IDs for wireless module specific to Acer/ASUS
    notebook models to ensure proper recognition and functionality.
    These HW IDs are extracted from Windows driver inf file.
    Note some HW IDs without official drivers, still in testing phase.
    Thus, we update module HW ID and test ensure consistent boot success.
    
    Signed-off-by: Jiande Lu <jiande.lu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Stable-dep-of: faa5fd605d20 ("Bluetooth: btusb: Add new VID/PID 0489/e111 for MT7925")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: btusb: mediatek: add callback function in btusb_disconnect [+ + +]
Author: Chris Lu <chris.lu@mediatek.com>
Date:   Mon Sep 23 16:47:03 2024 +0800

    Bluetooth: btusb: mediatek: add callback function in btusb_disconnect
    
    [ Upstream commit cea1805f165cdd783dd21f26df957118cb8641b4 ]
    
    Add disconnect callback function in btusb_disconnect which is reserved
    for vendor specific usage before deregister hci in btusb_disconnect.
    
    Signed-off-by: Chris Lu <chris.lu@mediatek.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_conn: Reduce hci_conn_drop() calls in two functions [+ + +]
Author: Markus Elfring <elfring@users.sourceforge.net>
Date:   Tue Oct 1 09:21:25 2024 +0200

    Bluetooth: hci_conn: Reduce hci_conn_drop() calls in two functions
    
    [ Upstream commit d96b543c6f3b78b6440b68b5a5bbface553eff28 ]
    
    An hci_conn_drop() call was immediately used after a null pointer check
    for an hci_conn_link() call in two function implementations.
    Thus call such a function only once instead directly before the checks.
    
    This issue was transformed by using the Coccinelle software.
    
    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_core: Fix sleeping function called from invalid context [+ + +]
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
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: syzbot+2fb0835e0c9cefc34614@syzkaller.appspotmail.com
    Tested-by: syzbot+2fb0835e0c9cefc34614@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=2fb0835e0c9cefc34614
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: fix potential error return [+ + +]
Author: Anton Protopopov <aspsk@isovalent.com>
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 <aspsk@isovalent.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/r/20241210114245.836164-1-aspsk@isovalent.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: fix use-after-free in btrfs_encoded_read_endio() [+ + +]
Author: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Date:   Wed Nov 13 18:16:48 2024 +0100

    btrfs: fix use-after-free in btrfs_encoded_read_endio()
    
    commit 05b36b04d74a517d6675bf2f90829ff1ac7e28dc upstream.
    
    Shinichiro reported the following use-after free that sometimes is
    happening in our CI system when running fstests' btrfs/284 on a TCMU
    runner device:
    
      BUG: KASAN: slab-use-after-free in lock_release+0x708/0x780
      Read of size 8 at addr ffff888106a83f18 by task kworker/u80:6/219
    
      CPU: 8 UID: 0 PID: 219 Comm: kworker/u80:6 Not tainted 6.12.0-rc6-kts+ #15
      Hardware name: Supermicro Super Server/X11SPi-TF, BIOS 3.3 02/21/2020
      Workqueue: btrfs-endio btrfs_end_bio_work [btrfs]
      Call Trace:
       <TASK>
       dump_stack_lvl+0x6e/0xa0
       ? lock_release+0x708/0x780
       print_report+0x174/0x505
       ? lock_release+0x708/0x780
       ? __virt_addr_valid+0x224/0x410
       ? lock_release+0x708/0x780
       kasan_report+0xda/0x1b0
       ? lock_release+0x708/0x780
       ? __wake_up+0x44/0x60
       lock_release+0x708/0x780
       ? __pfx_lock_release+0x10/0x10
       ? __pfx_do_raw_spin_lock+0x10/0x10
       ? lock_is_held_type+0x9a/0x110
       _raw_spin_unlock_irqrestore+0x1f/0x60
       __wake_up+0x44/0x60
       btrfs_encoded_read_endio+0x14b/0x190 [btrfs]
       btrfs_check_read_bio+0x8d9/0x1360 [btrfs]
       ? lock_release+0x1b0/0x780
       ? trace_lock_acquire+0x12f/0x1a0
       ? __pfx_btrfs_check_read_bio+0x10/0x10 [btrfs]
       ? process_one_work+0x7e3/0x1460
       ? lock_acquire+0x31/0xc0
       ? process_one_work+0x7e3/0x1460
       process_one_work+0x85c/0x1460
       ? __pfx_process_one_work+0x10/0x10
       ? assign_work+0x16c/0x240
       worker_thread+0x5e6/0xfc0
       ? __pfx_worker_thread+0x10/0x10
       kthread+0x2c3/0x3a0
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x31/0x70
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1a/0x30
       </TASK>
    
      Allocated by task 3661:
       kasan_save_stack+0x30/0x50
       kasan_save_track+0x14/0x30
       __kasan_kmalloc+0xaa/0xb0
       btrfs_encoded_read_regular_fill_pages+0x16c/0x6d0 [btrfs]
       send_extent_data+0xf0f/0x24a0 [btrfs]
       process_extent+0x48a/0x1830 [btrfs]
       changed_cb+0x178b/0x2ea0 [btrfs]
       btrfs_ioctl_send+0x3bf9/0x5c20 [btrfs]
       _btrfs_ioctl_send+0x117/0x330 [btrfs]
       btrfs_ioctl+0x184a/0x60a0 [btrfs]
       __x64_sys_ioctl+0x12e/0x1a0
       do_syscall_64+0x95/0x180
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
      Freed by task 3661:
       kasan_save_stack+0x30/0x50
       kasan_save_track+0x14/0x30
       kasan_save_free_info+0x3b/0x70
       __kasan_slab_free+0x4f/0x70
       kfree+0x143/0x490
       btrfs_encoded_read_regular_fill_pages+0x531/0x6d0 [btrfs]
       send_extent_data+0xf0f/0x24a0 [btrfs]
       process_extent+0x48a/0x1830 [btrfs]
       changed_cb+0x178b/0x2ea0 [btrfs]
       btrfs_ioctl_send+0x3bf9/0x5c20 [btrfs]
       _btrfs_ioctl_send+0x117/0x330 [btrfs]
       btrfs_ioctl+0x184a/0x60a0 [btrfs]
       __x64_sys_ioctl+0x12e/0x1a0
       do_syscall_64+0x95/0x180
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
      The buggy address belongs to the object at ffff888106a83f00
       which belongs to the cache kmalloc-rnd-07-96 of size 96
      The buggy address is located 24 bytes inside of
       freed 96-byte region [ffff888106a83f00, ffff888106a83f60)
    
      The buggy address belongs to the physical page:
      page: refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff888106a83800 pfn:0x106a83
      flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)
      page_type: f5(slab)
      raw: 0017ffffc0000000 ffff888100053680 ffffea0004917200 0000000000000004
      raw: ffff888106a83800 0000000080200019 00000001f5000000 0000000000000000
      page dumped because: kasan: bad access detected
    
      Memory state around the buggy address:
       ffff888106a83e00: fa fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
       ffff888106a83e80: fa fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
      >ffff888106a83f00: fa fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
                                  ^
       ffff888106a83f80: fa fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
       ffff888106a84000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      ==================================================================
    
    Further analyzing the trace and the crash dump's vmcore file shows that
    the wake_up() call in btrfs_encoded_read_endio() is calling wake_up() on
    the wait_queue that is in the private data passed to the end_io handler.
    
    Commit 4ff47df40447 ("btrfs: move priv off stack in
    btrfs_encoded_read_regular_fill_pages()") moved 'struct
    btrfs_encoded_read_private' off the stack.
    
    Before that commit one can see a corruption of the private data when
    analyzing the vmcore after a crash:
    
    *(struct btrfs_encoded_read_private *)0xffff88815626eec8 = {
            .wait = (wait_queue_head_t){
                    .lock = (spinlock_t){
                            .rlock = (struct raw_spinlock){
                                    .raw_lock = (arch_spinlock_t){
                                            .val = (atomic_t){
                                                    .counter = (int)-2005885696,
                                            },
                                            .locked = (u8)0,
                                            .pending = (u8)157,
                                            .locked_pending = (u16)40192,
                                            .tail = (u16)34928,
                                    },
                                    .magic = (unsigned int)536325682,
                                    .owner_cpu = (unsigned int)29,
                                    .owner = (void *)__SCT__tp_func_btrfs_transaction_commit+0x0 = 0x0,
                                    .dep_map = (struct lockdep_map){
                                            .key = (struct lock_class_key *)0xffff8881575a3b6c,
                                            .class_cache = (struct lock_class *[2]){ 0xffff8882a71985c0, 0xffffea00066f5d40 },
                                            .name = (const char *)0xffff88815626f100 = "",
                                            .wait_type_outer = (u8)37,
                                            .wait_type_inner = (u8)178,
                                            .lock_type = (u8)154,
                                    },
                            },
                            .__padding = (u8 [24]){ 0, 157, 112, 136, 50, 174, 247, 31, 29 },
                            .dep_map = (struct lockdep_map){
                                    .key = (struct lock_class_key *)0xffff8881575a3b6c,
                                    .class_cache = (struct lock_class *[2]){ 0xffff8882a71985c0, 0xffffea00066f5d40 },
                                    .name = (const char *)0xffff88815626f100 = "",
                                    .wait_type_outer = (u8)37,
                                    .wait_type_inner = (u8)178,
                                    .lock_type = (u8)154,
                            },
                    },
                    .head = (struct list_head){
                            .next = (struct list_head *)0x112cca,
                            .prev = (struct list_head *)0x47,
                    },
            },
            .pending = (atomic_t){
                    .counter = (int)-1491499288,
            },
            .status = (blk_status_t)130,
    }
    
    Here we can see several indicators of in-memory data corruption, e.g. the
    large negative atomic values of ->pending or
    ->wait->lock->rlock->raw_lock->val, as well as the bogus spinlock magic
    0x1ff7ae32 (decimal 536325682 above) instead of 0xdead4ead or the bogus
    pointer values for ->wait->head.
    
    To fix this, change atomic_dec_return() to atomic_dec_and_test() to fix the
    corruption, as atomic_dec_return() is defined as two instructions on
    x86_64, whereas atomic_dec_and_test() is defined as a single atomic
    operation. This can lead to a situation where counter value is already
    decremented but the if statement in btrfs_encoded_read_endio() is not
    completely processed, i.e. the 0 test has not completed. If another thread
    continues executing btrfs_encoded_read_regular_fill_pages() the
    atomic_dec_return() there can see an already updated ->pending counter and
    continues by freeing the private data. Continuing in the endio handler the
    test for 0 succeeds and the wait_queue is woken up, resulting in a
    use-after-free.
    
    Reported-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Suggested-by: Damien Le Moal <Damien.LeMoal@wdc.com>
    Fixes: 1881fba89bd5 ("btrfs: add BTRFS_IOC_ENCODED_READ ioctl")
    CC: stable@vger.kernel.org # 6.1+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix use-after-free when COWing tree bock and tracing is enabled [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Dec 11 16:08:07 2024 +0000

    btrfs: fix use-after-free when COWing tree bock and tracing is enabled
    
    [ Upstream commit 44f52bbe96dfdbe4aca3818a2534520082a07040 ]
    
    When a COWing a tree block, at btrfs_cow_block(), and we have the
    tracepoint trace_btrfs_cow_block() enabled and preemption is also enabled
    (CONFIG_PREEMPT=y), we can trigger a use-after-free in the COWed extent
    buffer while inside the tracepoint code. This is because in some paths
    that call btrfs_cow_block(), such as btrfs_search_slot(), we are holding
    the last reference on the extent buffer @buf so btrfs_force_cow_block()
    drops the last reference on the @buf extent buffer when it calls
    free_extent_buffer_stale(buf), which schedules the release of the extent
    buffer with RCU. This means that if we are on a kernel with preemption,
    the current task may be preempted before calling trace_btrfs_cow_block()
    and the extent buffer already released by the time trace_btrfs_cow_block()
    is called, resulting in a use-after-free.
    
    Fix this by moving the trace_btrfs_cow_block() from btrfs_cow_block() to
    btrfs_force_cow_block() before the COWed extent buffer is freed.
    This also has a side effect of invoking the tracepoint in the tree defrag
    code, at defrag.c:btrfs_realloc_node(), since btrfs_force_cow_block() is
    called there, but this is fine and it was actually missing there.
    
    Reported-by: syzbot+8517da8635307182c8a5@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/linux-btrfs/6759a9b9.050a0220.1ac542.000d.GAE@google.com/
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: flush delalloc workers queue before stopping cleaner kthread during unmount [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
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: syzbot+b7cf50a0c173770dcb14@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/linux-btrfs/674ed7e8.050a0220.48a03.0031.GAE@google.com/
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: rename and export __btrfs_cow_block() [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Sep 27 12:09:26 2023 +0100

    btrfs: rename and export __btrfs_cow_block()
    
    [ Upstream commit 95f93bc4cbcac6121a5ee85cd5019ee8e7447e0b ]
    
    Rename and export __btrfs_cow_block() as btrfs_force_cow_block(). This is
    to allow to move defrag specific code out of ctree.c and into defrag.c in
    one of the next patches.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Stable-dep-of: 44f52bbe96df ("btrfs: fix use-after-free when COWing tree bock and tracing is enabled")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ceph: give up on paths longer than PATH_MAX [+ + +]
Author: Max Kellermann <max.kellermann@ionos.com>
Date:   Mon Nov 18 23:28:28 2024 +0100

    ceph: give up on paths longer than PATH_MAX
    
    commit 550f7ca98ee028a606aa75705a7e77b1bd11720f upstream.
    
    If the full path to be built by ceph_mdsc_build_path() happens to be
    longer than PATH_MAX, then this function will enter an endless (retry)
    loop, effectively blocking the whole task.  Most of the machine
    becomes unusable, making this a very simple and effective DoS
    vulnerability.
    
    I cannot imagine why this retry was ever implemented, but it seems
    rather useless and harmful to me.  Let's remove it and fail with
    ENAMETOOLONG instead.
    
    Cc: stable@vger.kernel.org
    Reported-by: Dario Weißer <dario@cure53.de>
    Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
    Reviewed-by: Alex Markuze <amarkuze@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    [idryomov@gmail.com: backport to 6.6: pr_warn() is still in use]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cleanup: Add conditional guard support [+ + +]
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Sun Sep 17 13:22:17 2023 +0200

    cleanup: Add conditional guard support
    
    [ Upstream commit e4ab322fbaaaf84b23d6cb0e3317a7f68baf36dc ]
    
    Adds:
    
     - DEFINE_GUARD_COND() / DEFINE_LOCK_GUARD_1_COND() to extend existing
       guards with conditional lock primitives, eg. mutex_trylock(),
       mutex_lock_interruptible().
    
       nb. both primitives allow NULL 'locks', which cause the lock to
           fail (obviously).
    
     - extends scoped_guard() to not take the body when the the
       conditional guard 'fails'. eg.
    
         scoped_guard (mutex_intr, &task->signal_cred_guard_mutex) {
            ...
         }
    
       will only execute the body when the mutex is held.
    
     - provides scoped_cond_guard(name, fail, args...); which extends
       scoped_guard() to do fail when the lock-acquire fails.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20231102110706.460851167%40infradead.org
    Stable-dep-of: fcc22ac5baf0 ("cleanup: Adjust scoped_guard() macros to avoid potential warning")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cleanup: Adjust scoped_guard() macros to avoid potential warning [+ + +]
Author: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Date:   Fri Oct 18 13:38:14 2024 +0200

    cleanup: Adjust scoped_guard() macros to avoid potential warning
    
    [ Upstream commit fcc22ac5baf06dd17193de44b60dbceea6461983 ]
    
    Change scoped_guard() and scoped_cond_guard() macros to make reasoning
    about them easier for static analysis tools (smatch, compiler
    diagnostics), especially to enable them to tell if the given usage of
    scoped_guard() is with a conditional lock class (interruptible-locks,
    try-locks) or not (like simple mutex_lock()).
    
    Add compile-time error if scoped_cond_guard() is used for non-conditional
    lock class.
    
    Beyond easier tooling and a little shrink reported by bloat-o-meter
    this patch enables developer to write code like:
    
    int foo(struct my_drv *adapter)
    {
            scoped_guard(spinlock, &adapter->some_spinlock)
                    return adapter->spinlock_protected_var;
    }
    
    Current scoped_guard() implementation does not support that,
    due to compiler complaining:
    error: control reaches end of non-void function [-Werror=return-type]
    
    Technical stuff about the change:
    scoped_guard() macro uses common idiom of using "for" statement to declare
    a scoped variable. Unfortunately, current logic is too hard for compiler
    diagnostics to be sure that there is exactly one loop step; fix that.
    
    To make any loop so trivial that there is no above warning, it must not
    depend on any non-const variable to tell if there are more steps. There is
    no obvious solution for that in C, but one could use the compound
    statement expression with "goto" jumping past the "loop", effectively
    leaving only the subscope part of the loop semantics.
    
    More impl details:
    one more level of macro indirection is now needed to avoid duplicating
    label names;
    I didn't spot any other place that is using the
    "for (...; goto label) if (0) label: break;" idiom, so it's not packed for
    reuse beyond scoped_guard() family, what makes actual macros code cleaner.
    
    There was also a need to introduce const true/false variable per lock
    class, it is used to aid compiler diagnostics reasoning about "exactly
    1 step" loops (note that converting that to function would undo the whole
    benefit).
    
    Big thanks to Andy Shevchenko for help on this patch, both internal and
    public, ranging from whitespace/formatting, through commit message
    clarifications, general improvements, ending with presenting alternative
    approaches - all despite not even liking the idea.
    
    Big thanks to Dmitry Torokhov for the idea of compile-time check for
    scoped_cond_guard() (to use it only with conditional locsk), and general
    improvements for the patch.
    
    Big thanks to David Lechner for idea to cover also scoped_cond_guard().
    
    Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Link: https://lkml.kernel.org/r/20241018113823.171256-1-przemyslaw.kitszel@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cleanup: Remove address space of returned pointer [+ + +]
Author: Uros Bizjak <ubizjak@gmail.com>
Date:   Mon Aug 19 09:41:15 2024 +0200

    cleanup: Remove address space of returned pointer
    
    [ Upstream commit f730fd535fc51573f982fad629f2fc6b4a0cde2f ]
    
    Guard functions in local_lock.h are defined using DEFINE_GUARD() and
    DEFINE_LOCK_GUARD_1() macros having lock type defined as pointer in
    the percpu address space. The functions, defined by these macros
    return value in generic address space, causing:
    
    cleanup.h:157:18: error: return from pointer to non-enclosed address space
    
    and
    
    cleanup.h:214:18: error: return from pointer to non-enclosed address space
    
    when strict percpu checks are enabled.
    
    Add explicit casts to remove address space of the returned pointer.
    
    Found by GCC's named address space checks.
    
    Fixes: e4ab322fbaaa ("cleanup: Add conditional guard support")
    Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20240819074124.143565-1-ubizjak@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
clk: qcom: clk-alpha-pll: Add NSS HUAYRA ALPHA PLL support for ipq9574 [+ + +]
Author: Devi Priya <quic_devipriy@quicinc.com>
Date:   Mon Oct 28 11:35:01 2024 +0530

    clk: qcom: clk-alpha-pll: Add NSS HUAYRA ALPHA PLL support for ipq9574
    
    [ Upstream commit 79dfed29aa3f714e0a94a39b2bfe9ac14ce19a6a ]
    
    Add support for NSS Huayra alpha pll found on ipq9574 SoCs.
    Programming sequence is the same as that of Huayra type Alpha PLL,
    so we can re-use the same.
    
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Devi Priya <quic_devipriy@quicinc.com>
    Link: https://lore.kernel.org/r/20241028060506.246606-2-quic_srichara@quicinc.com
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

clk: qcom: clk-alpha-pll: Add support for zonda ole pll configure [+ + +]
Author: Rajendra Nayak <quic_rjendra@quicinc.com>
Date:   Fri Feb 2 20:34:41 2024 +0200

    clk: qcom: clk-alpha-pll: Add support for zonda ole pll configure
    
    [ Upstream commit c32f4f4ae1c6035b44bb4ca7a41fa4fd51244597 ]
    
    Zonda ole pll has as extra PLL_OFF_CONFIG_CTL_U2 register, hence add
    support for it.
    
    Signed-off-by: Rajendra Nayak <quic_rjendra@quicinc.com>
    Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
    Link: https://lore.kernel.org/r/20240202-x1e80100-clock-controllers-v4-6-7fb08c861c7c@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Stable-dep-of: 79dfed29aa3f ("clk: qcom: clk-alpha-pll: Add NSS HUAYRA ALPHA PLL support for ipq9574")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: ecc - Prevent ecc_digits_from_bytes from reading too many bytes [+ + +]
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Thu May 9 21:59:21 2024 -0400

    crypto: ecc - Prevent ecc_digits_from_bytes from reading too many bytes
    
    [ Upstream commit c6ab5c915da460c0397960af3c308386c3f3247b ]
    
    Prevent ecc_digits_from_bytes from reading too many bytes from the input
    byte array in case an insufficient number of bytes is provided to fill the
    output digit array of ndigits. Therefore, initialize the most significant
    digits with 0 to avoid trying to read too many bytes later on. Convert the
    function into a regular function since it is getting too big for an inline
    function.
    
    If too many bytes are provided on the input byte array the extra bytes
    are ignored since the input variable 'ndigits' limits the number of digits
    that will be filled.
    
    Fixes: d67c96fb97b5 ("crypto: ecdsa - Convert byte arrays with key coordinates to digits")
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: ecdsa - Avoid signed integer overflow on signature decoding [+ + +]
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Sep 10 16:30:24 2024 +0200

    crypto: ecdsa - Avoid signed integer overflow on signature decoding
    
    [ Upstream commit 3b0565c703503f832d6cd7ba805aafa3b330cb9d ]
    
    When extracting a signature component r or s from an ASN.1-encoded
    integer, ecdsa_get_signature_rs() subtracts the expected length
    "bufsize" from the ASN.1 length "vlen" (both of unsigned type size_t)
    and stores the result in "diff" (of signed type ssize_t).
    
    This results in a signed integer overflow if vlen > SSIZE_MAX + bufsize.
    
    The kernel is compiled with -fno-strict-overflow, which implies -fwrapv,
    meaning signed integer overflow is not undefined behavior.  And the
    function does check for overflow:
    
           if (-diff >= bufsize)
                   return -EINVAL;
    
    So the code is fine in principle but not very obvious.  In the future it
    might trigger a false-positive with CONFIG_UBSAN_SIGNED_WRAP=y.
    
    Avoid by comparing the two unsigned variables directly and erroring out
    if "vlen" is too large.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
    Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: ecdsa - Convert byte arrays with key coordinates to digits [+ + +]
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Thu Apr 4 10:18:45 2024 -0400

    crypto: ecdsa - Convert byte arrays with key coordinates to digits
    
    [ Upstream commit d67c96fb97b5811e15c881d5cb72e293faa5f8e1 ]
    
    For NIST P192/256/384 the public key's x and y parameters could be copied
    directly from a given array since both parameters filled 'ndigits' of
    digits (a 'digit' is a u64). For support of NIST P521 the key parameters
    need to have leading zeros prepended to the most significant digit since
    only 2 bytes of the most significant digit are provided.
    
    Therefore, implement ecc_digits_from_bytes to convert a byte array into an
    array of digits and use this function in ecdsa_set_pub_key where an input
    byte array needs to be converted into digits.
    
    Suggested-by: Lukas Wunner <lukas@wunner.de>
    Tested-by: Lukas Wunner <lukas@wunner.de>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: 3b0565c70350 ("crypto: ecdsa - Avoid signed integer overflow on signature decoding")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: ecdsa - Rename keylen to bufsize where necessary [+ + +]
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Thu Apr 4 10:18:53 2024 -0400

    crypto: ecdsa - Rename keylen to bufsize where necessary
    
    [ Upstream commit 703ca5cda1ea04735e48882a7cccff97d57656c3 ]
    
    In cases where 'keylen' was referring to the size of the buffer used by
    a curve's digits, it does not reflect the purpose of the variable anymore
    once NIST P521 is used. What it refers to then is the size of the buffer,
    which may be a few bytes larger than the size a coordinate of a key.
    Therefore, rename keylen to bufsize where appropriate.
    
    Tested-by: Lukas Wunner <lukas@wunner.de>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: 3b0565c70350 ("crypto: ecdsa - Avoid signed integer overflow on signature decoding")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

crypto: ecdsa - Use ecc_digits_from_bytes to convert signature [+ + +]
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Wed May 29 19:08:27 2024 -0400

    crypto: ecdsa - Use ecc_digits_from_bytes to convert signature
    
    [ Upstream commit 546ce0bdc91afd9f5c4c67d9fc4733e0fc7086d1 ]
    
    Since ecc_digits_from_bytes will provide zeros when an insufficient number
    of bytes are passed in the input byte array, use it to convert the r and s
    components of the signature to digits directly from the input byte
    array. This avoids going through an intermediate byte array that has the
    first few bytes filled with zeros.
    
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: 3b0565c70350 ("crypto: ecdsa - Avoid signed integer overflow on signature decoding")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
docs: media: update location of the media patches [+ + +]
Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Date:   Mon Nov 18 07:05:54 2024 +0100

    docs: media: update location of the media patches
    
    [ Upstream commit 72ad4ff638047bbbdf3232178fea4bec1f429319 ]
    
    Due to recent changes on the way we're maintaining media, the
    location of the main tree was updated.
    
    Change docs accordingly.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Reviewed-by: Hans Verkuil <hverkuil@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Fix DSC-re-computing [+ + +]
Author: Agustin Gutierrez <agustin.gutierrez@amd.com>
Date:   Fri Apr 19 13:53:52 2024 -0400

    drm/amd/display: Fix DSC-re-computing
    
    [ Upstream commit b9b5a82c532109a09f4340ef5cabdfdbb0691a9d ]
    
    [Why]
    This fixes a bug introduced by commit c53655545141 ("drm/amd/display: dsc
    mst re-compute pbn for changes on hub").
    The change caused light-up issues with a second display that required
    DSC on some MST docks.
    
    [How]
    Use Virtual DPCD for DSC caps in MST case.
    
    [Limitations]
    This change only affects MST DSC devices that follow specifications
    additional changes are required to check for old MST DSC devices such as
    ones which do not check for Virtual DPCD registers.
    
    Reviewed-by: Swapnil Patel <swapnil.patel@amd.com>
    Reviewed-by: Hersen Wu <hersenxs.wu@amd.com>
    Acked-by: Tom Chung <chiahsuan.chung@amd.com>
    Signed-off-by: Agustin Gutierrez <agustin.gutierrez@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 4641169a8c95 ("drm/amd/display: Fix incorrect DSC recompute trigger")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
drm/amd/display: Fix incorrect DSC recompute trigger [+ + +]
Author: Fangzhi Zuo <Jerry.Zuo@amd.com>
Date:   Wed Sep 4 16:56:45 2024 -0400

    drm/amd/display: Fix incorrect DSC recompute trigger
    
    [ Upstream commit 4641169a8c95d9efc35d2d3c55c3948f3b375ff9 ]
    
    A stream without dsc_aux should not be eliminated from
    the dsc determination. Whether it needs a dsc recompute depends on
    whether its mode has changed or not. Eliminating such a no-dsc stream
    from the dsc determination policy will end up with inconsistencies
    in the new dc_state when compared to the current dc_state,
    triggering a dsc recompute that should not have happened.
    
    Reviewed-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
    Signed-off-by: Fangzhi Zuo <Jerry.Zuo@amd.com>
    Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdkfd: Correct the migration DMA map direction [+ + +]
Author: Prike Liang <Prike.Liang@amd.com>
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
    -45a1-4b88-86ee-fb0f35a0ca40@amd.com/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 <Prike.Liang@amd.com>
    Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/bridge: adv7511_audio: Update Audio InfoFrame properly [+ + +]
Author: Stefan Ekenberg <stefan.ekenberg@axis.com>
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 <biju.das.jz@bp.renesas.com>
    Fixes: 53c515befe28 ("drm/bridge: adv7511: Add Audio support")
    Signed-off-by: Stefan Ekenberg <stefan.ekenberg@axis.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241119-adv7511-audio-info-frame-v4-1-4ae68e76c89c@axis.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/i915/dg1: Fix power gate sequence. [+ + +]
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
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 <vinay.belgaumkar@intel.com>
    Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
    Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241219210019.70532-1-rodrigo.vivi@intel.com
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    (cherry picked from commit de7061947b4ed4be857d452c60d5fb795831d79e)
    Signed-off-by: Tvrtko Ursulin <tursulin@ursulin.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm: adv7511: Drop dsi single lane support [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
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 <hien.huynh.px@renesas.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Reviewed-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241119192040.152657-4-biju.das.jz@bp.renesas.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm: adv7511: Fix use-after-free in adv7533_attach_dsi() [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
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: stable@vger.kernel.org
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241119192040.152657-2-biju.das.jz@bp.renesas.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dt-bindings: display: adi,adv7533: Drop single lane support [+ + +]
Author: Biju Das <biju.das.jz@bp.renesas.com>
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: stable@vger.kernel.org
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241119192040.152657-3-biju.das.jz@bp.renesas.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
eth: bcmsysport: fix call balance of priv->clk handling routines [+ + +]
Author: Vitalii Mordan <mordan@ispras.ru>
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 <mordan@ispras.ru>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20241227123007.2333397-1-mordan@ispras.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ext4: convert to new timestamp accessors [+ + +]
Author: Jeff Layton <jlayton@kernel.org>
Date:   Wed Oct 4 14:52:20 2023 -0400

    ext4: convert to new timestamp accessors
    
    [ Upstream commit b898ab233611f7903d88c0b10f8145e1c15d3642 ]
    
    Convert to using the new inode timestamp accessor functions.
    
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Link: https://lore.kernel.org/r/20231004185347.80880-33-jlayton@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Stable-dep-of: c7fc0366c656 ("ext4: partial zero eof block on unaligned inode size extension")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ext4: partial zero eof block on unaligned inode size extension [+ + +]
Author: Brian Foster <bfoster@redhat.com>
Date:   Thu Sep 19 12:07:40 2024 -0400

    ext4: partial zero eof block on unaligned inode size extension
    
    [ Upstream commit c7fc0366c65628fd69bfc310affec4918199aae2 ]
    
    Using mapped writes, it's technically possible to expose stale
    post-eof data on a truncate up operation. Consider the following
    example:
    
    $ xfs_io -fc "pwrite 0 2k" -c "mmap 0 4k" -c "mwrite 2k 2k" \
            -c "truncate 8k" -c "pread -v 2k 16" <file>
    ...
    00000800:  58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58  XXXXXXXXXXXXXXXX
    ...
    
    This shows that the post-eof data written via mwrite lands within
    EOF after a truncate up. While this is deliberate of the test case,
    behavior is somewhat unpredictable because writeback does post-eof
    zeroing, and writeback can occur at any time in the background. For
    example, an fsync inserted between the mwrite and truncate causes
    the subsequent read to instead return zeroes. This basically means
    that there is a race window in this situation between any subsequent
    extending operation and writeback that dictates whether post-eof
    data is exposed to the file or zeroed.
    
    To prevent this problem, perform partial block zeroing as part of
    the various inode size extending operations that are susceptible to
    it. For truncate extension, zero around the original eof similar to
    how truncate down does partial zeroing of the new eof. For extension
    via writes and fallocate related operations, zero the newly exposed
    range of the file to cover any partial zeroing that must occur at
    the original and new eof blocks.
    
    Signed-off-by: Brian Foster <bfoster@redhat.com>
    Link: https://patch.msgid.link/20240919160741.208162-2-bfoster@redhat.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
f2fs: fix to wait dio completion [+ + +]
Author: Chao Yu <chao@kernel.org>
Date:   Thu Jun 27 15:17:11 2024 +0800

    f2fs: fix to wait dio completion
    
    commit 96cfeb0389530ae32ade8a48ae3ae1ac3b6c009d upstream.
    
    It should wait all existing dio write IOs before block removal,
    otherwise, previous direct write IO may overwrite data in the
    block which may be reused by other inode.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [ Resolve line conflicts to make it work on 6.6.y ]
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/ntfs3: Fix warning in ni_fiemap [+ + +]
Author: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Date:   Tue Oct 8 10:48:15 2024 +0300

    fs/ntfs3: Fix warning in ni_fiemap
    
    [ Upstream commit e2705dd3d16d1000f1fd8193d82447065de8c899 ]
    
    Use local runs_tree instead of cached. This way excludes rw_semaphore lock.
    
    Reported-by: syzbot+1c25748a40fe79b8a119@syzkaller.appspotmail.com
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

fs/ntfs3: Implement fallocate for compressed files [+ + +]
Author: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Date:   Thu Jul 18 17:45:12 2024 +0300

    fs/ntfs3: Implement fallocate for compressed files
    
    [ Upstream commit 9a2d6a40b8a1a6fa62eaf47ceee10a5eef62284c ]
    
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
    Stable-dep-of: e2705dd3d16d ("fs/ntfs3: Fix warning in ni_fiemap")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
fs/proc/task_mmu: fix pagemap flags with PMD THP entries on 32bit [+ + +]
Author: David Hildenbrand <david@redhat.com>
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/20241217195000.1734039-1-david@redhat.com
    Fixes: 2c1f057e5be6 ("fs/proc/task_mmu: properly detect PM_MMAP_EXCLUSIVE per page of PMD-mapped THPs")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs/smb/client: implement chmod() for SMB3 POSIX Extensions [+ + +]
Author: Ralph Boehme <slow@samba.org>
Date:   Thu Nov 14 11:05:13 2024 +0100

    fs/smb/client: implement chmod() for SMB3 POSIX Extensions
    
    [ Upstream commit d413eabff18d640031fc955d107ad9c03c3bf9f1 ]
    
    The NT ACL format for an SMB3 POSIX Extensions chmod() is a single ACE with the
    magic S-1-5-88-3-mode SID:
    
      NT Security Descriptor
          Revision: 1
          Type: 0x8004, Self Relative, DACL Present
          Offset to owner SID: 56
          Offset to group SID: 124
          Offset to SACL: 0
          Offset to DACL: 20
          Owner: S-1-5-21-3177838999-3893657415-1037673384-1000
          Group: S-1-22-2-1000
          NT User (DACL) ACL
              Revision: NT4 (2)
              Size: 36
              Num ACEs: 1
              NT ACE: S-1-5-88-3-438, flags 0x00, Access Allowed, mask 0x00000000
                  Type: Access Allowed
                  NT ACE Flags: 0x00
                  Size: 28
                  Access required: 0x00000000
                  SID: S-1-5-88-3-438
    
    Owner and Group should be NULL, but the server is not required to fail the
    request if they are present.
    
    Signed-off-by: Ralph Boehme <slow@samba.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
gve: guard XDP xmit NDO on existence of xdp queues [+ + +]
Author: Joshua Washington <joshwash@google.com>
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: stable@vger.kernel.org
    Signed-off-by: Joshua Washington <joshwash@google.com>
    Signed-off-by: Praveen Kaligineedi <pkaligineedi@google.com>
    Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
    Reviewed-by: Shailend Chand <shailend@google.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

gve: guard XSK operations on the existence of queues [+ + +]
Author: Joshua Washington <joshwash@google.com>
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: stable@vger.kernel.org
    Signed-off-by: Joshua Washington <joshwash@google.com>
    Signed-off-by: Praveen Kaligineedi <pkaligineedi@google.com>
    Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
    Reviewed-by: Shailend Chand <shailend@google.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
i2c: i801: Add support for Intel Arrow Lake-H [+ + +]
Author: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Date:   Mon Jun 10 13:18:01 2024 +0300

    i2c: i801: Add support for Intel Arrow Lake-H
    
    [ Upstream commit f0eda4ddb2146a9f29d31b54c396f741bd0c82f1 ]
    
    Add SMBus PCI ID on Intel Arrow Lake-H.
    
    Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Stable-dep-of: bd492b583712 ("i2c: i801: Add support for Intel Panther Lake")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: i801: Add support for Intel Panther Lake [+ + +]
Author: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Date:   Mon Sep 23 16:27:19 2024 +0300

    i2c: i801: Add support for Intel Panther Lake
    
    [ Upstream commit bd492b58371295d3ae26162b9666be584abad68a ]
    
    Add SMBus PCI IDs on Intel Panther Lake-P and -U.
    
    Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

i2c: xgene-slimpro: Migrate to use generic PCC shmem related macros [+ + +]
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Wed Sep 27 17:26:11 2023 +0100

    i2c: xgene-slimpro: Migrate to use generic PCC shmem related macros
    
    commit 89a4ad1f437c049534891c3d83cd96d7c7debd2a upstream.
    
    Use the newly defined common and generic PCC shared memory region
    related macros in this driver to replace the locally defined ones.
    
    Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
    Acked-by: Wolfram Sang <wsa@kernel.org>
    Link: https://lore.kernel.org/r/20230927-pcc_defines-v2-2-0b8ffeaef2e5@arm.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Stable-dep-of: 7f9e19f207be ("mailbox: pcc: Check before sending MCTP PCC response ACK")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
iio: adc: ad7192: Convert from of specific to fwnode property handling [+ + +]
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Sun Feb 18 17:27:28 2024 +0000

    iio: adc: ad7192: Convert from of specific to fwnode property handling
    
    [ Upstream commit c3708c829a0662af429897a90aed46b70f14a50b ]
    
    Enables use of with other firmwware types.
    Removes a case of device tree specific handlers that might get copied
    into new drivers.
    
    Cc: Alisa-Dariana Roman <alisa.roman@analog.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20240218172731.1023367-6-jic23@kernel.org
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Stable-dep-of: b7f99fa1b64a ("iio: adc: ad7192: properly check spi_get_device_match_data()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

iio: adc: ad7192: properly check spi_get_device_match_data() [+ + +]
Author: Nuno Sa <nuno.sa@analog.com>
Date:   Mon Oct 14 17:01:21 2024 +0200

    iio: adc: ad7192: properly check spi_get_device_match_data()
    
    [ Upstream commit b7f99fa1b64af2f696b13cec581cb4cd7d3982b8 ]
    
    spi_get_device_match_data() can return a NULL pointer. Hence, let's
    check for it.
    
    Signed-off-by: Nuno Sa <nuno.sa@analog.com>
    Link: https://patch.msgid.link/20241014-fix-error-check-v1-1-089e1003d12f@analog.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ila: serialize calls to nf_register_net_hooks() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
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: syzbot+47e761d22ecf745f72b9@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/6772c9ae.050a0220.2f3838.04c7.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Tom Herbert <tom@herbertland.com>
    Link: https://patch.msgid.link/20241230162849.2795486-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ip_tunnel: annotate data-races around t->parms.link [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Feb 13 06:32:34 2024 +0000

    ip_tunnel: annotate data-races around t->parms.link
    
    [ Upstream commit f694eee9e1c00d6ca06c5e59c04e3b6ff7d64aa9 ]
    
    t->parms.link is read locklessly, annotate these reads
    and opposite writes accordingly.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: b5a7b661a073 ("net: Fix netns for ip_tunnel_init_flow()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ipv4: ip_tunnel: Unmask upper DSCP bits in ip_md_tunnel_xmit() [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Thu Sep 5 19:51:34 2024 +0300

    ipv4: ip_tunnel: Unmask upper DSCP bits in ip_md_tunnel_xmit()
    
    [ Upstream commit c34cfe72bb260fc49660d9e6a9ba95ba01669ae2 ]
    
    Unmask the upper DSCP bits when initializing an IPv4 flow key via
    ip_tunnel_init_flow() before passing it to ip_route_output_key() so that
    in the future we could perform the FIB lookup according to the full DSCP
    value.
    
    Note that the 'tos' variable includes the full DS field. Either the one
    specified via the tunnel key or the one inherited from the inner packet.
    
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: b5a7b661a073 ("net: Fix netns for ip_tunnel_init_flow()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ipv4: ip_tunnel: Unmask upper DSCP bits in ip_tunnel_bind_dev() [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Thu Sep 5 19:51:33 2024 +0300

    ipv4: ip_tunnel: Unmask upper DSCP bits in ip_tunnel_bind_dev()
    
    [ Upstream commit e7191e517a03d025405c7df730b400ad4118474e ]
    
    Unmask the upper DSCP bits when initializing an IPv4 flow key via
    ip_tunnel_init_flow() before passing it to ip_route_output_key() so that
    in the future we could perform the FIB lookup according to the full DSCP
    value.
    
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: b5a7b661a073 ("net: Fix netns for ip_tunnel_init_flow()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ipv4: ip_tunnel: Unmask upper DSCP bits in ip_tunnel_xmit() [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Thu Sep 5 19:51:35 2024 +0300

    ipv4: ip_tunnel: Unmask upper DSCP bits in ip_tunnel_xmit()
    
    [ Upstream commit c2b639f9f3b7a058ca9c7349b096f355773f2cd8 ]
    
    Unmask the upper DSCP bits when initializing an IPv4 flow key via
    ip_tunnel_init_flow() before passing it to ip_route_output_key() so that
    in the future we could perform the FIB lookup according to the full DSCP
    value.
    
    Note that the 'tos' variable includes the full DS field. Either the one
    specified as part of the tunnel parameters or the one inherited from the
    inner packet.
    
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: b5a7b661a073 ("net: Fix netns for ip_tunnel_init_flow()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
irqchip/gic: Correct declaration of *percpu_base pointer in union gic_base [+ + +]
Author: Uros Bizjak <ubizjak@gmail.com>
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 <ubizjak@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/all/20241213145809.2918-2-ubizjak@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kcov: mark in_softirq_really() as __always_inline [+ + +]
Author: Arnd Bergmann <arnd@arndb.de>
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/20241217071814.2261620-1-arnd@kernel.org
    Fixes: 7d4df2dad312 ("kcov: properly check for softirq context")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Marco Elver <elver@google.com>
    Cc: Aleksandr Nogikh <nogikh@google.com>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Josh Poimboeuf <jpoimboe@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ksmbd: retry iterate_dir in smb2_query_dir [+ + +]
Author: Hobin Woo <hobin.woo@samsung.com>
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 <hobin.woo@samsung.com>
    Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
    Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
    Tested-by: Yoonho Shin <yoonho.shin@samsung.com>
    Acked-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ksmbd: set ATTR_CTIME flags when setting mtime [+ + +]
Author: Namjae Jeon <linkinjeon@kernel.org>
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 <ddiss@suse.de>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 6.6.70 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 9 13:32:10 2025 +0100

    Linux 6.6.70
    
    Link: https://lore.kernel.org/r/20250106151150.585603565@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: SeongJae Park <sj@kernel.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mailbox: pcc: Add support for platform notification handling [+ + +]
Author: Huisong Li <lihuisong@huawei.com>
Date:   Tue Aug 1 14:38:26 2023 +0800

    mailbox: pcc: Add support for platform notification handling
    
    [ Upstream commit 60c40b06fa68694dd08a1a0038ea8b9de3f3b1ca ]
    
    Currently, PCC driver doesn't support the processing of platform
    notification for type 4 PCC subspaces.
    
    According to ACPI specification, if platform sends a notification
    to OSPM, it must clear the command complete bit and trigger platform
    interrupt. OSPM needs to check whether the command complete bit is
    cleared, clear platform interrupt, process command, and then set the
    command complete and ring doorbell to the Platform.
    
    Let us stash the value of the pcc type and use the same while processing
    the interrupt of the channel. We also need to set the command complete
    bit and ring doorbell in the interrupt handler for the type 4 channel to
    complete the communication flow after processing the notification from
    the Platform.
    
    Signed-off-by: Huisong Li <lihuisong@huawei.com>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Link: https://lore.kernel.org/r/20230801063827.25336-2-lihuisong@huawei.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Stable-dep-of: 7f9e19f207be ("mailbox: pcc: Check before sending MCTP PCC response ACK")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mailbox: pcc: Check before sending MCTP PCC response ACK [+ + +]
Author: Adam Young <admiyo@os.amperecomputing.com>
Date:   Wed Nov 20 14:02:14 2024 -0500

    mailbox: pcc: Check before sending MCTP PCC response ACK
    
    [ Upstream commit 7f9e19f207be0c534d517d65e01417ba968cdd34 ]
    
    Type 4 PCC channels have an option to send back a response
    to the platform when they are done processing the request.
    The flag to indicate whether or not to respond is inside
    the message body, and thus is not available to the pcc
    mailbox.
    
    If the flag is not set, still set command completion
    bit after processing message.
    
    In order to read the flag, this patch maps the shared
    buffer to virtual memory. To avoid duplication of mapping
    the shared buffer is then made available to be used by
    the driver that uses the mailbox.
    
    Signed-off-by: Adam Young <admiyo@os.amperecomputing.com>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

mailbox: pcc: Support shared interrupt for multiple subspaces [+ + +]
Author: Huisong Li <lihuisong@huawei.com>
Date:   Tue Aug 1 14:38:27 2023 +0800

    mailbox: pcc: Support shared interrupt for multiple subspaces
    
    [ Upstream commit 3db174e478cb0bb34888c20a531608b70aec9c1f ]
    
    If the platform acknowledge interrupt is level triggered, then it can
    be shared by multiple subspaces provided each one has a unique platform
    interrupt ack preserve and ack set masks.
    
    If it can be shared, then we can request the irq with IRQF_SHARED and
    IRQF_ONESHOT flags. The first one indicating it can be shared and the
    latter one to keep the interrupt disabled until the hardirq handler
    finished.
    
    Further, since there is no way to detect if the interrupt is for a given
    channel as the interrupt ack preserve and ack set masks are for clearing
    the interrupt and not for reading the status(in case Irq Ack register
    may be write-only on some platforms), we need a way to identify if the
    given channel is in use and expecting the interrupt.
    
    PCC type0, type1 and type5 do not support shared level triggered interrupt.
    The methods of determining whether a given channel for remaining types
    should respond to an interrupt are as follows:
     - type2: Whether the interrupt belongs to a given channel is only
              determined by the status field in Generic Communications Channel
              Shared Memory Region, which is done in rx_callback of PCC client.
     - type3: This channel checks chan_in_use flag first and then checks the
              command complete bit(value '1' indicates that the command has
              been completed).
     - type4: Platform ensure that the default value of the command complete
              bit corresponding to the type4 channel is '1'. This command
              complete bit is '0' when receive a platform notification.
    
    The new field, 'chan_in_use' is used by the type only support the
    communication from OSPM to Platform (like type3) and should be completely
    ignored by other types so as to avoid too many type unnecessary checks in
    IRQ handler.
    
    Signed-off-by: Huisong Li <lihuisong@huawei.com>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Link: https://lore.kernel.org/r/20230801063827.25336-3-lihuisong@huawei.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Stable-dep-of: 7f9e19f207be ("mailbox: pcc: Check before sending MCTP PCC response ACK")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
media: uvcvideo: Force UVC version to 1.0a for 0408:4033 [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Tue Sep 24 13:33:29 2024 +0000

    media: uvcvideo: Force UVC version to 1.0a for 0408:4033
    
    [ Upstream commit c9df99302fff53b6007666136b9f43fbac7ee3d8 ]
    
    The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
    implements UVC 1.0a as shown by the UVC probe control being 26 bytes
    long. Force the UVC version for that device.
    
    Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
    Closes: https://lore.kernel.org/linux-media/fce4f906-d69b-417d-9f13-bf69fe5c81e3@koyu.space/
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://lore.kernel.org/r/20240924-uvc-quanta-v1-1-2de023863767@chromium.org
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

media: uvcvideo: Force UVC version to 1.0a for 0408:4035 [+ + +]
Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date:   Sun Jan 15 22:52:10 2023 +0200

    media: uvcvideo: Force UVC version to 1.0a for 0408:4035
    
    [ Upstream commit c397e8c45d911443b4ab60084fb723edf2a5b604 ]
    
    The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
    implements UVC 1.0a as shown by the UVC probe control being 26 bytes
    long. Force the UVC version for that device.
    
    Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
    Closes: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2000947
    Link: https://lore.kernel.org/r/20230115205210.20077-1-laurent.pinchart@ideasonboard.com
    Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Stable-dep-of: c9df99302fff ("media: uvcvideo: Force UVC version to 1.0a for 0408:4033")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
memblock: allow zero threshold in validate_numa_converage() [+ + +]
Author: Mike Rapoport (Microsoft) <rppt@kernel.org>
Date:   Fri Nov 29 11:13:47 2024 +0200

    memblock: allow zero threshold in validate_numa_converage()
    
    [ Upstream commit 9cdc6423acb49055efb444ecd895d853a70ef931 ]
    
    Currently memblock validate_numa_converage() returns false negative when
    threshold set to zero.
    
    Make the check if the memory size with invalid node ID is greater than
    the threshold exclusive to fix that.
    
    Link: https://lore.kernel.org/all/Z0mIDBD4KLyxyOCm@kernel.org/
    Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/kmemleak: fix sleeping function called from invalid context at print message [+ + +]
Author: Alessandro Carminati <acarmina@redhat.com>
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/20241217142032.55793-1-acarmina@redhat.com
    Fixes: 3a6f33d86baa ("mm/kmemleak: use %pK to display kernel pointers in backtrace")
    Signed-off-by: Alessandro Carminati <acarmina@redhat.com>
    Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Clément Léger <clement.leger@bootlin.com>
    Cc: Alessandro Carminati <acarmina@redhat.com>
    Cc: Eric Chanudet <echanude@redhat.com>
    Cc: Gabriele Paoloni <gpaoloni@redhat.com>
    Cc: Juri Lelli <juri.lelli@redhat.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/readahead: fix large folio support in async readahead [+ + +]
Author: Yafang Shao <laoar.shao@gmail.com>
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/20241108141710.9721-1-laoar.shao@gmail.com
    Link: https://lkml.kernel.org/r/20241206083025.3478-1-laoar.shao@gmail.com
    Fixes: 4687fdbb805a ("mm/filemap: Support VM_HUGEPAGE for file mappings")
    Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
    Tested-by: kernel test robot <oliver.sang@intel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm: vmscan: account for free pages to prevent infinite Loop in throttle_direct_reclaim() [+ + +]
Author: Seiji Nishikawa <snishika@redhat.com>
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.
    
    [akpm@linux-foundation.org: coding-style cleanups]
    Link: https://lkml.kernel.org/r/20241130164346.436469-1-snishika@redhat.com
    Link: https://lkml.kernel.org/r/20241130161236.433747-2-snishika@redhat.com
    Fixes: 5a1c84b404a7 ("mm: remove reclaim and compaction retry approximations")
    Signed-off-by: Seiji Nishikawa <snishika@redhat.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mmc: sdhci-msm: fix crypto key eviction [+ + +]
Author: Eric Biggers <ebiggers@google.com>
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: stable@vger.kernel.org
    Cc: Abel Vesa <abel.vesa@linaro.org>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Message-ID: <20241213041958.202565-6-ebiggers@kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
modpost: fix input MODULE_DEVICE_TABLE() built for 64-bit on 32-bit host [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Nov 3 21:52:57 2024 +0900

    modpost: fix input MODULE_DEVICE_TABLE() built for 64-bit on 32-bit host
    
    [ Upstream commit 77dc55a978e69625f9718460012e5ef0172dc4de ]
    
    When building a 64-bit kernel on a 32-bit build host, incorrect
    input MODULE_ALIAS() entries may be generated.
    
    For example, when compiling a 64-bit kernel with CONFIG_INPUT_MOUSEDEV=m
    on a 64-bit build machine, you will get the correct output:
    
      $ grep MODULE_ALIAS drivers/input/mousedev.mod.c
      MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*110,*r*0,*1,*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*r*8,*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*14A,*r*a*0,*1,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*145,*r*a*0,*1,*18,*1C,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*110,*r*a*0,*1,*m*l*s*f*w*");
    
    However, building the same kernel on a 32-bit machine results in
    incorrect output:
    
      $ grep MODULE_ALIAS drivers/input/mousedev.mod.c
      MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*110,*130,*r*0,*1,*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*r*8,*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*14A,*16A,*r*a*0,*1,*20,*21,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*145,*165,*r*a*0,*1,*18,*1C,*20,*21,*38,*3C,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*110,*130,*r*a*0,*1,*20,*21,*m*l*s*f*w*");
    
    A similar issue occurs with CONFIG_INPUT_JOYDEV=m. On a 64-bit build
    machine, the output is:
    
      $ grep MODULE_ALIAS drivers/input/joydev.mod.c
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*0,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*2,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*8,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*6,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*k*120,*r*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*k*130,*r*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*k*2C0,*r*a*m*l*s*f*w*");
    
    However, on a 32-bit machine, the output is incorrect:
    
      $ grep MODULE_ALIAS drivers/input/joydev.mod.c
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*0,*20,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*2,*22,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*8,*28,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*6,*26,*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*k*11F,*13F,*r*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*k*11F,*13F,*r*a*m*l*s*f*w*");
      MODULE_ALIAS("input:b*v*p*e*-e*1,*k*2C0,*2E0,*r*a*m*l*s*f*w*");
    
    When building a 64-bit kernel, BITS_PER_LONG is defined as 64. However,
    on a 32-bit build machine, the constant 1L is a signed 32-bit value.
    Left-shifting it beyond 32 bits causes wraparound, and shifting by 31
    or 63 bits makes it a negative value.
    
    The fix in commit e0e92632715f ("[PATCH] PATCH: 1 line 2.6.18 bugfix:
    modpost-64bit-fix.patch") is incorrect; it only addresses cases where
    a 64-bit kernel is built on a 64-bit build machine, overlooking cases
    on a 32-bit build machine.
    
    Using 1ULL ensures a 64-bit width on both 32-bit and 64-bit machines,
    avoiding the wraparound issue.
    
    Fixes: e0e92632715f ("[PATCH] PATCH: 1 line 2.6.18 bugfix: modpost-64bit-fix.patch")
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Stable-dep-of: bf36b4bf1b9a ("modpost: fix the missed iteration for the max bit in do_input()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

modpost: fix the missed iteration for the max bit in do_input() [+ + +]
Author: Masahiro Yamada <masahiroy@kernel.org>
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 <masahiroy@kernel.org>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mptcp: don't always assume copied data in mptcp_cleanup_rbuf() [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
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: stable@vger.kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20241230-net-mptcp-rbuf-fixes-v1-2-8608af434ceb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: fix recvbuffer adjust on sleeping rcvmsg [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
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: stable@vger.kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <martineau@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20241230-net-mptcp-rbuf-fixes-v1-1-8608af434ceb@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: fix TCP options overflow. [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
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: stable@vger.kernel.org
    Reported-by: syzbot+38a095a81f30d82884c1@syzkaller.appspotmail.com
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/538
    Fixes: 1bff1e43a30e ("mptcp: optimize out option generation")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/025d9df8cde3c9a557befc47e9bc08fbbe3476e5.1734771049.git.pabeni@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5: DR, select MSIX vector 0 for completion queue creation [+ + +]
Author: Shahar Shitrit <shshitrit@nvidia.com>
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 <shshitrit@nvidia.com>
    Reviewed-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20241220081505.1286093-2-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5: unique names for per device caches [+ + +]
Author: Sebastian Ott <sebott@redhat.com>
Date:   Wed Oct 23 15:41:46 2024 +0200

    net/mlx5: unique names for per device caches
    
    [ Upstream commit 25872a079bbbe952eb660249cc9f40fa75623e68 ]
    
    Add the device name to the per device kmem_cache names to
    ensure their uniqueness. This fixes warnings like this:
    "kmem_cache of name 'mlx5_fs_fgs' already exists".
    
    Signed-off-by: Sebastian Ott <sebott@redhat.com>
    Reviewed-by: Breno Leitao <leitao@debian.org>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20241023134146.28448-1-sebott@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/mlx5e: macsec: Maintain TX SA from encoding_sa [+ + +]
Author: Dragos Tatulea <dtatulea@nvidia.com>
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 <dtatulea@nvidia.com>
    Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com>
    Reviewed-by: Lior Nahmanson <liorna@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20241220081505.1286093-3-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/mlx5e: Skip restore TC rules for vport rep without loaded flag [+ + +]
Author: Jianbo Liu <jianbol@nvidia.com>
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 <jianbol@nvidia.com>
    Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/20241220081505.1286093-4-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net/sctp: Prevent autoclose integer overflow in sctp_association_init() [+ + +]
Author: Nikolay Kuratov <kniv@yandex-team.ru>
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: stable@vger.kernel.org
    Fixes: 9f70f46bd4c7 ("sctp: properly latch and use autoclose value from sock to association")
    Signed-off-by: Nikolay Kuratov <kniv@yandex-team.ru>
    Acked-by: Xin Long <lucien.xin@gmail.com>
    Link: https://patch.msgid.link/20241219162114.2863827-1-kniv@yandex-team.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: dsa: microchip: Fix KSZ9477 set_ageing_time function [+ + +]
Author: Tristram Ha <tristram.ha@microchip.com>
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 <tristram.ha@microchip.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20241218020224.70590-2-Tristram.Ha@microchip.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: microchip: Fix LAN937X set_ageing_time function [+ + +]
Author: Tristram Ha <tristram.ha@microchip.com>
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 <tristram.ha@microchip.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20241218020224.70590-3-Tristram.Ha@microchip.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: fix memory leak in tcp_conn_request() [+ + +]
Author: Wang Liang <wangliang74@huawei.com>
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 <wangliang74@huawei.com>
    Link: https://patch.msgid.link/20241219072859.3783576-1-wangliang74@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: Fix netns for ip_tunnel_init_flow() [+ + +]
Author: Xiao Liang <shaw.leon@gmail.com>
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 <shaw.leon@gmail.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://patch.msgid.link/20241219130336.103839-1-shaw.leon@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: llc: reset skb->transport_header [+ + +]
Author: Antonio Pastor <antonio.pastor@gmail.com>
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 <antonio.pastor@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241225010723.2830290-1-antonio.pastor@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mctp: handle skb cleanup on sock_queue failures [+ + +]
Author: Jeremy Kerr <jk@codeconstruct.com.au>
Date:   Wed Dec 18 11:53:01 2024 +0800

    net: mctp: handle skb cleanup on sock_queue failures
    
    [ Upstream commit ce1219c3f76bb131d095e90521506d3c6ccfa086 ]
    
    Currently, we don't use the return value from sock_queue_rcv_skb, which
    means we may leak skbs if a message is not successfully queued to a
    socket.
    
    Instead, ensure that we're freeing the skb where the sock hasn't
    otherwise taken ownership of the skb by adding checks on the
    sock_queue_rcv_skb() to invoke a kfree on failure.
    
    In doing so, rather than using the 'rc' value to trigger the
    kfree_skb(), use the skb pointer itself, which is more explicit.
    
    Also, add a kunit test for the sock delivery failure cases.
    
    Fixes: 4a992bbd3650 ("mctp: Implement message fragmentation & reassembly")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
    Link: https://patch.msgid.link/20241218-mctp-next-v2-1-1c1729645eaa@codeconstruct.com.au
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mv643xx_eth: fix an OF node reference leak [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
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 <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://patch.msgid.link/20241221081448.3313163-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: reenable NETIF_F_IPV6_CSUM offload for BIG TCP packets [+ + +]
Author: Willem de Bruijn <willemb@google.com>
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 <syzkaller@googlegroups.com>
    Reported-by: Eric Dumazet <edumazet@google.com>
    Closes: https://lore.kernel.org/netdev/CANn89iK1hdC3Nt8KPhOtTF8vCPc1AHDCtse_BTNki1pWxAByTQ@mail.gmail.com/
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250101164909.1331680-1-willemdebruijn.kernel@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: renesas: rswitch: fix possible early skb release [+ + +]
Author: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Date:   Sun Dec 8 14:50:01 2024 +0500

    net: renesas: rswitch: fix possible early skb release
    
    [ Upstream commit 5cb099902b6b6292b3a85ffa1bb844e0ba195945 ]
    
    When sending frame split into multiple descriptors, hardware processes
    descriptors one by one, including writing back DT values. The first
    descriptor could be already marked as completed when processing of
    next descriptors for the same frame is still in progress.
    
    Although only the last descriptor is configured to generate interrupt,
    completion of the first descriptor could be noticed by the driver when
    handling interrupt for the previous frame.
    
    Currently, driver stores skb in the entry that corresponds to the first
    descriptor. This results into skb could be unmapped and freed when
    hardware did not complete the send yet. This opens a window for
    corrupting the data being sent.
    
    Fix this by saving skb in the entry that corresponds to the last
    descriptor used to send the frame.
    
    Fixes: d2c96b9d5f83 ("net: rswitch: Add jumbo frames handling for TX")
    Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Link: https://patch.msgid.link/20241208095004.69468-2-nikita.yoush@cogentembedded.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: restrict SO_REUSEPORT to inet sockets [+ + +]
Author: Eric Dumazet <edumazet@google.com>
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: syzbot+b3e02953598f447d4d2a@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/6772f2f4.050a0220.2f3838.04cb.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20241231160527.3994168-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: sfc: Correct key_len for efx_tc_ct_zone_ht_params [+ + +]
Author: Liang Jie <liangjie@lixiang.com>
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 <liangjie@lixiang.com>
    Acked-by: Edward Cree <ecree.xilinx@gmail.com>
    Link: https://patch.msgid.link/20241230093709.3226854-1-buaajxlj@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: stmmac: don't create a MDIO bus if unnecessary [+ + +]
Author: Andrew Halaney <ahalaney@redhat.com>
Date:   Tue Dec 12 16:07:36 2023 -0600

    net: stmmac: don't create a MDIO bus if unnecessary
    
    [ Upstream commit f3c2caacee824ce4a331cdafb0b8dc8e987f105e ]
    
    Currently a MDIO bus is created if the devicetree description is either:
    
        1. Not fixed-link
        2. fixed-link but contains a MDIO bus as well
    
    The "1" case above isn't always accurate. If there's a phy-handle,
    it could be referencing a phy on another MDIO controller's bus[1]. In
    this case, where the MDIO bus is not described at all, currently
    stmmac will make a MDIO bus and scan its address space to discover
    phys (of which there are none). This process takes time scanning a bus
    that is known to be empty, delaying time to complete probe.
    
    There are also a lot of upstream devicetrees[2] that expect a MDIO bus
    to be created, scanned for phys, and the first one found connected
    to the MAC. This case can be inferred from the platform description by
    not having a phy-handle && not being fixed-link. This hits case "1" in
    the current driver's logic, and must be handled in any logic change here
    since it is a valid legacy dt-binding.
    
    Let's improve the logic to create a MDIO bus if either:
    
        - Devicetree contains a MDIO bus
        - !fixed-link && !phy-handle (legacy handling)
    
    This way the case where no MDIO bus should be made is handled, as well
    as retaining backwards compatibility with the valid cases.
    
    Below devicetree snippets can be found that explain some of
    the cases above more concretely.
    
    Here's[0] a devicetree example where the MAC is both fixed-link and
    driving a switch on MDIO (case "2" above). This needs a MDIO bus to
    be created:
    
        &fec1 {
                phy-mode = "rmii";
    
                fixed-link {
                        speed = <100>;
                        full-duplex;
                };
    
                mdio1: mdio {
                        switch0: switch0@0 {
                                compatible = "marvell,mv88e6190";
                                pinctrl-0 = <&pinctrl_gpio_switch0>;
                        };
                };
        };
    
    Here's[1] an example where there is no MDIO bus or fixed-link for
    the ethernet1 MAC, so no MDIO bus should be created since ethernet0
    is the MDIO master for ethernet1's phy:
    
        ðernet0 {
                phy-mode = "sgmii";
                phy-handle = <&sgmii_phy0>;
    
                mdio {
                        compatible = "snps,dwmac-mdio";
                        sgmii_phy0: phy@8 {
                                compatible = "ethernet-phy-id0141.0dd4";
                                reg = <0x8>;
                                device_type = "ethernet-phy";
                        };
    
                        sgmii_phy1: phy@a {
                                compatible = "ethernet-phy-id0141.0dd4";
                                reg = <0xa>;
                                device_type = "ethernet-phy";
                        };
                };
        };
    
        ðernet1 {
                phy-mode = "sgmii";
                phy-handle = <&sgmii_phy1>;
        };
    
    Finally there's descriptions like this[2] which don't describe the
    MDIO bus but expect it to be created and the whole address space
    scanned for a phy since there's no phy-handle or fixed-link described:
    
        &gmac {
                phy-supply = <&vcc_lan>;
                phy-mode = "rmii";
                snps,reset-gpio = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>;
                snps,reset-active-low;
                snps,reset-delays-us = <0 10000 1000000>;
        };
    
    [0] https://elixir.bootlin.com/linux/v6.5-rc5/source/arch/arm/boot/dts/nxp/vf/vf610-zii-ssmb-dtu.dts
    [1] https://elixir.bootlin.com/linux/v6.6-rc5/source/arch/arm64/boot/dts/qcom/sa8775p-ride.dts
    [2] https://elixir.bootlin.com/linux/v6.6-rc5/source/arch/arm64/boot/dts/rockchip/rk3368-r88.dts#L164
    
    Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
    Co-developed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: 2b6ffcd7873b ("net: stmmac: restructure the error path of stmmac_probe_config_dt()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: stmmac: restructure the error path of stmmac_probe_config_dt() [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
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 <joe@pf.is.s.u-tokyo.ac.jp>
    Link: https://patch.msgid.link/20241219024119.2017012-1-joe@pf.is.s.u-tokyo.ac.jp
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: ti: icssg-prueth: Fix clearing of IEP_CMP_CFG registers during iep_init [+ + +]
Author: Meghana Malladi <m-malladi@ti.com>
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 <m-malladi@ti.com>
    Reviewed-by: Roger Quadros <rogerq@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: usb: qmi_wwan: add Telit FE910C04 compositions [+ + +]
Author: Daniele Palmas <dnlplm@gmail.com>
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 <dnlplm@gmail.com>
    Link: https://patch.msgid.link/20241209151821.3688829-1-dnlplm@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: wwan: iosm: Properly check for valid exec stage in ipc_mmio_init() [+ + +]
Author: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
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 <mail@maciej.szmigiero.name>
    Link: https://patch.msgid.link/8b19125a825f9dcdd81c667c1e5c48ba28d505a6.1735490770.git.mail@maciej.szmigiero.name
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: wwan: t7xx: Fix FSM command timeout issue [+ + +]
Author: Jinjian Song <jinjian.song@fibocom.com>
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/da90f64c-260a-4329-87bf-1f9ff20a5951@gmail.com/
    
    Fixes: 13e920d93e37 ("net: wwan: t7xx: Add core components")
    Signed-off-by: Jinjian Song <jinjian.song@fibocom.com>
    Acked-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
    Link: https://patch.msgid.link/20241224041552.8711-1-jinjian.song@fibocom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: nft_set_hash: unaligned atomic read on struct nft_set_ext [+ + +]
Author: Pablo Neira Ayuso <pablo@netfilter.org>
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 <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netrom: check buffer length before accessing it [+ + +]
Author: Ilya Shchipletsov <rabbelkin@mail.ru>
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 <hfggklm@gmail.com>
    Signed-off-by: Nikita Marushkin <hfggklm@gmail.com>
    Signed-off-by: Ilya Shchipletsov <rabbelkin@mail.ru>
    Link: https://patch.msgid.link/20241219082308.3942-1-rabbelkin@mail.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NUMA: optimize detection of memory with no node id assigned by firmware [+ + +]
Author: Liam Ni <zhiguangni01@gmail.com>
Date:   Thu Oct 26 10:03:29 2023 +0800

    NUMA: optimize detection of memory with no node id assigned by firmware
    
    [ Upstream commit ff6c3d81f2e86b63a3a530683f89ef393882782a ]
    
    Sanity check that makes sure the nodes cover all memory loops over
    numa_meminfo to count the pages that have node id assigned by the
    firmware, then loops again over memblock.memory to find the total amount
    of memory and in the end checks that the difference between the total
    memory and memory that covered by nodes is less than some threshold.
    Worse, the loop over numa_meminfo calls __absent_pages_in_range() that
    also partially traverses memblock.memory.
    
    It's much simpler and more efficient to have a single traversal of
    memblock.memory that verifies that amount of memory not covered by nodes
    is less than a threshold.
    
    Introduce memblock_validate_numa_coverage() that does exactly that and use
    it instead of numa_meminfo_cover_memory().
    
    Link: https://lkml.kernel.org/r/20231026020329.327329-1-zhiguangni01@gmail.com
    Signed-off-by: Liam Ni <zhiguangni01@gmail.com>
    Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Bibo Mao <maobibo@loongson.cn>
    Cc: Binbin Zhou <zhoubinbin@loongson.cn>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Feiyang Chen <chenfeiyang@loongson.cn>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: WANG Xuerui <kernel@xen0n.name>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: 9cdc6423acb4 ("memblock: allow zero threshold in validate_numa_converage()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme-pci: 512 byte aligned dma pool segment quirk [+ + +]
Author: Robert Beckett <bob.beckett@collabora.com>
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/20241113043151.GA20077@lst.de/T/#u
    Fixes: 83bdfcbdbe5d ("nvme-pci: qdepth 1 quirk")
    Cc: Paweł Anikiel <panikiel@google.com>
    Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme: use helper nvme_ctrl_state in nvme_keep_alive_finish function [+ + +]
Author: Nilay Shroff <nilay@linux.ibm.com>
Date:   Wed Oct 16 08:33:16 2024 +0530

    nvme: use helper nvme_ctrl_state in nvme_keep_alive_finish function
    
    [ Upstream commit 599d9f3a10eec69ef28a90161763e4bd7c9c02bf ]
    
    We no more need acquiring ctrl->lock before accessing the
    NVMe controller state and instead we can now use the helper
    nvme_ctrl_state. So replace the use of ctrl->lock from
    nvme_keep_alive_finish function with nvme_ctrl_state call.
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Stable-dep-of: 84488282166d ("Revert "nvme: make keep-alive synchronous operation"")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ocfs2: fix slab-use-after-free due to dangling pointer dqi_priv [+ + +]
Author: Dennis Lam <dennis.lamerice@gmail.com>
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.
    
    [akpm@linux-foundation.org: coding-style cleanups]
    Link: https://lkml.kernel.org/r/20241218023924.22821-2-dennis.lamerice@gmail.com
    Fixes: 8f9e8f5fcc05 ("ocfs2: Fix Q_GETNEXTQUOTA for filesystem without quotas")
    Signed-off-by: Dennis Lam <dennis.lamerice@gmail.com>
    Reported-by: syzbot+d173bf8a5a7faeede34c@syzkaller.appspotmail.com
    Tested-by: syzbot+d173bf8a5a7faeede34c@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/6731d26f.050a0220.1fb99c.014b.GAE@google.com/T/
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
of: address: Preserve the flags portion on 1:1 dma-ranges mapping [+ + +]
Author: Andrea della Porta <andrea.porta@suse.com>
Date:   Sun Nov 24 11:05:37 2024 +0100

    of: address: Preserve the flags portion on 1:1 dma-ranges mapping
    
    [ Upstream commit 7f05e20b989ac33c9c0f8c2028ec0a566493548f ]
    
    A missing or empty dma-ranges in a DT node implies a 1:1 mapping for dma
    translations. In this specific case, the current behaviour is to zero out
    the entire specifier so that the translation could be carried on as an
    offset from zero. This includes address specifier that has flags (e.g.
    PCI ranges).
    
    Once the flags portion has been zeroed, the translation chain is broken
    since the mapping functions will check the upcoming address specifier
    against mismatching flags, always failing the 1:1 mapping and its entire
    purpose of always succeeding.
    
    Set to zero only the address portion while passing the flags through.
    
    Fixes: dbbdee94734b ("of/address: Merge all of the bus translation code")
    Cc: stable@vger.kernel.org
    Signed-off-by: Andrea della Porta <andrea.porta@suse.com>
    Tested-by: Herve Codina <herve.codina@bootlin.com>
    Link: https://lore.kernel.org/r/e51ae57874e58a9b349c35e2e877425ebc075d7a.1732441813.git.andrea.porta@suse.com
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

of: address: Remove duplicated functions [+ + +]
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Tue Oct 17 13:02:17 2023 +0200

    of: address: Remove duplicated functions
    
    [ Upstream commit 3eb030c60835668997d5763b1a0c7938faf169f6 ]
    
    The recently added of_bus_default_flags_translate() performs the exact
    same operation as of_bus_pci_translate() and of_bus_isa_translate().
    
    Avoid duplicated code replacing both of_bus_pci_translate() and
    of_bus_isa_translate() with of_bus_default_flags_translate().
    
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Link: https://lore.kernel.org/r/20231017110221.189299-3-herve.codina@bootlin.com
    Signed-off-by: Rob Herring <robh@kernel.org>
    Stable-dep-of: 7f05e20b989a ("of: address: Preserve the flags portion on 1:1 dma-ranges mapping")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

of: address: Store number of bus flag cells rather than bool [+ + +]
Author: Rob Herring <robh@kernel.org>
Date:   Thu Oct 26 08:53:58 2023 -0500

    of: address: Store number of bus flag cells rather than bool
    
    [ Upstream commit 88696db08b7efa3b6bb722014ea7429e78f6be32 ]
    
    It is more useful to know how many flags cells a bus has rather than
    whether a bus has flags or not as ultimately the number of cells is the
    information used. Replace 'has_flags' boolean with 'flag_cells' count.
    
    Acked-by: Herve Codina <herve.codina@bootlin.com>
    Link: https://lore.kernel.org/r/20231026135358.3564307-2-robh@kernel.org
    Signed-off-by: Rob Herring <robh@kernel.org>
    Stable-dep-of: 7f05e20b989a ("of: address: Preserve the flags portion on 1:1 dma-ranges mapping")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pinctrl: mcp23s08: Fix sleeping in atomic context due to regmap locking [+ + +]
Author: Evgenii Shatokhin <e.shatokhin@yadro.com>
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: stable@vger.kernel.org
    Signed-off-by: Evgenii Shatokhin <e.shatokhin@yadro.com>
    Link: https://lore.kernel.org/20241209074659.1442898-1-e.shatokhin@yadro.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
platform/x86: mlx-platform: call pci_dev_put() to balance the refcount [+ + +]
Author: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
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 <joe@pf.is.s.u-tokyo.ac.jp>
    Reviewed-by: Vadim Pasternak <vadimp@nvidia.com>
    Link: https://lore.kernel.org/r/20241216022538.381209-1-joe@pf.is.s.u-tokyo.ac.jp
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
powerpc: Remove initialisation of readpos [+ + +]
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Tue Oct 24 15:55:59 2023 +0100

    powerpc: Remove initialisation of readpos
    
    [ Upstream commit 0f7f544af60a6082cfaa3ed4c8f4ca1a858807ee ]
    
    While powerpc doesn't use the seq_buf readpos, it did explicitly
    initialise it for no good reason.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20231024145600.739451-1-willy@infradead.org
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Justin Stitt <justinstitt@google.com>
    Cc: Kent Overstreet <kent.overstreet@linux.dev>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Fixes: d0ed46b60396 ("tracing: Move readpos from seq_buf to trace_seq")
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/bnxt_re: Add check for path mtu in modify_qp [+ + +]
Author: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
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 <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241211083931.968831-3-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Add send queue size check for variable wqe [+ + +]
Author: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
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 <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241217102649.1377704-4-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Add support for Variable WQE in Genp7 adapters [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
Date:   Sun Aug 18 21:47:23 2024 -0700

    RDMA/bnxt_re: Add support for Variable WQE in Genp7 adapters
    
    [ Upstream commit de1d364c3815f9360a0945097ca2731950e914fa ]
    
    Variable size WQE means that each send Work Queue Entry to HW can use
    different WQE sizes as opposed to the static WQE size on the current
    devices. Set variable WQE mode for Gen P7 devices. Depth of the Queue will
    be a multiple of slot which is 16 bytes. The number of slots should be a
    multiple of 256 as per the HW requirement.
    
    Initialize the Software shadow queue to hold requests equal to the number
    of slots. Also, do not expose the variable size WQE capability until the
    last patch in the series.
    
    Link: https://patch.msgid.link/r/1724042847-1481-2-git-send-email-selvin.xavier@broadcom.com
    Signed-off-by: Hongguang Gao <hongguang.gao@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Stable-dep-of: d5a38bf2f359 ("RDMA/bnxt_re: Disable use of reserved wqes")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Allow MSN table capability check [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
Date:   Mon May 27 23:11:36 2024 -0700

    RDMA/bnxt_re: Allow MSN table capability check
    
    [ Upstream commit 8d310ba845827a38fcd463d86bfe3b730ce7ab8f ]
    
    FW reports the HW capability to use PSN table or MSN table and
    driver/library need to select it based on this capability.
    Use the new capability instead of the older capability check for HW
    retransmission while handling the MSN/PSN table. FW report
    zero (PSN table) for older adapters to maintain backward compatibility.
    
    Also, Updated the FW interface structures to handle the new fields.
    
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://lore.kernel.org/r/1716876697-25970-2-git-send-email-selvin.xavier@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Stable-dep-of: eb867d797d29 ("RDMA/bnxt_re: Remove always true dattr validity check")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Avoid initializing the software queue for user queues [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
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 <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241204075416.478431-3-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Avoid sending the modify QP workaround for latest adapters [+ + +]
Author: Kashyap Desai <kashyap.desai@broadcom.com>
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 <kashyap.desai@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241204075416.478431-4-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Disable use of reserved wqes [+ + +]
Author: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
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 <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241217102649.1377704-3-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Fix max SGEs for the Work Request [+ + +]
Author: Kashyap Desai <kashyap.desai@broadcom.com>
Date:   Wed Dec 4 13:24:12 2024 +0530

    RDMA/bnxt_re: Fix max SGEs for the Work Request
    
    commit 79d330fbdffd8cee06d8bdf38d82cb62d8363a27 upstream.
    
    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 <kashyap.desai@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241204075416.478431-2-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

RDMA/bnxt_re: Fix max_qp_wrs reported [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
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 <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241217102649.1377704-2-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Fix MSN table size for variable wqe mode [+ + +]
Author: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
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 <kashyap.desai@broadcom.com>
    Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241217102649.1377704-5-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Fix reporting hw_ver in query_device [+ + +]
Author: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
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 <preethi.gurusiddalingeswaraswamy@broadcom.com>
    Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241211083931.968831-6-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Fix the check for 9060 condition [+ + +]
Author: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
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 <kashyap.desai@broadcom.com>
    Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241211083931.968831-2-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Fix the locking while accessing the QP table [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
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 <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/20241217102649.1377704-6-kalesh-anakkur.purayil@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Fix the max WQE size for static WQE support [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
Date:   Wed Sep 4 03:04:13 2024 -0700

    RDMA/bnxt_re: Fix the max WQE size for static WQE support
    
    [ Upstream commit 227f51743b61fe3f6fc481f0fb8086bf8c49b8c9 ]
    
    When variable size WQE is supported, max_qp_sges reported
    is more than 6. For devices that supports variable size WQE,
    the Send WQE size calculation is wrong when an an older library
    that doesn't support variable size WQE is used.
    
    Set the WQE size to 128 when static WQE is supported.
    
    Fixes: de1d364c3815 ("RDMA/bnxt_re: Add support for Variable WQE in Genp7 adapters")
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Link: https://patch.msgid.link/1725444253-13221-3-git-send-email-selvin.xavier@broadcom.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/bnxt_re: Remove always true dattr validity check [+ + +]
Author: Leon Romanovsky <leon@kernel.org>
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 <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/r/202411222329.YTrwonWi-lkp@intel.com/
    Link: https://patch.msgid.link/be0d8836b64cba3e479fbcbca717acad04aae02e.1732626579.git.leonro@nvidia.com
    Acked-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/hns: Fix mapping error of zero-hop WQE buffer [+ + +]
Author: wenglianfa <wenglianfa@huawei.com>
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 <wenglianfa@huawei.com>
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://patch.msgid.link/20241220055249.146943-2-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/hns: Fix missing flush CQE for DWQE [+ + +]
Author: Chengchang Tang <tangchengchang@huawei.com>
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 <tangchengchang@huawei.com>
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://patch.msgid.link/20241220055249.146943-5-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/hns: Fix warning storm caused by invalid input in IO path [+ + +]
Author: Chengchang Tang <tangchengchang@huawei.com>
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 <tangchengchang@huawei.com>
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://patch.msgid.link/20241220055249.146943-4-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/hns: Refactor mtr find [+ + +]
Author: Chengchang Tang <tangchengchang@huawei.com>
Date:   Sat Jan 13 16:59:30 2024 +0800

    RDMA/hns: Refactor mtr find
    
    [ Upstream commit a4ca341080758d847db155b97887bff6f84016a4 ]
    
    hns_roce_mtr_find() is a collection of multiple functions, and the
    return value is also difficult to understand, which is not conducive
    to modification and maintenance.
    
    Separate the function of obtaining MTR root BA from this function.
    And some adjustments has been made to improve readability.
    
    Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://lore.kernel.org/r/20240113085935.2838701-2-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Stable-dep-of: 8673a6c2d9e4 ("RDMA/hns: Fix mapping error of zero-hop WQE buffer")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

RDMA/hns: Remove unused parameters and variables [+ + +]
Author: Chengchang Tang <tangchengchang@huawei.com>
Date:   Fri Apr 12 17:16:08 2024 +0800

    RDMA/hns: Remove unused parameters and variables
    
    [ Upstream commit f4caa864af84f801a5821ea2ba6c1cc46f8252c1 ]
    
    Remove unused parameters and variables.
    
    Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
    Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
    Link: https://lore.kernel.org/r/20240412091616.370789-3-huangjunxian6@hisilicon.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Stable-dep-of: 8673a6c2d9e4 ("RDMA/hns: Fix mapping error of zero-hop WQE buffer")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/mlx5: Enforce same type port association for multiport RoCE [+ + +]
Author: Patrisious Haddad <phaddad@nvidia.com>
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 <mbloch@nvidia.com>
    Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
    Link: https://patch.msgid.link/88699500f690dff1c1852c1ddb71f8a1cc8b956e.1733233480.git.leonro@nvidia.com
    Reviewed-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/rtrs: Ensure 'ib_sge list' is accessible [+ + +]
Author: Li Zhijian <lizhijian@fujitsu.com>
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/6a1f3e8f-deb0-49f9-bc69-a9b03ecfcda7@fujitsu.com/
    
    Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
    Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
    Link: https://patch.msgid.link/20241231013416.1290920-1-lizhijian@fujitsu.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/uverbs: Prevent integer overflow issue [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
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: stable@vger.kernel.org
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/b8765ab3-c2da-4611-aae0-ddd6ba173d23@stanley.mountain
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
remoteproc: qcom: pas: Add sc7180 adsp [+ + +]
Author: Nikita Travkin <nikita@trvn.ru>
Date:   Thu Sep 7 15:02:35 2023 +0500

    remoteproc: qcom: pas: Add sc7180 adsp
    
    [ Upstream commit 8de60bbab994bf8165d7d10e974872852da47aa7 ]
    
    sc7180 has a dedicated ADSP similar to the one found in sm8250.
    Add it's compatible to the driver reusing the existing config so
    the devices that use the adsp can probe it.
    
    Signed-off-by: Nikita Travkin <nikita@trvn.ru>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20230907-sc7180-adsp-rproc-v3-2-6515c3fbe0a3@trvn.ru
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Stable-dep-of: 009e288c989b ("remoteproc: qcom: pas: enable SAR2130P audio DSP support")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

remoteproc: qcom: pas: Add support for SA8775p ADSP, CDSP and GPDSP [+ + +]
Author: Tengfei Fan <quic_tengfan@quicinc.com>
Date:   Mon Aug 5 19:08:04 2024 +0200

    remoteproc: qcom: pas: Add support for SA8775p ADSP, CDSP and GPDSP
    
    [ Upstream commit 9091225ba28c0106d3cd041c7abf5551a94bb524 ]
    
    Add support for PIL loading on ADSP, CDSP0, CDSP1, GPDSP0 and GPDSP1 on
    SA8775p SoCs.
    
    Signed-off-by: Tengfei Fan <quic_tengfan@quicinc.com>
    Co-developed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Link: https://lore.kernel.org/r/20240805-topic-sa8775p-iot-remoteproc-v4-3-86affdc72c04@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Stable-dep-of: 009e288c989b ("remoteproc: qcom: pas: enable SAR2130P audio DSP support")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

remoteproc: qcom: pas: enable SAR2130P audio DSP support [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sun Oct 27 01:09:45 2024 +0300

    remoteproc: qcom: pas: enable SAR2130P audio DSP support
    
    [ Upstream commit 009e288c989b3fe548a45c82da407d7bd00418a9 ]
    
    Enable support for the Audio DSP on the Qualcomm SAR2130P platform,
    reusing the SM8350 resources.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20241027-sar2130p-adsp-v1-3-bd204e39d24e@linaro.org
    Signed-off-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "bpf: support non-r10 register spill/fill to/from stack in precision tracking" [+ + +]
Author: Shung-Hsi Yu <shung-hsi.yu@suse.com>
Date:   Sun Jan 5 14:27:43 2025 +0800

    Revert "bpf: support non-r10 register spill/fill to/from stack in precision tracking"
    
    Revert commit ecc2aeeaa08a355d84d3ca9c3d2512399a194f29 which is commit
    41f6f64e6999a837048b1bd13a2f8742964eca6b upstream.
    
    Levi reported that commit ecc2aeeaa08a ("bpf: support non-r10 register
    spill/fill to/from stack in precision tracking") cause eBPF program that
    previously loads successfully in stable 6.6 now fails to load, when the
    same program also loads successfully in v6.13-rc5.
    
    Revert ecc2aeeaa08a until the problem has been probably figured out and
    resolved.
    
    Fixes: ecc2aeeaa08a ("bpf: support non-r10 register spill/fill to/from stack in precision tracking")
    Reported-by: Levi Zim <rsworktech@outlook.com>
    Link: https://lore.kernel.org/stable/MEYP282MB2312C3C8801476C4F262D6E1C6162@MEYP282MB2312.AUSP282.PROD.OUTLOOK.COM/
    Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "nvme: make keep-alive synchronous operation" [+ + +]
Author: Nilay Shroff <nilay@linux.ibm.com>
Date:   Tue Nov 5 11:42:08 2024 +0530

    Revert "nvme: make keep-alive synchronous operation"
    
    [ Upstream commit 84488282166de6b6760ada8030e87aaa08bce3aa ]
    
    This reverts commit d06923670b5a5f609603d4a9fee4dec02d38de9c.
    
    It was realized that the fix implemented to contain the race condition
    among the keep alive task and the fabric shutdown code path in the commit
    d06923670b5ia ("nvme: make keep-alive synchronous operation") is not
    optimal. The reason being keep-alive runs under the workqueue and making
    it synchronous would waste a workqueue context.
    Furthermore, we later found that the above race condition is a regression
    caused due to the changes implemented in commit a54a93d0e359 ("nvme: move
    stopping keep-alive into nvme_uninit_ctrl()"). So we decided to revert the
    commit d06923670b5a ("nvme: make keep-alive synchronous operation") and
    then fix the regression.
    
    Link: https://lore.kernel.org/all/196f4013-3bbf-43ff-98b4-9cb2a96c20c2@grimberg.me/
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sched: Initialize idle tasks only once [+ + +]
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Oct 28 11:43:42 2024 +0100

    sched: Initialize idle tasks only once
    
    [ Upstream commit b23decf8ac9102fc52c4de5196f4dc0a5f3eb80b ]
    
    Idle tasks are initialized via __sched_fork() twice:
    
         fork_idle()
            copy_process()
              sched_fork()
                 __sched_fork()
            init_idle()
              __sched_fork()
    
    Instead of cleaning this up, sched_ext hacked around it. Even when analyis
    and solution were provided in a discussion, nobody cared to clean this up.
    
    init_idle() is also invoked from sched_init() to initialize the boot CPU's
    idle task, which requires the __sched_fork() invocation. But this can be
    trivially solved by invoking __sched_fork() before init_idle() in
    sched_init() and removing the __sched_fork() invocation from init_idle().
    
    Do so and clean up the comments explaining this historical leftover.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20241028103142.359584747@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scripts/sorttable: fix orc_sort_cmp() to maintain symmetry and transitivity [+ + +]
Author: Kuan-Wei Chiu <visitorckw@gmail.com>
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/20241226140332.2670689-1-visitorckw@gmail.com
    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 <visitorckw@gmail.com>
    Cc: Ching-Chun (Jim) Huang <jserv@ccns.ncku.edu.tw>
    Cc: <chuang@cs.nycu.edu.tw>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Josh Poimboeuf <jpoimboe@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Shile Zhang <shile.zhang@linux.alibaba.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: hisi_sas: Allocate DFX memory during dump trigger [+ + +]
Author: Yihang Li <liyihang9@huawei.com>
Date:   Wed Sep 13 10:15:27 2023 +0800

    scsi: hisi_sas: Allocate DFX memory during dump trigger
    
    [ Upstream commit 63f0733d07ce60252e885602b39571ade0441015 ]
    
    Currently, if CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is enabled, the
    memory space used by DFX is allocated during device initialization, which
    occupies a large number of memory resources. The memory usage before and
    after the driver is loaded is as follows:
    
    Memory usage before the driver is loaded:
    $ free -m
             total        used        free      shared  buff/cache   available
    Mem:     867352        2578      864037          11         735  861681
    Swap:    4095           0        4095
    
    Memory usage after the driver which include 4 HBAs is loaded:
    $ insmod hisi_sas_v3_hw.ko
    $ free -m
             total        used        free      shared  buff/cache  available
    Mem:     867352        4760      861848          11       743   859495
    Swap:    4095           0        4095
    
    The driver with 4 HBAs connected will allocate about 110 MB of memory
    without enabling debugfs.
    
    Therefore, to avoid wasting memory resources, DFX memory is allocated
    during dump triggering. The dump may fail due to memory allocation
    failure. After this change, each dump costs about 10 MB of memory, and each
    dump lasts about 100 ms.
    
    Signed-off-by: Yihang Li <liyihang9@huawei.com>
    Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
    Link: https://lore.kernel.org/r/1694571327-78697-4-git-send-email-chenxiang66@hisilicon.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Stable-dep-of: 9f564f15f884 ("scsi: hisi_sas: Create all dump files during debugfs initialization")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: hisi_sas: Create all dump files during debugfs initialization [+ + +]
Author: Yihang Li <liyihang9@huawei.com>
Date:   Tue Oct 8 10:18:21 2024 +0800

    scsi: hisi_sas: Create all dump files during debugfs initialization
    
    [ Upstream commit 9f564f15f88490b484e02442dc4c4b11640ea172 ]
    
    For the current debugfs of hisi_sas, after user triggers dump, the
    driver allocate memory space to save the register information and create
    debugfs files to display the saved information. In this process, the
    debugfs files created after each dump.
    
    Therefore, when the dump is triggered while the driver is unbind, the
    following hang occurs:
    
    [67840.853907] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000a0
    [67840.862947] Mem abort info:
    [67840.865855]   ESR = 0x0000000096000004
    [67840.869713]   EC = 0x25: DABT (current EL), IL = 32 bits
    [67840.875125]   SET = 0, FnV = 0
    [67840.878291]   EA = 0, S1PTW = 0
    [67840.881545]   FSC = 0x04: level 0 translation fault
    [67840.886528] Data abort info:
    [67840.889524]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
    [67840.895117]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [67840.900284]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [67840.905709] user pgtable: 4k pages, 48-bit VAs, pgdp=0000002803a1f000
    [67840.912263] [00000000000000a0] pgd=0000000000000000, p4d=0000000000000000
    [67840.919177] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
    [67840.996435] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [67841.003628] pc : down_write+0x30/0x98
    [67841.007546] lr : start_creating.part.0+0x60/0x198
    [67841.012495] sp : ffff8000b979ba20
    [67841.016046] x29: ffff8000b979ba20 x28: 0000000000000010 x27: 0000000000024b40
    [67841.023412] x26: 0000000000000012 x25: ffff20202b355ae8 x24: ffff20202b35a8c8
    [67841.030779] x23: ffffa36877928208 x22: ffffa368b4972240 x21: ffff8000b979bb18
    [67841.038147] x20: ffff00281dc1e3c0 x19: fffffffffffffffe x18: 0000000000000020
    [67841.045515] x17: 0000000000000000 x16: ffffa368b128a530 x15: ffffffffffffffff
    [67841.052888] x14: ffff8000b979bc18 x13: ffffffffffffffff x12: ffff8000b979bb18
    [67841.060263] x11: 0000000000000000 x10: 0000000000000000 x9 : ffffa368b1289b18
    [67841.067640] x8 : 0000000000000012 x7 : 0000000000000000 x6 : 00000000000003a9
    [67841.075014] x5 : 0000000000000000 x4 : ffff002818c5cb00 x3 : 0000000000000001
    [67841.082388] x2 : 0000000000000000 x1 : ffff002818c5cb00 x0 : 00000000000000a0
    [67841.089759] Call trace:
    [67841.092456]  down_write+0x30/0x98
    [67841.096017]  start_creating.part.0+0x60/0x198
    [67841.100613]  debugfs_create_dir+0x48/0x1f8
    [67841.104950]  debugfs_create_files_v3_hw+0x88/0x348 [hisi_sas_v3_hw]
    [67841.111447]  debugfs_snapshot_regs_v3_hw+0x708/0x798 [hisi_sas_v3_hw]
    [67841.118111]  debugfs_trigger_dump_v3_hw_write+0x9c/0x120 [hisi_sas_v3_hw]
    [67841.125115]  full_proxy_write+0x68/0xc8
    [67841.129175]  vfs_write+0xd8/0x3f0
    [67841.132708]  ksys_write+0x70/0x108
    [67841.136317]  __arm64_sys_write+0x24/0x38
    [67841.140440]  invoke_syscall+0x50/0x128
    [67841.144385]  el0_svc_common.constprop.0+0xc8/0xf0
    [67841.149273]  do_el0_svc+0x24/0x38
    [67841.152773]  el0_svc+0x38/0xd8
    [67841.156009]  el0t_64_sync_handler+0xc0/0xc8
    [67841.160361]  el0t_64_sync+0x1a4/0x1a8
    [67841.164189] Code: b9000882 d2800002 d2800023 f9800011 (c85ffc05)
    [67841.170443] ---[ end trace 0000000000000000 ]---
    
    To fix this issue, create all directories and files during debugfs
    initialization. In this way, the driver only needs to allocate memory
    space to save information each time the user triggers dumping.
    
    Signed-off-by: Yihang Li <liyihang9@huawei.com>
    Link: https://lore.kernel.org/r/20241008021822.2617339-13-liyihang9@huawei.com
    Reviewed-by: Xingui Yang <yangxingui@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: hisi_sas: Directly call register snapshot instead of using workqueue [+ + +]
Author: Yihang Li <liyihang9@huawei.com>
Date:   Wed Sep 13 10:15:26 2023 +0800

    scsi: hisi_sas: Directly call register snapshot instead of using workqueue
    
    [ Upstream commit 2ff07b5c6fe9173e7a7de3b23f300d71ad4d8fde ]
    
    Currently, register information dump is performed via workqueue, regardless
    of the trigger mode (automatic or manual). There is a delay in dumping
    register through workqueue, the exact register information at trigger time
    cannot be obtained.
    
    Call register snapshot directly instead of through a workqueue.
    
    Signed-off-by: Yihang Li <liyihang9@huawei.com>
    Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
    Link: https://lore.kernel.org/r/1694571327-78697-3-git-send-email-chenxiang66@hisilicon.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Stable-dep-of: 9f564f15f884 ("scsi: hisi_sas: Create all dump files during debugfs initialization")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: hisi_sas: Fix a deadlock issue related to automatic dump [+ + +]
Author: Yihang Li <liyihang9@huawei.com>
Date:   Mon Jan 22 14:25:44 2024 +0800

    scsi: hisi_sas: Fix a deadlock issue related to automatic dump
    
    [ Upstream commit 3c4f53b2c341ec6428b98cb51a89a09b025d0953 ]
    
    If we issue a disabling PHY command, the device attached with it will go
    offline, if a 2 bit ECC error occurs at the same time, a hung task may be
    found:
    
    [ 4613.652388] INFO: task kworker/u256:0:165233 blocked for more than 120 seconds.
    [ 4613.666297] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 4613.674809] task:kworker/u256:0  state:D stack:    0 pid:165233 ppid:     2 flags:0x00000208
    [ 4613.683959] Workqueue: 0000:74:02.0_disco_q sas_revalidate_domain [libsas]
    [ 4613.691518] Call trace:
    [ 4613.694678]  __switch_to+0xf8/0x17c
    [ 4613.698872]  __schedule+0x660/0xee0
    [ 4613.703063]  schedule+0xac/0x240
    [ 4613.706994]  schedule_timeout+0x500/0x610
    [ 4613.711705]  __down+0x128/0x36c
    [ 4613.715548]  down+0x240/0x2d0
    [ 4613.719221]  hisi_sas_internal_abort_timeout+0x1bc/0x260 [hisi_sas_main]
    [ 4613.726618]  sas_execute_internal_abort+0x144/0x310 [libsas]
    [ 4613.732976]  sas_execute_internal_abort_dev+0x44/0x60 [libsas]
    [ 4613.739504]  hisi_sas_internal_task_abort_dev.isra.0+0xbc/0x1b0 [hisi_sas_main]
    [ 4613.747499]  hisi_sas_dev_gone+0x174/0x250 [hisi_sas_main]
    [ 4613.753682]  sas_notify_lldd_dev_gone+0xec/0x2e0 [libsas]
    [ 4613.759781]  sas_unregister_common_dev+0x4c/0x7a0 [libsas]
    [ 4613.765962]  sas_destruct_devices+0xb8/0x120 [libsas]
    [ 4613.771709]  sas_do_revalidate_domain.constprop.0+0x1b8/0x31c [libsas]
    [ 4613.778930]  sas_revalidate_domain+0x60/0xa4 [libsas]
    [ 4613.784716]  process_one_work+0x248/0x950
    [ 4613.789424]  worker_thread+0x318/0x934
    [ 4613.793878]  kthread+0x190/0x200
    [ 4613.797810]  ret_from_fork+0x10/0x18
    [ 4613.802121] INFO: task kworker/u256:4:316722 blocked for more than 120 seconds.
    [ 4613.816026] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 4613.824538] task:kworker/u256:4  state:D stack:    0 pid:316722 ppid:     2 flags:0x00000208
    [ 4613.833670] Workqueue: 0000:74:02.0 hisi_sas_rst_work_handler [hisi_sas_main]
    [ 4613.841491] Call trace:
    [ 4613.844647]  __switch_to+0xf8/0x17c
    [ 4613.848852]  __schedule+0x660/0xee0
    [ 4613.853052]  schedule+0xac/0x240
    [ 4613.856984]  schedule_timeout+0x500/0x610
    [ 4613.861695]  __down+0x128/0x36c
    [ 4613.865542]  down+0x240/0x2d0
    [ 4613.869216]  hisi_sas_controller_prereset+0x58/0x1fc [hisi_sas_main]
    [ 4613.876324]  hisi_sas_rst_work_handler+0x40/0x8c [hisi_sas_main]
    [ 4613.883019]  process_one_work+0x248/0x950
    [ 4613.887732]  worker_thread+0x318/0x934
    [ 4613.892204]  kthread+0x190/0x200
    [ 4613.896118]  ret_from_fork+0x10/0x18
    [ 4613.900423] INFO: task kworker/u256:1:348985 blocked for more than 121 seconds.
    [ 4613.914341] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 4613.922852] task:kworker/u256:1  state:D stack:    0 pid:348985 ppid:     2 flags:0x00000208
    [ 4613.931984] Workqueue: 0000:74:02.0_event_q sas_port_event_worker [libsas]
    [ 4613.939549] Call trace:
    [ 4613.942702]  __switch_to+0xf8/0x17c
    [ 4613.946892]  __schedule+0x660/0xee0
    [ 4613.951083]  schedule+0xac/0x240
    [ 4613.955015]  schedule_timeout+0x500/0x610
    [ 4613.959725]  wait_for_common+0x200/0x610
    [ 4613.964349]  wait_for_completion+0x3c/0x5c
    [ 4613.969146]  flush_workqueue+0x198/0x790
    [ 4613.973776]  sas_porte_broadcast_rcvd+0x1e8/0x320 [libsas]
    [ 4613.979960]  sas_port_event_worker+0x54/0xa0 [libsas]
    [ 4613.985708]  process_one_work+0x248/0x950
    [ 4613.990420]  worker_thread+0x318/0x934
    [ 4613.994868]  kthread+0x190/0x200
    [ 4613.998800]  ret_from_fork+0x10/0x18
    
    This is because when the device goes offline, we obtain the hisi_hba
    semaphore and send the ABORT_DEV command to the device. However, the
    internal abort timed out due to the 2 bit ECC error and triggers automatic
    dump. In addition, since the hisi_hba semaphore has been obtained, the dump
    cannot be executed and the controller cannot be reset.
    
    Therefore, the deadlocks occur on the following circular dependencies:
    hisi_sas_dev_gone() -> down() -> hisi_sas_internal_task_abort_dev() -> ...
    -> hisi_sas_internal_abort_timeout() -> down().
    
    The deadlock is triggered only when the timeout occurs during device goes
    offline. To fix this issue, use .rst_ha_timeout to distinguish the scenario
    where a device goes offline from other scenarios.
    
    Fixes: 2ff07b5c6fe9 ("scsi: hisi_sas: Directly call register snapshot instead of using workqueue")
    Signed-off-by: Yihang Li <liyihang9@huawei.com>
    Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
    Link: https://lore.kernel.org/r/1705904747-62186-2-git-send-email-chenxiang66@hisilicon.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: hisi_sas: Remove redundant checks for automatic debugfs dump [+ + +]
Author: Yihang Li <liyihang9@huawei.com>
Date:   Mon Jan 22 14:25:45 2024 +0800

    scsi: hisi_sas: Remove redundant checks for automatic debugfs dump
    
    commit 3f030550476566b12091687c70071d05ad433e0d upstream.
    
    In commit 63f0733d07ce ("scsi: hisi_sas: Allocate DFX memory during dump
    trigger"), the memory allocation time of the DFX is changed from device
    initialization to dump occurs, so .debugfs_itct is not a valid address and
    do not need to check.
    
    The parameter hisi_sas_debugfs_enable is enough to check whether automatic
    debugfs dump is triggered, so remove redunant checks.
    
    Fixes: 63f0733d07ce ("scsi: hisi_sas: Allocate DFX memory during dump trigger")
    Signed-off-by: Yihang Li <liyihang9@huawei.com>
    Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
    Link: https://lore.kernel.org/r/1705904747-62186-3-git-send-email-chenxiang66@hisilicon.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: mpi3mr: Start controller indexing from 0 [+ + +]
Author: Ranjan Kumar <ranjan.kumar@broadcom.com>
Date:   Mon Nov 11 01:14:03 2024 +0530

    scsi: mpi3mr: Start controller indexing from 0
    
    [ Upstream commit 0d32014f1e3e7a7adf1583c45387f26b9bb3a49d ]
    
    Instead of displaying the controller index starting from '1' make the
    driver display the controller index starting from '0'.
    
    Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
    Link: https://lore.kernel.org/r/20241110194405.10108-4-ranjan.kumar@broadcom.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: mpi3mr: Use ida to manage mrioc ID [+ + +]
Author: Guixin Liu <kanie@linux.alibaba.com>
Date:   Fri Dec 29 12:03:31 2023 +0800

    scsi: mpi3mr: Use ida to manage mrioc ID
    
    [ Upstream commit 29b75184f721b16c51ef6e67eec0e40ed88381c7 ]
    
    To ensure that the same ID is not obtained during concurrent execution of
    the probe, an ida is used to manage the mrioc's ID.
    
    Signed-off-by: Guixin Liu <kanie@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20231229040331.52518-1-kanie@linux.alibaba.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Stable-dep-of: 0d32014f1e3e ("scsi: mpi3mr: Start controller indexing from 0")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selinux: ignore unknown extended permissions [+ + +]
Author: Thiébaud Weksteen <tweek@google.com>
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: stable@vger.kernel.org
    Fixes: fa1aa143ac4a ("selinux: extended permissions for ioctls")
    Signed-off-by: Thiébaud Weksteen <tweek@google.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
seq_buf: Introduce DECLARE_SEQ_BUF and seq_buf_str() [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Oct 27 08:56:38 2023 -0700

    seq_buf: Introduce DECLARE_SEQ_BUF and seq_buf_str()
    
    [ Upstream commit dcc4e5728eeaeda84878ca0018758cff1abfca21 ]
    
    Solve two ergonomic issues with struct seq_buf;
    
    1) Too much boilerplate is required to initialize:
    
            struct seq_buf s;
            char buf[32];
    
            seq_buf_init(s, buf, sizeof(buf));
    
    Instead, we can build this directly on the stack. Provide
    DECLARE_SEQ_BUF() macro to do this:
    
            DECLARE_SEQ_BUF(s, 32);
    
    2) %NUL termination is fragile and requires 2 steps to get a valid
       C String (and is a layering violation exposing the "internals" of
       seq_buf):
    
            seq_buf_terminate(s);
            do_something(s->buffer);
    
    Instead, we can just return s->buffer directly after terminating it in
    the refactored seq_buf_terminate(), now known as seq_buf_str():
    
            do_something(seq_buf_str(s));
    
    Link: https://lore.kernel.org/linux-trace-kernel/20231027155634.make.260-kees@kernel.org
    Link: https://lore.kernel.org/linux-trace-kernel/20231026194033.it.702-kees@kernel.org/
    
    Cc: Yosry Ahmed <yosryahmed@google.com>
    Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Justin Stitt <justinstitt@google.com>
    Cc: Kent Overstreet <kent.overstreet@linux.dev>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Yun Zhou <yun.zhou@windriver.com>
    Cc: Jacob Keller <jacob.e.keller@intel.com>
    Cc: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Stable-dep-of: afd2627f727b ("tracing: Check "%s" dereference via the field and not the TP_printk format")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

seq_buf: Make DECLARE_SEQ_BUF() usable [+ + +]
Author: Nathan Lynch <nathanl@linux.ibm.com>
Date:   Tue Jan 16 08:09:25 2024 -0600

    seq_buf: Make DECLARE_SEQ_BUF() usable
    
    [ Upstream commit 7a8e9cdf9405819105ae7405cd91e482bf574b01 ]
    
    Using the address operator on the array doesn't work:
    
    ./include/linux/seq_buf.h:27:27: error: initialization of ‘char *’
      from incompatible pointer type ‘char (*)[128]’
      [-Werror=incompatible-pointer-types]
       27 |                 .buffer = &__ ## NAME ## _buffer,       \
          |                           ^
    
    Apart from fixing that, we can improve DECLARE_SEQ_BUF() by using a
    compound literal to define the buffer array without attaching a name
    to it. This makes the macro a single statement, allowing constructs
    such as:
    
      static DECLARE_SEQ_BUF(my_seq_buf, MYSB_SIZE);
    
    to work as intended.
    
    Link: https://lkml.kernel.org/r/20240116-declare-seq-buf-fix-v1-1-915db4692f32@linux.ibm.com
    
    Cc: stable@vger.kernel.org
    Acked-by: Kees Cook <keescook@chromium.org>
    Fixes: dcc4e5728eea ("seq_buf: Introduce DECLARE_SEQ_BUF and seq_buf_str()")
    Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sky2: Add device ID 11ab:4373 for Marvell 88E8075 [+ + +]
Author: Pascal Hambourg <pascal@plouf.fr.eu.org>
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 <pascal@plouf.fr.eu.org>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/10165a62-99fb-4be6-8c64-84afd6234085@plouf.fr.eu.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb/client: rename cifs_ace to smb_ace [+ + +]
Author: ChenXiaoSong <chenxiaosong@kylinos.cn>
Date:   Thu Aug 22 08:20:58 2024 +0000

    smb/client: rename cifs_ace to smb_ace
    
    [ Upstream commit 09bedafc1e2c5c82aad3cbfe1359e2b0bf752f3a ]
    
    Preparation for moving acl definitions to new common header file.
    
    Use the following shell command to rename:
    
      find fs/smb/client -type f -exec sed -i \
        's/struct cifs_ace/struct smb_ace/g' {} +
    
    Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
    Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Stable-dep-of: d413eabff18d ("fs/smb/client: implement chmod() for SMB3 POSIX Extensions")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb/client: rename cifs_acl to smb_acl [+ + +]
Author: ChenXiaoSong <chenxiaosong@kylinos.cn>
Date:   Thu Aug 22 08:20:57 2024 +0000

    smb/client: rename cifs_acl to smb_acl
    
    [ Upstream commit 251b93ae73805b216e84ed2190b525f319da4c87 ]
    
    Preparation for moving acl definitions to new common header file.
    
    Use the following shell command to rename:
    
      find fs/smb/client -type f -exec sed -i \
        's/struct cifs_acl/struct smb_acl/g' {} +
    
    Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
    Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Stable-dep-of: d413eabff18d ("fs/smb/client: implement chmod() for SMB3 POSIX Extensions")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb/client: rename cifs_ntsd to smb_ntsd [+ + +]
Author: ChenXiaoSong <chenxiaosong@kylinos.cn>
Date:   Thu Aug 22 08:20:55 2024 +0000

    smb/client: rename cifs_ntsd to smb_ntsd
    
    [ Upstream commit 3651487607ae778df1051a0a38bb34a5bd34e3b7 ]
    
    Preparation for moving acl definitions to new common header file.
    
    Use the following shell command to rename:
    
      find fs/smb/client -type f -exec sed -i \
        's/struct cifs_ntsd/struct smb_ntsd/g' {} +
    
    Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
    Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Stable-dep-of: d413eabff18d ("fs/smb/client: implement chmod() for SMB3 POSIX Extensions")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb/client: rename cifs_sid to smb_sid [+ + +]
Author: ChenXiaoSong <chenxiaosong@kylinos.cn>
Date:   Thu Aug 22 08:20:56 2024 +0000

    smb/client: rename cifs_sid to smb_sid
    
    [ Upstream commit 7f599d8fb3e087aff5be4e1392baaae3f8d42419 ]
    
    Preparation for moving acl definitions to new common header file.
    
    Use the following shell command to rename:
    
      find fs/smb/client -type f -exec sed -i \
        's/struct cifs_sid/struct smb_sid/g' {} +
    
    Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
    Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Stable-dep-of: d413eabff18d ("fs/smb/client: implement chmod() for SMB3 POSIX Extensions")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
smb: client: destroy cfid_put_wq on module exit [+ + +]
Author: Enzo Matsumiya <ematsumiya@suse.de>
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 <ematsumiya@suse.de>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: client: fix use-after-free of signing key [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Mon Nov 11 10:40:55 2024 -0300

    smb: client: fix use-after-free of signing key
    
    [ Upstream commit 343d7fe6df9e247671440a932b6a73af4fa86d95 ]
    
    Customers have reported use-after-free in @ses->auth_key.response with
    SMB2.1 + sign mounts which occurs due to following race:
    
    task A                         task B
    cifs_mount()
     dfs_mount_share()
      get_session()
       cifs_mount_get_session()    cifs_send_recv()
        cifs_get_smb_ses()          compound_send_recv()
         cifs_setup_session()        smb2_setup_request()
          kfree_sensitive()           smb2_calc_signature()
                                       crypto_shash_setkey() *UAF*
    
    Fix this by ensuring that we have a valid @ses->auth_key.response by
    checking whether @ses->ses_status is SES_GOOD or SES_EXITING with
    @ses->ses_lock held.  After commit 24a9799aa8ef ("smb: client: fix UAF
    in smb2_reconnect_server()"), we made sure to call ->logoff() only
    when @ses was known to be good (e.g. valid ->auth_key.response), so
    it's safe to access signing key when @ses->ses_status == SES_EXITING.
    
    Cc: stable@vger.kernel.org
    Reported-by: Jay Shin <jaeshin@redhat.com>
    Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

smb: client: stop flooding dmesg in smb2_calc_signature() [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Wed Sep 18 02:04:01 2024 -0300

    smb: client: stop flooding dmesg in smb2_calc_signature()
    
    [ Upstream commit a13ca780afab350f37f8be9eda2bf79d1aed9bdd ]
    
    When having several mounts that share same credential and the client
    couldn't re-establish an SMB session due to an expired kerberos ticket
    or rotated password, smb2_calc_signature() will end up flooding dmesg
    when not finding SMB sessions to calculate signatures.
    
    Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Stable-dep-of: 343d7fe6df9e ("smb: client: fix use-after-free of signing key")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
softirq: Allow raising SCHED_SOFTIRQ from SMP-call-function on RT kernel [+ + +]
Author: K Prateek Nayak <kprateek.nayak@amd.com>
Date:   Tue Nov 19 05:44:29 2024 +0000

    softirq: Allow raising SCHED_SOFTIRQ from SMP-call-function on RT kernel
    
    [ Upstream commit 6675ce20046d149e1e1ffe7e9577947dee17aad5 ]
    
    do_softirq_post_smp_call_flush() on PREEMPT_RT kernels carries a
    WARN_ON_ONCE() for any SOFTIRQ being raised from an SMP-call-function.
    Since do_softirq_post_smp_call_flush() is called with preempt disabled,
    raising a SOFTIRQ during flush_smp_call_function_queue() can lead to
    longer preempt disabled sections.
    
    Since commit b2a02fc43a1f ("smp: Optimize
    send_call_function_single_ipi()") IPIs to an idle CPU in
    TIF_POLLING_NRFLAG mode can be optimized out by instead setting
    TIF_NEED_RESCHED bit in idle task's thread_info and relying on the
    flush_smp_call_function_queue() in the idle-exit path to run the
    SMP-call-function.
    
    To trigger an idle load balancing, the scheduler queues
    nohz_csd_function() responsible for triggering an idle load balancing on
    a target nohz idle CPU and sends an IPI. Only now, this IPI is optimized
    out and the SMP-call-function is executed from
    flush_smp_call_function_queue() in do_idle() which can raise a
    SCHED_SOFTIRQ to trigger the balancing.
    
    So far, this went undetected since, the need_resched() check in
    nohz_csd_function() would make it bail out of idle load balancing early
    as the idle thread does not clear TIF_POLLING_NRFLAG before calling
    flush_smp_call_function_queue(). The need_resched() check was added with
    the intent to catch a new task wakeup, however, it has recently
    discovered to be unnecessary and will be removed in the subsequent
    commit after which nohz_csd_function() can raise a SCHED_SOFTIRQ from
    flush_smp_call_function_queue() to trigger an idle load balance on an
    idle target in TIF_POLLING_NRFLAG mode.
    
    nohz_csd_function() bails out early if "idle_cpu()" check for the
    target CPU, and does not lock the target CPU's rq until the very end,
    once it has found tasks to run on the CPU and will not inhibit the
    wakeup of, or running of a newly woken up higher priority task. Account
    for this and prevent a WARN_ON_ONCE() when SCHED_SOFTIRQ is raised from
    flush_smp_call_function_queue().
    
    Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20241119054432.6405-2-kprateek.nayak@amd.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
sound: usb: enable DSD output for ddHiFi TC44C [+ + +]
Author: Adrian Ratiu <adrian.ratiu@collabora.com>
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 <adrian.ratiu@collabora.com>
    Link: https://patch.msgid.link/20241209090529.16134-1-adrian.ratiu@collabora.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

sound: usb: format: don't warn that raw DSD is unsupported [+ + +]
Author: Adrian Ratiu <adrian.ratiu@collabora.com>
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 <tiwai@suse.com>
    Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
    Link: https://patch.msgid.link/20241209090529.16134-2-adrian.ratiu@collabora.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
thunderbolt: Add support for Intel Lunar Lake [+ + +]
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Fri May 20 13:47:11 2022 +0300

    thunderbolt: Add support for Intel Lunar Lake
    
    [ Upstream commit 2cd3da4e37453019e21a486d9de3144f46b4fdf7 ]
    
    Intel Lunar Lake has similar integrated Thunderbolt/USB4 controller as
    Intel Meteor Lake with some small differences in the host router (it has
    3 DP IN adapters for instance). Add the Intel Lunar Lake PCI IDs to the
    driver list of supported devices.
    
    Tested-by: Pengfei Xu <pengfei.xu@intel.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Stable-dep-of: 8644b48714dc ("thunderbolt: Add support for Intel Panther Lake-M/P")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

thunderbolt: Add support for Intel Panther Lake-M/P [+ + +]
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue May 14 10:15:14 2024 +0300

    thunderbolt: Add support for Intel Panther Lake-M/P
    
    [ Upstream commit 8644b48714dca8bf2f42a4ff8311de8efc9bd8c3 ]
    
    Intel Panther Lake-M/P has the same integrated Thunderbolt/USB4
    controller as Lunar Lake. Add these PCI IDs to the driver list of
    supported devices.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

thunderbolt: Don't display nvm_version unless upgrade supported [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Mon Dec 9 10:25:51 2024 -0600

    thunderbolt: Don't display nvm_version unless upgrade supported
    
    [ Upstream commit e34f1717ef0632fcec5cb827e5e0e9f223d70c9b ]
    
    The read will never succeed if NVM wasn't initialized due to an unknown
    format.
    
    Add a new callback for visibility to only show when supported.
    
    Cc: stable@vger.kernel.org
    Fixes: aef9c693e7e5 ("thunderbolt: Move vendor specific NVM handling into nvm.c")
    Reported-by: Richard Hughes <hughsient@gmail.com>
    Closes: https://github.com/fwupd/fwupd/issues/8200
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tracing: Check "%s" dereference via the field and not the TP_printk format [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Mon Dec 16 21:41:22 2024 -0500

    tracing: Check "%s" dereference via the field and not the TP_printk format
    
    [ Upstream commit afd2627f727b89496d79a6b934a025fc916d4ded ]
    
    The TP_printk() portion of a trace event is executed at the time a event
    is read from the trace. This can happen seconds, minutes, hours, days,
    months, years possibly later since the event was recorded. If the print
    format contains a dereference to a string via "%s", and that string was
    allocated, there's a chance that string could be freed before it is read
    by the trace file.
    
    To protect against such bugs, there are two functions that verify the
    event. The first one is test_event_printk(), which is called when the
    event is created. It reads the TP_printk() format as well as its arguments
    to make sure nothing may be dereferencing a pointer that was not copied
    into the ring buffer along with the event. If it is, it will trigger a
    WARN_ON().
    
    For strings that use "%s", it is not so easy. The string may not reside in
    the ring buffer but may still be valid. Strings that are static and part
    of the kernel proper which will not be freed for the life of the running
    system, are safe to dereference. But to know if it is a pointer to a
    static string or to something on the heap can not be determined until the
    event is triggered.
    
    This brings us to the second function that tests for the bad dereferencing
    of strings, trace_check_vprintf(). It would walk through the printf format
    looking for "%s", and when it finds it, it would validate that the pointer
    is safe to read. If not, it would produces a WARN_ON() as well and write
    into the ring buffer "[UNSAFE-MEMORY]".
    
    The problem with this is how it used va_list to have vsnprintf() handle
    all the cases that it didn't need to check. Instead of re-implementing
    vsnprintf(), it would make a copy of the format up to the %s part, and
    call vsnprintf() with the current va_list ap variable, where the ap would
    then be ready to point at the string in question.
    
    For architectures that passed va_list by reference this was possible. For
    architectures that passed it by copy it was not. A test_can_verify()
    function was used to differentiate between the two, and if it wasn't
    possible, it would disable it.
    
    Even for architectures where this was feasible, it was a stretch to rely
    on such a method that is undocumented, and could cause issues later on
    with new optimizations of the compiler.
    
    Instead, the first function test_event_printk() was updated to look at
    "%s" as well. If the "%s" argument is a pointer outside the event in the
    ring buffer, it would find the field type of the event that is the problem
    and mark the structure with a new flag called "needs_test". The event
    itself will be marked by TRACE_EVENT_FL_TEST_STR to let it be known that
    this event has a field that needs to be verified before the event can be
    printed using the printf format.
    
    When the event fields are created from the field type structure, the
    fields would copy the field type's "needs_test" value.
    
    Finally, before being printed, a new function ignore_event() is called
    which will check if the event has the TEST_STR flag set (if not, it
    returns false). If the flag is set, it then iterates through the events
    fields looking for the ones that have the "needs_test" flag set.
    
    Then it uses the offset field from the field structure to find the pointer
    in the ring buffer event. It runs the tests to make sure that pointer is
    safe to print and if not, it triggers the WARN_ON() and also adds to the
    trace output that the event in question has an unsafe memory access.
    
    The ignore_event() makes the trace_check_vprintf() obsolete so it is
    removed.
    
    Link: https://lore.kernel.org/all/CAHk-=wh3uOnqnZPpR0PeLZZtyWbZLboZ7cHLCKRWsocvs9Y7hQ@mail.gmail.com/
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/20241217024720.848621576@goodmis.org
    Fixes: 5013f454a352c ("tracing: Add check of trace event print fmts for dereferencing pointers")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tracing: Fix trace_check_vprintf() when tp_printk is used [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Thu Oct 3 10:49:25 2024 -0400

    tracing: Fix trace_check_vprintf() when tp_printk is used
    
    [ Upstream commit 50a3242d84ee1625b0bfef29b95f935958dccfbe ]
    
    When the tp_printk kernel command line is used, the trace events go
    directly to printk(). It is still checked via the trace_check_vprintf()
    function to make sure the pointers of the trace event are legit.
    
    The addition of reading buffers from previous boots required adding a
    delta between the addresses of the previous boot and the current boot so
    that the pointers in the old buffer can still be used. But this required
    adding a trace_array pointer to acquire the delta offsets.
    
    The tp_printk code does not provide a trace_array (tr) pointer, so when
    the offsets were examined, a NULL pointer dereference happened and the
    kernel crashed.
    
    If the trace_array does not exist, just default the delta offsets to zero,
    as that also means the trace event is not being read from a previous boot.
    
    Link: https://lore.kernel.org/all/Zv3z5UsG_jsO9_Tb@aschofie-mobl2.lan/
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Link: https://lore.kernel.org/20241003104925.4e1b1fd9@gandalf.local.home
    Fixes: 07714b4bb3f98 ("tracing: Handle old buffer mappings for event strings and functions")
    Reported-by: Alison Schofield <alison.schofield@intel.com>
    Tested-by: Alison Schofield <alison.schofield@intel.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Stable-dep-of: afd2627f727b ("tracing: Check "%s" dereference via the field and not the TP_printk format")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tracing: Handle old buffer mappings for event strings and functions [+ + +]
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Wed Jun 12 19:19:45 2024 -0400

    tracing: Handle old buffer mappings for event strings and functions
    
    [ Upstream commit 07714b4bb3f9800261c8b4b2f47e9010ed60979d ]
    
    Use the saved text_delta and data_delta of a persistent memory mapped ring
    buffer that was saved from a previous boot, and use the delta in the trace
    event print output so that strings and functions show up normally.
    
    That is, for an event like trace_kmalloc() that prints the callsite via
    "%pS", if it used the address saved in the ring buffer it will not match
    the function that was saved in the previous boot if the kernel remaps
    itself between boots.
    
    For RCU events that point to saved static strings where only the address
    of the string is saved in the ring buffer, it too will be adjusted to
    point to where the string is on the current boot.
    
    Link: https://lkml.kernel.org/r/20240612232026.821020753@goodmis.org
    
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Vincent Donnefort <vdonnefort@google.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Daniel Bristot de Oliveira <bristot@redhat.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vineeth Pillai <vineeth@bitbyteword.org>
    Cc: Youssef Esmat <youssefesmat@google.com>
    Cc: Beau Belgrave <beaub@linux.microsoft.com>
    Cc: Alexander Graf <graf@amazon.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Ross Zwisler <zwisler@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Stable-dep-of: afd2627f727b ("tracing: Check "%s" dereference via the field and not the TP_printk format")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tracing: Have process_string() also allow arrays [+ + +]
Author: Steven Rostedt <rostedt@goodmis.org>
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/9dee19b6185d325d0e6fa5f7cbba81d007d99166.camel@sapience.com/
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Link: https://lore.kernel.org/20241231000646.324fb5f7@gandalf.local.home
    Fixes: 65a25d9f7ac02 ("tracing: Add "%s" check in test_event_printk()")
    Reported-by: Genes Lists <lists@sapience.com>
    Tested-by: Gene C <arch@sapience.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tracing: Move readpos from seq_buf to trace_seq [+ + +]
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Fri Oct 20 04:35:45 2023 +0100

    tracing: Move readpos from seq_buf to trace_seq
    
    [ Upstream commit d0ed46b60396cfa7e0056f55e1ce0b43c7db57b6 ]
    
    To make seq_buf more lightweight as a string buf, move the readpos member
    from seq_buf to its container, trace_seq.  That puts the responsibility
    of maintaining the readpos entirely in the tracing code.  If some future
    users want to package up the readpos with a seq_buf, we can define a
    new struct then.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20231020033545.2587554-2-willy@infradead.org
    
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Justin Stitt <justinstitt@google.com>
    Cc: Kent Overstreet <kent.overstreet@linux.dev>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Stable-dep-of: afd2627f727b ("tracing: Check "%s" dereference via the field and not the TP_printk format")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udf: Verify inode link counts before performing rename [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Tue Nov 26 12:55:12 2024 +0100

    udf: Verify inode link counts before performing rename
    
    [ Upstream commit 6756af923e06aa33ad8894aaecbf9060953ba00f ]
    
    During rename, we are updating link counts of various inodes either when
    rename deletes target or when moving directory across directories.
    Verify involved link counts are sane so that we don't trip warnings in
    VFS.
    
    Reported-by: syzbot+3ff7365dc04a6bcafa66@syzkaller.appspotmail.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
udf_rename(): only access the child content on cross-directory rename [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Oct 17 14:44:23 2023 -0400

    udf_rename(): only access the child content on cross-directory rename
    
    [ Upstream commit 9d35cebb794bb7be93db76c3383979c7deacfef9 ]
    
    We can't really afford locking the source on same-directory rename;
    currently vfs_rename() tries to do that, but it will have to be
    changed.  The logics in udf_rename() is lazy and goes looking for
    ".." in source even in same-directory case.  It's not hard to get
    rid of that, leaving that behaviour only for cross-directory case;
    that VFS can get locks safely (and will keep doing that after the
    coming changes).
    
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Stable-dep-of: 6756af923e06 ("udf: Verify inode link counts before performing rename")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: chipidea: add CI_HDRC_FORCE_VBUS_ACTIVE_ALWAYS flag [+ + +]
Author: Tomer Maimon <tmaimon77@gmail.com>
Date:   Tue Oct 17 22:59:01 2023 +0300

    usb: chipidea: add CI_HDRC_FORCE_VBUS_ACTIVE_ALWAYS flag
    
    [ Upstream commit 2978cc1f285390c1bd4d9bfc665747adc6e4b19c ]
    
    Adding CI_HDRC_FORCE_VBUS_ACTIVE_ALWAYS flag to modify the vbus_active
    parameter to active in case the ChipIdea USB IP role is device-only and
    there is no otgsc register.
    
    Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
    Acked-by: Peter Chen <peter.chen@kernel.org>
    Link: https://lore.kernel.org/r/20231017195903.1665260-2-tmaimon77@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: ec841b8d73cf ("usb: chipidea: add CI_HDRC_HAS_SHORT_PKT_LIMIT flag")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: chipidea: add CI_HDRC_HAS_SHORT_PKT_LIMIT flag [+ + +]
Author: Xu Yang <xu.yang_2@nxp.com>
Date:   Mon Sep 23 16:12:01 2024 +0800

    usb: chipidea: add CI_HDRC_HAS_SHORT_PKT_LIMIT flag
    
    [ Upstream commit ec841b8d73cff37f8960e209017efe1eb2fb21f2 ]
    
    Currently, the imx deivice controller has below limitations:
    
    1. can't generate short packet interrupt if IOC not set in dTD. So if one
       request span more than one dTDs and only the last dTD set IOC, the usb
       request will pending there if no more data comes.
    2. the controller can't accurately deliver data to differtent usb requests
       in some cases due to short packet. For example: one usb request span 3
       dTDs, then if the controller received a short packet the next packet
       will go to 2nd dTD of current request rather than the first dTD of next
       request.
    3. can't build a bus packet use multiple dTDs. For example: controller
       needs to send one packet of 512 bytes use dTD1 (200 bytes) + dTD2
       (312 bytes), actually the host side will see 200 bytes short packet.
    
    Based on these limits, add CI_HDRC_HAS_SHORT_PKT_LIMIT flag and use it on
    imx platforms.
    
    Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
    Acked-by: Peter Chen <peter.chen@kernel.org>
    Link: https://lore.kernel.org/r/20240923081203.2851768-1-xu.yang_2@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: chipidea: udc: limit usb request length to max 16KB [+ + +]
Author: Xu Yang <xu.yang_2@nxp.com>
Date:   Mon Sep 23 16:12:02 2024 +0800

    usb: chipidea: udc: limit usb request length to max 16KB
    
    [ Upstream commit ca8d18aa7b0f22d66a3ca9a90d8f73431b8eca89 ]
    
    To let the device controller work properly on short packet limitations,
    one usb request should only correspond to one dTD. Then every dTD will
    set IOC. In theory, each dTD support up to 20KB data transfer if the
    offset is 0. Due to we cannot predetermine the offset, this will limit
    the usb request length to max 16KB. This should be fine since most of
    the user transfer data based on this size policy.
    
    Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
    Acked-by: Peter Chen <peter.chen@kernel.org>
    Link: https://lore.kernel.org/r/20240923081203.2851768-2-xu.yang_2@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: dwc3: gadget: Add missing check for single port RAM in TxFIFO resizing logic [+ + +]
Author: Selvarasu Ganesan <selvarasu.g@samsung.com>
Date:   Tue Nov 12 10:18:02 2024 +0530

    usb: dwc3: gadget: Add missing check for single port RAM in TxFIFO resizing logic
    
    [ Upstream commit 61eb055cd3048ee01ca43d1be924167d33e16fdc ]
    
    The existing implementation of the TxFIFO resizing logic only supports
    scenarios where more than one port RAM is used. However, there is a need
    to resize the TxFIFO in USB2.0-only mode where only a single port RAM is
    available. This commit introduces the necessary changes to support
    TxFIFO resizing in such scenarios by adding a missing check for single
    port RAM.
    
    This fix addresses certain platform configurations where the existing
    TxFIFO resizing logic does not work properly due to the absence of
    support for single port RAM. By adding this missing check, we ensure
    that the TxFIFO resizing logic works correctly in all scenarios,
    including those with a single port RAM.
    
    Fixes: 9f607a309fbe ("usb: dwc3: Resize TX FIFOs to meet EP bursting requirements")
    Cc: stable@vger.kernel.org # 6.12.x: fad16c82: usb: dwc3: gadget: Refine the logic for resizing Tx FIFOs
    Signed-off-by: Selvarasu Ganesan <selvarasu.g@samsung.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20241112044807.623-1-selvarasu.g@samsung.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: add callback for connector status updates [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Apr 11 07:49:53 2024 +0300

    usb: typec: ucsi: add callback for connector status updates
    
    [ Upstream commit 24bce22d09ec8e67022aab9a888acb56fb7a996a ]
    
    Allow UCSI glue driver to perform addtional work to update connector
    status. For example, it might check the cable orientation.  This call is
    performed after reading new connector statatus, so the platform driver
    can peek at new connection status bits.
    
    The callback is called both when registering the port and when the
    connector change event is being handled.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20240411-ucsi-orient-aware-v2-1-d4b1cb22a33f@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: de9df030ccb5 ("usb: typec: ucsi: glink: be more precise on orientation-aware ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: add update_connector callback [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Apr 11 07:49:56 2024 +0300

    usb: typec: ucsi: add update_connector callback
    
    [ Upstream commit 62866465196228917f233aea68de73be6cdb9fae ]
    
    Add a callback to allow glue drivers to update the connector before
    registering corresponding power supply and Type-C port. In particular
    this is useful if glue drivers want to touch the connector's Type-C
    capabilities structure.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20240411-ucsi-orient-aware-v2-4-d4b1cb22a33f@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: de9df030ccb5 ("usb: typec: ucsi: glink: be more precise on orientation-aware ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: glink: be more precise on orientation-aware ports [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sat Nov 9 02:04:15 2024 +0200

    usb: typec: ucsi: glink: be more precise on orientation-aware ports
    
    [ Upstream commit de9df030ccb5d3e31ee0c715d74cd77c619748f8 ]
    
    Instead of checking if any of the USB-C ports have orientation GPIO and
    thus is orientation-aware, check for the GPIO for the port being
    registered. There are no boards that are affected by this change at this
    moment, so the patch is not marked as a fix, but it might affect other
    boards in future.
    
    Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241109-ucsi-glue-fixes-v2-2-8b21ff4f9fbe@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: glink: fix off-by-one in connector_status [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Sat Nov 9 02:04:14 2024 +0200

    usb: typec: ucsi: glink: fix off-by-one in connector_status
    
    [ Upstream commit 4a22918810980897393fa1776ea3877e4baf8cca ]
    
    UCSI connector's indices start from 1 up to 3, PMIC_GLINK_MAX_PORTS.
    Correct the condition in the pmic_glink_ucsi_connector_status()
    callback, fixing Type-C orientation reporting for the third USB-C
    connector.
    
    Fixes: 76716fd5bf09 ("usb: typec: ucsi: glink: move GPIO reading into connector_status callback")
    Cc: stable@vger.kernel.org
    Reported-by: Abel Vesa <abel.vesa@linaro.org>
    Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
    Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20241109-ucsi-glue-fixes-v2-1-8b21ff4f9fbe@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: glink: move GPIO reading into connector_status callback [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Apr 11 07:49:54 2024 +0300

    usb: typec: ucsi: glink: move GPIO reading into connector_status callback
    
    [ Upstream commit 76716fd5bf09725c2c6825264147f16c21e56853 ]
    
    To simplify the platform code move Type-C orientation handling into the
    connector_status callback. As it is called both during connector
    registration and on connector change events, duplicated code from
    pmic_glink_ucsi_register() can be dropped.
    
    Also this moves operations that can sleep into a worker thread,
    removing the only sleeping operation from pmic_glink_ucsi_notify().
    
    Tested-by: Krishna Kurapati <quic_kriskura@quicinc.com>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogeurs@linux.intel.com>
    Link: https://lore.kernel.org/r/20240411-ucsi-orient-aware-v2-2-d4b1cb22a33f@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: de9df030ccb5 ("usb: typec: ucsi: glink: be more precise on orientation-aware ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: typec: ucsi: glink: set orientation aware if supported [+ + +]
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Apr 11 07:49:57 2024 +0300

    usb: typec: ucsi: glink: set orientation aware if supported
    
    [ Upstream commit 3d1b6c9d47707d6a0f80bb5db6473b1f107b5baf ]
    
    If the PMIC-GLINK device has orientation GPIOs declared, then it will
    report connection orientation. In this case set the flag to mark
    registered ports as orientation-aware.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20240411-ucsi-orient-aware-v2-5-d4b1cb22a33f@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: de9df030ccb5 ("usb: typec: ucsi: glink: be more precise on orientation-aware ports")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: xhci: Avoid queuing redundant Stop Endpoint commands [+ + +]
Author: Michal Pecio <michal.pecio@gmail.com>
Date:   Wed Nov 6 12:14:59 2024 +0200

    usb: xhci: Avoid queuing redundant Stop Endpoint commands
    
    [ Upstream commit 474538b8dd1cd9c666e56cfe8ef60fbb0fb513f4 ]
    
    Stop Endpoint command on an already stopped endpoint fails and may be
    misinterpreted as a known hardware bug by the completion handler. This
    results in an unnecessary delay with repeated retries of the command.
    
    Avoid queuing this command when endpoint state flags indicate that it's
    stopped or halted and the command will fail. If commands are pending on
    the endpoint, their completion handlers will process cancelled TDs so
    it's done. In case of waiting for external operations like clearing TT
    buffer, the endpoint is stopped and cancelled TDs can be processed now.
    
    This eliminates practically all unnecessary retries because an endpoint
    with pending URBs is maintained in Running state by the driver, unless
    aforementioned commands or other operations are pending on it. This is
    guaranteed by xhci_ring_ep_doorbell() and by the fact that it is called
    every time any of those operations completes.
    
    The only known exceptions are hardware bugs (the endpoint never starts
    at all) and Stream Protocol errors not associated with any TRB, which
    cause an endpoint reset not followed by restart. Sounds like a bug.
    
    Generally, these retries are only expected to happen when the endpoint
    fails to start for unknown/no reason, which is a worse problem itself,
    and fixing the bug eliminates the retries too.
    
    All cases were tested and found to work as expected. SET_DEQ_PENDING
    was produced by patching uvcvideo to unlink URBs in 100us intervals,
    which then runs into this case very often. EP_HALTED was produced by
    restarting 'cat /dev/ttyUSB0' on a serial dongle with broken cable.
    EP_CLEARING_TT by the same, with the dongle on an external hub.
    
    Fixes: fd9d55d190c0 ("xhci: retry Stop Endpoint on buggy NEC controllers")
    CC: stable@vger.kernel.org
    Signed-off-by: Michal Pecio <michal.pecio@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20241106101459.775897-34-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

usb: xhci: Limit Stop Endpoint retries [+ + +]
Author: Michal Pecio <michal.pecio@gmail.com>
Date:   Wed Nov 6 12:14:57 2024 +0200

    usb: xhci: Limit Stop Endpoint retries
    
    [ Upstream commit 42b7581376015c1bbcbe5831f043cd0ac119d028 ]
    
    Some host controllers fail to atomically transition an endpoint to the
    Running state on a doorbell ring and enter a hidden "Restarting" state,
    which looks very much like Stopped, with the important difference that
    it will spontaneously transition to Running anytime soon.
    
    A Stop Endpoint command queued in the Restarting state typically fails
    with Context State Error and the completion handler sees the Endpoint
    Context State as either still Stopped or already Running. Even a case
    of Halted was observed, when an error occurred right after the restart.
    
    The Halted state is already recovered from by resetting the endpoint.
    The Running state is handled by retrying Stop Endpoint.
    
    The Stopped state was recognized as a problem on NEC controllers and
    worked around also by retrying, because the endpoint soon restarts and
    then stops for good. But there is a risk: the command may fail if the
    endpoint is "stopped for good" already, and retries will fail forever.
    
    The possibility of this was not realized at the time, but a number of
    cases were discovered later and reproduced. Some proved difficult to
    deal with, and it is outright impossible to predict if an endpoint may
    fail to ever start at all due to a hardware bug. One such bug (albeit
    on ASM3142, not on NEC) was found to be reliably triggered simply by
    toggling an AX88179 NIC up/down in a tight loop for a few seconds.
    
    An endless retries storm is quite nasty. Besides putting needless load
    on the xHC and CPU, it causes URBs never to be given back, paralyzing
    the device and connection/disconnection logic for the whole bus if the
    device is unplugged. User processes waiting for URBs become unkillable,
    drivers and kworker threads lock up and xhci_hcd cannot be reloaded.
    
    For peace of mind, impose a timeout on Stop Endpoint retries in this
    case. If they don't succeed in 100ms, consider the endpoint stopped
    permanently for some reason and just give back the unlinked URBs. This
    failure case is rare already and work is under way to make it rarer.
    
    Start this work today by also handling one simple case of race with
    Reset Endpoint, because it costs just two lines to implement.
    
    Fixes: fd9d55d190c0 ("xhci: retry Stop Endpoint on buggy NEC controllers")
    CC: stable@vger.kernel.org
    Signed-off-by: Michal Pecio <michal.pecio@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20241106101459.775897-32-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: e21ebe51af68 ("xhci: Turn NEC specific quirk for handling Stop Endpoint errors generic")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Tue Oct 15 19:47:32 2024 +0300

    watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler
    
    [ Upstream commit bad201b2ac4e238c6d4b6966a220240e3861640c ]
    
    On RZ/G3S the watchdog can be part of a software-controlled PM domain. In
    this case, the watchdog device need to be powered on in
    struct watchdog_ops::restart API. This can be done though
    pm_runtime_resume_and_get() API if the watchdog PM domain and watchdog
    device are marked as IRQ safe. We mark the watchdog PM domain as IRQ safe
    with GENPD_FLAG_IRQ_SAFE when the watchdog PM domain is registered and the
    watchdog device though pm_runtime_irq_safe().
    
    Before commit e4cf89596c1f ("watchdog: rzg2l_wdt: Fix 'BUG: Invalid wait
    context'") pm_runtime_get_sync() was used in watchdog restart handler
    (which is similar to pm_runtime_resume_and_get() except the later one
    handles the runtime resume errors).
    
    Commit e4cf89596c1f ("watchdog: rzg2l_wdt: Fix 'BUG: Invalid wait
    context'") dropped the pm_runtime_get_sync() and replaced it with
    clk_prepare_enable() to avoid invalid wait context due to genpd_lock()
    in genpd_runtime_resume() being called from atomic context. But
    clk_prepare_enable() doesn't fit for this either (as reported by
    Ulf Hansson) as clk_prepare() can also sleep (it just not throw invalid
    wait context warning as it is not written for this).
    
    Because the watchdog device is marked now as IRQ safe (though this patch)
    the irq_safe_dev_in_sleep_domain() call from genpd_runtime_resume() returns
    1 for devices not registering an IRQ safe PM domain for watchdog (as the
    watchdog device is IRQ safe, PM domain is not and watchdog PM domain is
    always-on), this being the case for RZ/G3S with old device trees and
    the rest of the SoCs that use this driver, we can now drop also the
    clk_prepare_enable() calls in restart handler and rely on
    pm_runtime_resume_and_get().
    
    Thus, drop clk_prepare_enable() and use pm_runtime_resume_and_get() in
    watchdog restart handler.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20241015164732.4085249-5-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

watchdog: rzg2l_wdt: Rely on the reset driver for doing proper reset [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Fri May 31 09:57:21 2024 +0300

    watchdog: rzg2l_wdt: Rely on the reset driver for doing proper reset
    
    [ Upstream commit d8997ed79ed7c7c32b2ae571e0d99a58bbfd01fe ]
    
    The reset driver has been adapted in commit da235d2fac21
    ("clk: renesas: rzg2l: Check reset monitor registers") to check the reset
    monitor bits before declaring reset asserts/de-asserts as
    successful/failure operations. With that, there is no need to keep the
    reset workaround for RZ/V2M in place in the watchdog driver.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20240531065723.1085423-8-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Stable-dep-of: bad201b2ac4e ("watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

watchdog: rzg2l_wdt: Remove reset de-assert from probe [+ + +]
Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Date:   Fri May 31 09:57:19 2024 +0300

    watchdog: rzg2l_wdt: Remove reset de-assert from probe
    
    [ Upstream commit 064319c3fac88e04f53f3460cd24ae90de2d9fb6 ]
    
    There is no need to de-assert the reset signal on probe as the watchdog
    is not used prior executing start. Also, the clocks are not enabled in
    probe (pm_runtime_enable() doesn't do that), thus this is another indicator
    that the watchdog wasn't used previously like this. Instead, keep the
    watchdog hardware in its previous state at probe (by default it is in
    reset state), enable it when it is started and move it to reset state
    when it is stopped. This saves some extra power when the watchdog is
    unused.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20240531065723.1085423-6-claudiu.beznea.uj@bp.renesas.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Stable-dep-of: bad201b2ac4e ("watchdog: rzg2l_wdt: Power on the watchdog domain in the restart handler")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: ath10k: avoid NULL pointer error during sdio remove [+ + +]
Author: Kang Yang <quic_kangyang@quicinc.com>
Date:   Tue Oct 8 10:22:46 2024 +0800

    wifi: ath10k: avoid NULL pointer error during sdio remove
    
    [ Upstream commit 95c38953cb1ecf40399a676a1f85dfe2b5780a9a ]
    
    When running 'rmmod ath10k', ath10k_sdio_remove() will free sdio
    workqueue by destroy_workqueue(). But if CONFIG_INIT_ON_FREE_DEFAULT_ON
    is set to yes, kernel panic will happen:
    Call trace:
     destroy_workqueue+0x1c/0x258
     ath10k_sdio_remove+0x84/0x94
     sdio_bus_remove+0x50/0x16c
     device_release_driver_internal+0x188/0x25c
     device_driver_detach+0x20/0x2c
    
    This is because during 'rmmod ath10k', ath10k_sdio_remove() will call
    ath10k_core_destroy() before destroy_workqueue(). wiphy_dev_release()
    will finally be called in ath10k_core_destroy(). This function will free
    struct cfg80211_registered_device *rdev and all its members, including
    wiphy, dev and the pointer of sdio workqueue. Then the pointer of sdio
    workqueue will be set to NULL due to CONFIG_INIT_ON_FREE_DEFAULT_ON.
    
    After device release, destroy_workqueue() will use NULL pointer then the
    kernel panic happen.
    
    Call trace:
    ath10k_sdio_remove
      ->ath10k_core_unregister
        ……
        ->ath10k_core_stop
          ->ath10k_hif_stop
            ->ath10k_sdio_irq_disable
        ->ath10k_hif_power_down
          ->del_timer_sync(&ar_sdio->sleep_timer)
      ->ath10k_core_destroy
        ->ath10k_mac_destroy
          ->ieee80211_free_hw
            ->wiphy_free
        ……
              ->wiphy_dev_release
      ->destroy_workqueue
    
    Need to call destroy_workqueue() before ath10k_core_destroy(), free
    the work queue buffer first and then free pointer of work queue by
    ath10k_core_destroy(). This order matches the error path order in
    ath10k_sdio_probe().
    
    No work will be queued on sdio workqueue between it is destroyed and
    ath10k_core_destroy() is called. Based on the call_stack above, the
    reason is:
    Only ath10k_sdio_sleep_timer_handler(), ath10k_sdio_hif_tx_sg() and
    ath10k_sdio_irq_disable() will queue work on sdio workqueue.
    Sleep timer will be deleted before ath10k_core_destroy() in
    ath10k_hif_power_down().
    ath10k_sdio_irq_disable() only be called in ath10k_hif_stop().
    ath10k_core_unregister() will call ath10k_hif_power_down() to stop hif
    bus, so ath10k_sdio_hif_tx_sg() won't be called anymore.
    
    Tested-on: QCA6174 hw3.2 SDIO WLAN.RMH.4.4.1-00189
    
    Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
    Tested-by: David Ruth <druth@chromium.org>
    Reviewed-by: David Ruth <druth@chromium.org>
    Link: https://patch.msgid.link/20241008022246.1010-1-quic_kangyang@quicinc.com
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath10k: Update Qualcomm Innovation Center, Inc. copyrights [+ + +]
Author: Jeff Johnson <quic_jjohnson@quicinc.com>
Date:   Wed Nov 29 13:39:28 2023 +0200

    wifi: ath10k: Update Qualcomm Innovation Center, Inc. copyrights
    
    [ Upstream commit b1dc0ba41431147e55407140962c76f3e7a06753 ]
    
    Update the copyright for all ath10k files modified on behalf of
    Qualcomm Innovation Center, Inc. in 2021 through 2023.
    
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20231128-ath12kcopyrights-v1-3-be0b7408cbac@quicinc.com
    Stable-dep-of: 95c38953cb1e ("wifi: ath10k: avoid NULL pointer error during sdio remove")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask() [+ + +]
Author: Kalle Valo <quic_kvalo@quicinc.com>
Date:   Mon Oct 7 19:59:27 2024 +0300

    wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()
    
    [ Upstream commit 8fac3266c68a8e647240b8ac8d0b82f1821edf85 ]
    
    When I try to manually set bitrates:
    
    iw wlan0 set bitrates legacy-2.4 1
    
    I get sleeping from invalid context error, see below. Fix that by switching to
    use recently introduced ieee80211_iterate_stations_mtx().
    
    Do note that WCN6855 firmware is still crashing, I'm not sure if that firmware
    even supports bitrate WMI commands and should we consider disabling
    ath12k_mac_op_set_bitrate_mask() for WCN6855? But that's for another patch.
    
    BUG: sleeping function called from invalid context at drivers/net/wireless/ath/ath12k/wmi.c:420
    in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 2236, name: iw
    preempt_count: 0, expected: 0
    RCU nest depth: 1, expected: 0
    3 locks held by iw/2236:
     #0: ffffffffabc6f1d8 (cb_lock){++++}-{3:3}, at: genl_rcv+0x14/0x40
     #1: ffff888138410810 (&rdev->wiphy.mtx){+.+.}-{3:3}, at: nl80211_pre_doit+0x54d/0x800 [cfg80211]
     #2: ffffffffab2cfaa0 (rcu_read_lock){....}-{1:2}, at: ieee80211_iterate_stations_atomic+0x2f/0x200 [mac80211]
    CPU: 3 UID: 0 PID: 2236 Comm: iw Not tainted 6.11.0-rc7-wt-ath+ #1772
    Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021
    Call Trace:
     <TASK>
     dump_stack_lvl+0xa4/0xe0
     dump_stack+0x10/0x20
     __might_resched+0x363/0x5a0
     ? __alloc_skb+0x165/0x340
     __might_sleep+0xad/0x160
     ath12k_wmi_cmd_send+0xb1/0x3d0 [ath12k]
     ? ath12k_wmi_init_wcn7850+0xa40/0xa40 [ath12k]
     ? __netdev_alloc_skb+0x45/0x7b0
     ? __asan_memset+0x39/0x40
     ? ath12k_wmi_alloc_skb+0xf0/0x150 [ath12k]
     ? reacquire_held_locks+0x4d0/0x4d0
     ath12k_wmi_set_peer_param+0x340/0x5b0 [ath12k]
     ath12k_mac_disable_peer_fixed_rate+0xa3/0x110 [ath12k]
     ? ath12k_mac_vdev_stop+0x4f0/0x4f0 [ath12k]
     ieee80211_iterate_stations_atomic+0xd4/0x200 [mac80211]
     ath12k_mac_op_set_bitrate_mask+0x5d2/0x1080 [ath12k]
     ? ath12k_mac_vif_chan+0x320/0x320 [ath12k]
     drv_set_bitrate_mask+0x267/0x470 [mac80211]
     ieee80211_set_bitrate_mask+0x4cc/0x8a0 [mac80211]
     ? __this_cpu_preempt_check+0x13/0x20
     nl80211_set_tx_bitrate_mask+0x2bc/0x530 [cfg80211]
     ? nl80211_parse_tx_bitrate_mask+0x2320/0x2320 [cfg80211]
     ? trace_contention_end+0xef/0x140
     ? rtnl_unlock+0x9/0x10
     ? nl80211_pre_doit+0x557/0x800 [cfg80211]
     genl_family_rcv_msg_doit+0x1f0/0x2e0
     ? genl_family_rcv_msg_attrs_parse.isra.0+0x250/0x250
     ? ns_capable+0x57/0xd0
     genl_family_rcv_msg+0x34c/0x600
     ? genl_family_rcv_msg_dumpit+0x310/0x310
     ? __lock_acquire+0xc62/0x1de0
     ? he_set_mcs_mask.isra.0+0x8d0/0x8d0 [cfg80211]
     ? nl80211_parse_tx_bitrate_mask+0x2320/0x2320 [cfg80211]
     ? cfg80211_external_auth_request+0x690/0x690 [cfg80211]
     genl_rcv_msg+0xa0/0x130
     netlink_rcv_skb+0x14c/0x400
     ? genl_family_rcv_msg+0x600/0x600
     ? netlink_ack+0xd70/0xd70
     ? rwsem_optimistic_spin+0x4f0/0x4f0
     ? genl_rcv+0x14/0x40
     ? down_read_killable+0x580/0x580
     ? netlink_deliver_tap+0x13e/0x350
     ? __this_cpu_preempt_check+0x13/0x20
     genl_rcv+0x23/0x40
     netlink_unicast+0x45e/0x790
     ? netlink_attachskb+0x7f0/0x7f0
     netlink_sendmsg+0x7eb/0xdb0
     ? netlink_unicast+0x790/0x790
     ? __this_cpu_preempt_check+0x13/0x20
     ? selinux_socket_sendmsg+0x31/0x40
     ? netlink_unicast+0x790/0x790
     __sock_sendmsg+0xc9/0x160
     ____sys_sendmsg+0x620/0x990
     ? kernel_sendmsg+0x30/0x30
     ? __copy_msghdr+0x410/0x410
     ? __kasan_check_read+0x11/0x20
     ? mark_lock+0xe6/0x1470
     ___sys_sendmsg+0xe9/0x170
     ? copy_msghdr_from_user+0x120/0x120
     ? __lock_acquire+0xc62/0x1de0
     ? do_fault_around+0x2c6/0x4e0
     ? do_user_addr_fault+0x8c1/0xde0
     ? reacquire_held_locks+0x220/0x4d0
     ? do_user_addr_fault+0x8c1/0xde0
     ? __kasan_check_read+0x11/0x20
     ? __fdget+0x4e/0x1d0
     ? sockfd_lookup_light+0x1a/0x170
     __sys_sendmsg+0xd2/0x180
     ? __sys_sendmsg_sock+0x20/0x20
     ? reacquire_held_locks+0x4d0/0x4d0
     ? debug_smp_processor_id+0x17/0x20
     __x64_sys_sendmsg+0x72/0xb0
     ? lockdep_hardirqs_on+0x7d/0x100
     x64_sys_call+0x894/0x9f0
     do_syscall_64+0x64/0x130
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    RIP: 0033:0x7f230fe04807
    Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
    RSP: 002b:00007ffe996a7ea8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 0000556f9f9c3390 RCX: 00007f230fe04807
    RDX: 0000000000000000 RSI: 00007ffe996a7ee0 RDI: 0000000000000003
    RBP: 0000556f9f9c88c0 R08: 0000000000000002 R09: 0000000000000000
    R10: 0000556f965ca190 R11: 0000000000000246 R12: 0000556f9f9c8780
    R13: 00007ffe996a7ee0 R14: 0000556f9f9c87d0 R15: 0000556f9f9c88c0
     </TASK>
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://patch.msgid.link/20241007165932.78081-2-kvalo@kernel.org
    Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: ath12k: Optimize the mac80211 hw data access [+ + +]
Author: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Date:   Tue Nov 21 05:28:11 2023 +0530

    wifi: ath12k: Optimize the mac80211 hw data access
    
    [ Upstream commit 842addae02089fce4731be1c8d7d539449d4d009 ]
    
    Currently mac80211 hw data is accessed by convert the hw to radio (ar)
    structure and then radio to hw structure which is not necessary in some
    places where mac80211 hw data is already present. So in that kind of
    places avoid the conversion and directly access the mac80211 hw data.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
    Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
    Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20231120235812.2602198-2-quic_periyasa@quicinc.com
    Stable-dep-of: 8fac3266c68a ("wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: Add non-atomic station iterator [+ + +]
Author: Rory Little <rory@candelatech.com>
Date:   Mon Aug 5 17:40:23 2024 -0700

    wifi: mac80211: Add non-atomic station iterator
    
    [ Upstream commit 7c3b69eadea9e57c28bf914b0fd70f268f3682e1 ]
    
    Drivers may at times want to iterate their stations with a function
    which requires some non-atomic operations.
    
    ieee80211_iterate_stations_mtx() introduces an API to iterate stations
    while holding that wiphy's mutex. This allows the iterating function to
    do non-atomic operations safely.
    
    Signed-off-by: Rory Little <rory@candelatech.com>
    Link: https://patch.msgid.link/20240806004024.2014080-2-rory@candelatech.com
    [unify internal list iteration functions]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Stable-dep-of: 8fac3266c68a ("wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: export ieee80211_purge_tx_queue() for drivers [+ + +]
Author: Ping-Ke Shih <pkshih@realtek.com>
Date:   Thu Aug 22 09:42:54 2024 +0800

    wifi: mac80211: export ieee80211_purge_tx_queue() for drivers
    
    [ Upstream commit 53bc1b73b67836ac9867f93dee7a443986b4a94f ]
    
    Drivers need to purge TX SKB when stopping. Using skb_queue_purge() can't
    report TX status to mac80211, causing ieee80211_free_ack_frame() warns
    "Have pending ack frames!". Export ieee80211_purge_tx_queue() for drivers
    to not have to reimplement it.
    
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20240822014255.10211-1-pkshih@realtek.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Stable-dep-of: 3e5e4a801aaf ("wifi: rtw88: use ieee80211_purge_tx_queue() to purge TX skb")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: fix mbss changed flags corruption on 32 bit systems [+ + +]
Author: Issam Hamdi <ih@simonwunderlich.de>
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 <ih@simonwunderlich.de>
    Link: https://patch.msgid.link/20241125162920.2711462-1-ih@simonwunderlich.de
    [restore no-op path for no changes]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mac80211: wake the queues in case of failure in resume [+ + +]
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
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 <emmanuel.grumbach@intel.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219447
    Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
    Link: https://patch.msgid.link/20241119173108.cd628f560f97.I76a15fdb92de450e5329940125f3c58916be3942@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: rtw88: use ieee80211_purge_tx_queue() to purge TX skb [+ + +]
Author: Ping-Ke Shih <pkshih@realtek.com>
Date:   Thu Aug 22 09:42:55 2024 +0800

    wifi: rtw88: use ieee80211_purge_tx_queue() to purge TX skb
    
    [ Upstream commit 3e5e4a801aaf4283390cc34959c6c48f910ca5ea ]
    
    When removing kernel modules by:
       rmmod rtw88_8723cs rtw88_8703b rtw88_8723x rtw88_sdio rtw88_core
    
    Driver uses skb_queue_purge() to purge TX skb, but not report tx status
    causing "Have pending ack frames!" warning. Use ieee80211_purge_tx_queue()
    to correct this.
    
    Since ieee80211_purge_tx_queue() doesn't take locks, to prevent racing
    between TX work and purge TX queue, flush and destroy TX work in advance.
    
       wlan0: deauthenticating from aa:f5:fd:60:4c:a8 by local
         choice (Reason: 3=DEAUTH_LEAVING)
       ------------[ cut here ]------------
       Have pending ack frames!
       WARNING: CPU: 3 PID: 9232 at net/mac80211/main.c:1691
           ieee80211_free_ack_frame+0x5c/0x90 [mac80211]
       CPU: 3 PID: 9232 Comm: rmmod Tainted: G         C
           6.10.1-200.fc40.aarch64 #1
       Hardware name: pine64 Pine64 PinePhone Braveheart
          (1.1)/Pine64 PinePhone Braveheart (1.1), BIOS 2024.01 01/01/2024
       pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : ieee80211_free_ack_frame+0x5c/0x90 [mac80211]
       lr : ieee80211_free_ack_frame+0x5c/0x90 [mac80211]
       sp : ffff80008c1b37b0
       x29: ffff80008c1b37b0 x28: ffff000003be8000 x27: 0000000000000000
       x26: 0000000000000000 x25: ffff000003dc14b8 x24: ffff80008c1b37d0
       x23: ffff000000ff9f80 x22: 0000000000000000 x21: 000000007fffffff
       x20: ffff80007c7e93d8 x19: ffff00006e66f400 x18: 0000000000000000
       x17: ffff7ffffd2b3000 x16: ffff800083fc0000 x15: 0000000000000000
       x14: 0000000000000000 x13: 2173656d61726620 x12: 6b636120676e6964
       x11: 0000000000000000 x10: 000000000000005d x9 : ffff8000802af2b0
       x8 : ffff80008c1b3430 x7 : 0000000000000001 x6 : 0000000000000001
       x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
       x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000003be8000
       Call trace:
        ieee80211_free_ack_frame+0x5c/0x90 [mac80211]
        idr_for_each+0x74/0x110
        ieee80211_free_hw+0x44/0xe8 [mac80211]
        rtw_sdio_remove+0x9c/0xc0 [rtw88_sdio]
        sdio_bus_remove+0x44/0x180
        device_remove+0x54/0x90
        device_release_driver_internal+0x1d4/0x238
        driver_detach+0x54/0xc0
        bus_remove_driver+0x78/0x108
        driver_unregister+0x38/0x78
        sdio_unregister_driver+0x2c/0x40
        rtw_8723cs_driver_exit+0x18/0x1000 [rtw88_8723cs]
        __do_sys_delete_module.isra.0+0x190/0x338
        __arm64_sys_delete_module+0x1c/0x30
        invoke_syscall+0x74/0x100
        el0_svc_common.constprop.0+0x48/0xf0
        do_el0_svc+0x24/0x38
        el0_svc+0x3c/0x158
        el0t_64_sync_handler+0x120/0x138
        el0t_64_sync+0x194/0x198
       ---[ end trace 0000000000000000 ]---
    
    Reported-by: Peter Robinson <pbrobinson@gmail.com>
    Closes: https://lore.kernel.org/linux-wireless/CALeDE9OAa56KMzgknaCD3quOgYuEHFx9_hcT=OFgmMAb+8MPyA@mail.gmail.com/
    Tested-by: Ping-Ke Shih <pkshih@realtek.com> # 8723DU
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20240822014255.10211-2-pkshih@realtek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86, crash: wrap crash dumping code into crash related ifdefs [+ + +]
Author: Baoquan He <bhe@redhat.com>
Date:   Wed Jan 24 13:12:46 2024 +0800

    x86, crash: wrap crash dumping code into crash related ifdefs
    
    [ Upstream commit a4eeb2176d89fdf2785851521577b94b31690a60 ]
    
    Now crash codes under kernel/ folder has been split out from kexec
    code, crash dumping can be separated from kexec reboot in config
    items on x86 with some adjustments.
    
    Here, also change some ifdefs or IS_ENABLED() check to more appropriate
    ones, e,g
     - #ifdef CONFIG_KEXEC_CORE -> #ifdef CONFIG_CRASH_DUMP
     - (!IS_ENABLED(CONFIG_KEXEC_CORE)) - > (!IS_ENABLED(CONFIG_CRASH_RESERVE))
    
    [bhe@redhat.com: don't nest CONFIG_CRASH_DUMP ifdef inside CONFIG_KEXEC_CODE ifdef scope]
      Link: https://lore.kernel.org/all/SN6PR02MB4157931105FA68D72E3D3DB8D47B2@SN6PR02MB4157.namprd02.prod.outlook.com/T/#u
    Link: https://lkml.kernel.org/r/20240124051254.67105-7-bhe@redhat.com
    Signed-off-by: Baoquan He <bhe@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Hari Bathini <hbathini@linux.ibm.com>
    Cc: Pingfan Liu <piliu@redhat.com>
    Cc: Klara Modin <klarasmodin@gmail.com>
    Cc: Michael Kelley <mhklinux@outlook.com>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Yang Li <yang.lee@linux.alibaba.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: bcc80dec91ee ("x86/hyperv: Fix hv tsc page based sched_clock for hibernation")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/fred: Clear WFE in missing-ENDBRANCH #CPs [+ + +]
Author: Xin Li (Intel) <xin@zytor.com>
Date:   Wed Nov 13 09:59:34 2024 -0800

    x86/fred: Clear WFE in missing-ENDBRANCH #CPs
    
    [ Upstream commit dc81e556f2a017d681251ace21bf06c126d5a192 ]
    
    An indirect branch instruction sets the CPU indirect branch tracker
    (IBT) into WAIT_FOR_ENDBRANCH (WFE) state and WFE stays asserted
    across the instruction boundary.  When the decoder finds an
    inappropriate instruction while WFE is set ENDBR, the CPU raises a #CP
    fault.
    
    For the "kernel IBT no ENDBR" selftest where #CPs are deliberately
    triggered, the WFE state of the interrupted context needs to be
    cleared to let execution continue.  Otherwise when the CPU resumes
    from the instruction that just caused the previous #CP, another
    missing-ENDBRANCH #CP is raised and the CPU enters a dead loop.
    
    This is not a problem with IDT because it doesn't preserve WFE and
    IRET doesn't set WFE.  But FRED provides space on the entry stack
    (in an expanded CS area) to save and restore the WFE state, thus the
    WFE state is no longer clobbered, so software must clear it.
    
    Clear WFE to avoid dead looping in ibt_clear_fred_wfe() and the
    !ibt_fatal code path when execution is allowed to continue.
    
    Clobbering WFE in any other circumstance is a security-relevant bug.
    
    [ dhansen: changelog rewording ]
    
    Fixes: a5f6c2ace997 ("x86/shstk: Add user control-protection fault handler")
    Signed-off-by: Xin Li (Intel) <xin@zytor.com>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20241113175934.3897541-1-xin%40zytor.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/hyperv: Fix hv tsc page based sched_clock for hibernation [+ + +]
Author: Naman Jain <namjain@linux.microsoft.com>
Date:   Tue Sep 17 11:09:17 2024 +0530

    x86/hyperv: Fix hv tsc page based sched_clock for hibernation
    
    [ Upstream commit bcc80dec91ee745b3d66f3e48f0ec2efdea97149 ]
    
    read_hv_sched_clock_tsc() assumes that the Hyper-V clock counter is
    bigger than the variable hv_sched_clock_offset, which is cached during
    early boot, but depending on the timing this assumption may be false
    when a hibernated VM starts again (the clock counter starts from 0
    again) and is resuming back (Note: hv_init_tsc_clocksource() is not
    called during hibernation/resume); consequently,
    read_hv_sched_clock_tsc() may return a negative integer (which is
    interpreted as a huge positive integer since the return type is u64)
    and new kernel messages are prefixed with huge timestamps before
    read_hv_sched_clock_tsc() grows big enough (which typically takes
    several seconds).
    
    Fix the issue by saving the Hyper-V clock counter just before the
    suspend, and using it to correct the hv_sched_clock_offset in
    resume. This makes hv tsc page based sched_clock continuous and ensures
    that post resume, it starts from where it left off during suspend.
    Override x86_platform.save_sched_clock_state and
    x86_platform.restore_sched_clock_state routines to correct this as soon
    as possible.
    
    Note: if Invariant TSC is available, the issue doesn't happen because
    1) we don't register read_hv_sched_clock_tsc() for sched clock:
    See commit e5313f1c5404 ("clocksource/drivers/hyper-v: Rework
    clocksource and sched clock setup");
    2) the common x86 code adjusts TSC similarly: see
    __restore_processor_state() ->  tsc_verify_tsc_adjust(true) and
    x86_platform.restore_sched_clock_state().
    
    Cc: stable@vger.kernel.org
    Fixes: 1349401ff1aa ("clocksource/drivers/hyper-v: Suspend/resume Hyper-V clocksource for hibernation")
    Co-developed-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Link: https://lore.kernel.org/r/20240917053917.76787-1-namjain@linux.microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Message-ID: <20240917053917.76787-1-namjain@linux.microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/mm: Carve out INVLPG inline asm for use by others [+ + +]
Author: Borislav Petkov (AMD) <bp@alien8.de>
Date:   Tue Nov 19 12:21:32 2024 +0100

    x86/mm: Carve out INVLPG inline asm for use by others
    
    [ Upstream commit f1d84b59cbb9547c243d93991acf187fdbe9fbe9 ]
    
    No functional changes.
    
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/ZyulbYuvrkshfsd2@antipodes
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
x86/ptrace: Add FRED additional information to the pt_regs structure [+ + +]
Author: Xin Li <xin3.li@intel.com>
Date:   Tue Dec 5 02:50:03 2023 -0800

    x86/ptrace: Add FRED additional information to the pt_regs structure
    
    [ Upstream commit 3c77bf02d0c03beb3efdf7a5b427fb2e1a76c265 ]
    
    FRED defines additional information in the upper 48 bits of cs/ss
    fields. Therefore add the information definitions into the pt_regs
    structure.
    
    Specifically introduce a new structure fred_ss to denote the FRED flags
    above SS selector, which avoids FRED_SSX_ macros and makes the code
    simpler and easier to read.
    
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Originally-by: H. Peter Anvin (Intel) <hpa@zytor.com>
    Signed-off-by: Xin Li <xin3.li@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Tested-by: Shan Kang <shan.kang@intel.com>
    Link: https://lore.kernel.org/r/20231205105030.8698-15-xin3.li@intel.com
    Stable-dep-of: dc81e556f2a0 ("x86/fred: Clear WFE in missing-ENDBRANCH #CPs")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

x86/ptrace: Cleanup the definition of the pt_regs structure [+ + +]
Author: Xin Li <xin3.li@intel.com>
Date:   Tue Dec 5 02:50:02 2023 -0800

    x86/ptrace: Cleanup the definition of the pt_regs structure
    
    [ Upstream commit ee63291aa8287cb7ded767d340155fe8681fc075 ]
    
    struct pt_regs is hard to read because the member or section related
    comments are not aligned with the members.
    
    The 'cs' and 'ss' members of pt_regs are type of 'unsigned long' while
    in reality they are only 16-bit wide. This works so far as the
    remaining space is unused, but FRED will use the remaining bits for
    other purposes.
    
    To prepare for FRED:
    
      - Cleanup the formatting
      - Convert 'cs' and 'ss' to u16 and embed them into an union
        with a u64
      - Fixup the related printk() format strings
    
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Originally-by: H. Peter Anvin (Intel) <hpa@zytor.com>
    Signed-off-by: Xin Li <xin3.li@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Tested-by: Shan Kang <shan.kang@intel.com>
    Link: https://lore.kernel.org/r/20231205105030.8698-14-xin3.li@intel.com
    Stable-dep-of: dc81e556f2a0 ("x86/fred: Clear WFE in missing-ENDBRANCH #CPs")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xhci: retry Stop Endpoint on buggy NEC controllers [+ + +]
Author: Michal Pecio <michal.pecio@gmail.com>
Date:   Thu Feb 29 16:14:36 2024 +0200

    xhci: retry Stop Endpoint on buggy NEC controllers
    
    [ Upstream commit fd9d55d190c0e5fefd3a9165ea361809427885a1 ]
    
    Two NEC uPD720200 adapters have been observed to randomly misbehave:
    a Stop Endpoint command fails with Context Error, the Output Context
    indicates Stopped state, and the endpoint keeps running. Very often,
    Set TR Dequeue Pointer is seen to fail next with Context Error too,
    in addition to problems from unexpectedly completed cancelled work.
    
    The pathology is common on fast running isoc endpoints like uvcvideo,
    but has also been reproduced on a full-speed bulk endpoint of pl2303.
    It seems all EPs are affected, with risk proportional to their load.
    
    Reproduction involves receiving any kind of stream and closing it to
    make the device driver cancel URBs already queued in advance.
    
    Deal with it by retrying the command like in the Running state.
    
    Signed-off-by: Michal Pecio <michal.pecio@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20240229141438.619372-8-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: e21ebe51af68 ("xhci: Turn NEC specific quirk for handling Stop Endpoint errors generic")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xhci: Turn NEC specific quirk for handling Stop Endpoint errors generic [+ + +]
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Dec 17 12:21:21 2024 +0200

    xhci: Turn NEC specific quirk for handling Stop Endpoint errors generic
    
    [ Upstream commit e21ebe51af688eb98fd6269240212a3c7300deea ]
    
    xHC hosts from several vendors have the same issue where endpoints start
    so slowly that a later queued 'Stop Endpoint' command may complete before
    endpoint is up and running.
    
    The 'Stop Endpoint' command fails with context state error as the endpoint
    still appears as  stopped.
    
    See commit 42b758137601 ("usb: xhci: Limit Stop Endpoint retries") for
    details
    
    CC: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20241217102122.2316814-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>