Changelog in Linux kernel 5.4.296

 
ACPI: PAD: fix crash in exit_round_robin() [+ + +]
Author: Seiji Nishikawa <[email protected]>
Date:   Sun Aug 25 23:13:52 2024 +0900

    ACPI: PAD: fix crash in exit_round_robin()
    
    commit 0a2ed70a549e61c5181bad5db418d223b68ae932 upstream.
    
    The kernel occasionally crashes in cpumask_clear_cpu(), which is called
    within exit_round_robin(), because when executing clear_bit(nr, addr) with
    nr set to 0xffffffff, the address calculation may cause misalignment within
    the memory, leading to access to an invalid memory address.
    
    ----------
    BUG: unable to handle kernel paging request at ffffffffe0740618
            ...
    CPU: 3 PID: 2919323 Comm: acpi_pad/14 Kdump: loaded Tainted: G           OE  X --------- -  - 4.18.0-425.19.2.el8_7.x86_64 #1
            ...
    RIP: 0010:power_saving_thread+0x313/0x411 [acpi_pad]
    Code: 89 cd 48 89 d3 eb d1 48 c7 c7 55 70 72 c0 e8 64 86 b0 e4 c6 05 0d a1 02 00 01 e9 bc fd ff ff 45 89 e4 42 8b 04 a5 20 82 72 c0 <f0> 48 0f b3 05 f4 9c 01 00 42 c7 04 a5 20 82 72 c0 ff ff ff ff 31
    RSP: 0018:ff72a5d51fa77ec8 EFLAGS: 00010202
    RAX: 00000000ffffffff RBX: ff462981e5d8cb80 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000246 RDI: 0000000000000246
    RBP: ff46297556959d80 R08: 0000000000000382 R09: ff46297c8d0f38d8
    R10: 0000000000000000 R11: 0000000000000001 R12: 000000000000000e
    R13: 0000000000000000 R14: ffffffffffffffff R15: 000000000000000e
    FS:  0000000000000000(0000) GS:ff46297a800c0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffe0740618 CR3: 0000007e20410004 CR4: 0000000000771ee0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     ? acpi_pad_add+0x120/0x120 [acpi_pad]
     kthread+0x10b/0x130
     ? set_kthread_struct+0x50/0x50
     ret_from_fork+0x1f/0x40
            ...
    CR2: ffffffffe0740618
    
    crash> dis -lr ffffffffc0726923
            ...
    /usr/src/debug/kernel-4.18.0-425.19.2.el8_7/linux-4.18.0-425.19.2.el8_7.x86_64/./include/linux/cpumask.h: 114
    0xffffffffc0726918 <power_saving_thread+776>:   mov    %r12d,%r12d
    /usr/src/debug/kernel-4.18.0-425.19.2.el8_7/linux-4.18.0-425.19.2.el8_7.x86_64/./include/linux/cpumask.h: 325
    0xffffffffc072691b <power_saving_thread+779>:   mov    -0x3f8d7de0(,%r12,4),%eax
    /usr/src/debug/kernel-4.18.0-425.19.2.el8_7/linux-4.18.0-425.19.2.el8_7.x86_64/./arch/x86/include/asm/bitops.h: 80
    0xffffffffc0726923 <power_saving_thread+787>:   lock btr %rax,0x19cf4(%rip)        # 0xffffffffc0740620 <pad_busy_cpus_bits>
    
    crash> px tsk_in_cpu[14]
    $66 = 0xffffffff
    
    crash> px 0xffffffffc072692c+0x19cf4
    $99 = 0xffffffffc0740620
    
    crash> sym 0xffffffffc0740620
    ffffffffc0740620 (b) pad_busy_cpus_bits [acpi_pad]
    
    crash> px pad_busy_cpus_bits[0]
    $42 = 0xfffc0
    ----------
    
    To fix this, ensure that tsk_in_cpu[tsk_index] != -1 before calling
    cpumask_clear_cpu() in exit_round_robin(), just as it is done in
    round_robin_cpu().
    
    Signed-off-by: Seiji Nishikawa <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Subject edit, avoid updates to the same value ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ACPICA: Refuse to evaluate a method if arguments are missing [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Wed Jun 18 14:17:45 2025 +0200

    ACPICA: Refuse to evaluate a method if arguments are missing
    
    [ Upstream commit 6fcab2791543924d438e7fa49276d0998b0a069f ]
    
    As reported in [1], a platform firmware update that increased the number
    of method parameters and forgot to update a least one of its callers,
    caused ACPICA to crash due to use-after-free.
    
    Since this a result of a clear AML issue that arguably cannot be fixed
    up by the interpreter (it cannot produce missing data out of thin air),
    address it by making ACPICA refuse to evaluate a method if the caller
    attempts to pass fewer arguments than expected to it.
    
    Closes: https://github.com/acpica/acpica/issues/1027 [1]
    Reported-by: Peter Williams <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Tested-by: Hans de Goede <[email protected]> # Dell XPS 9640 with BIOS 1.12.0
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

    ALSA: hda: Ignore unsol events for cards being shut down
    
    [ Upstream commit 3f100f524e75586537e337b34d18c8d604b398e7 ]
    
    For the classic snd_hda_intel driver, codec->card and bus->card point to
    the exact same thing. When snd_card_diconnect() fires, bus->shutdown is
    set thanks to azx_dev_disconnect(). card->shutdown is already set when
    that happens but both provide basically the same functionality.
    
    For the DSP snd_soc_avs driver where multiple codecs are located on
    multiple cards, bus->shutdown 'shortcut' is not sufficient. One codec
    card may be unregistered while other codecs are still operational.
    Proper check in form of card->shutdown must be used to verify whether
    the codec's card is being shut down.
    
    Reviewed-by: Amadeusz Sławiński <[email protected]>
    Signed-off-by: Cezary Rojewski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: sb: Force to disable DMAs once when DMA mode is changed [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Jun 10 08:43:20 2025 +0200

    ALSA: sb: Force to disable DMAs once when DMA mode is changed
    
    [ Upstream commit 4c267ae2ef349639b4d9ebf00dd28586a82fdbe6 ]
    
    When the DMA mode is changed on the (still real!) SB AWE32 after
    playing a stream and closing, the previous DMA setup was still
    silently kept, and it can confuse the hardware, resulting in the
    unexpected noises.  As a workaround, enforce the disablement of DMA
    setups when the DMA setup is changed by the kcontrol.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=218185
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Fix out-of-bounds read in snd_usb_get_audioformat_uac3() [+ + +]
Author: Youngjun Lee <[email protected]>
Date:   Mon Jun 23 20:05:25 2025 +0900

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

 
amd-xgbe: align CL37 AN sequence as per databook [+ + +]
Author: Raju Rangoju <[email protected]>
Date:   Tue Jul 1 00:56:36 2025 +0530

    amd-xgbe: align CL37 AN sequence as per databook
    
    [ Upstream commit 42fd432fe6d320323215ebdf4de4d0d7e56e6792 ]
    
    Update the Clause 37 Auto-Negotiation implementation to properly align
    with the PCS hardware specifications:
    - Fix incorrect bit settings in Link Status and Link Duplex fields
    - Implement missing sequence steps 2 and 7
    
    These changes ensure CL37 auto-negotiation protocol follows the exact
    sequence patterns as specified in the hardware databook.
    
    Fixes: 1bf40ada6290 ("amd-xgbe: Add support for clause 37 auto-negotiation")
    Signed-off-by: Raju Rangoju <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: Restrict pagetable teardown to avoid false warning [+ + +]
Author: Dev Jain <[email protected]>
Date:   Tue May 27 13:56:33 2025 +0530

    arm64: Restrict pagetable teardown to avoid false warning
    
    commit 650768c512faba8070bf4cfbb28c95eb5cd203f3 upstream.
    
    Commit 9c006972c3fe ("arm64: mmu: drop pXd_present() checks from
    pXd_free_pYd_table()") removes the pxd_present() checks because the
    caller checks pxd_present(). But, in case of vmap_try_huge_pud(), the
    caller only checks pud_present(); pud_free_pmd_page() recurses on each
    pmd through pmd_free_pte_page(), wherein the pmd may be none. Thus it is
    possible to hit a warning in the latter, since pmd_none => !pmd_table().
    Thus, add a pmd_present() check in pud_free_pmd_page().
    
    This problem was found by code inspection.
    
    Fixes: 9c006972c3fe ("arm64: mmu: drop pXd_present() checks from pXd_free_pYd_table()")
    Cc: [email protected]
    Reported-by: Ryan Roberts <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Signed-off-by: Dev Jain <[email protected]>
    Reviewed-by: Catalin Marinas <[email protected]>
    Reviewed-by: Anshuman Khandual <[email protected]>
    Reviewed-by: Ryan Roberts <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: meson: meson-card-utils: use of_property_present() for DT parsing [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Sat Apr 19 23:34:48 2025 +0200

    ASoC: meson: meson-card-utils: use of_property_present() for DT parsing
    
    [ Upstream commit 171eb6f71e9e3ba6a7410a1d93f3ac213f39dae2 ]
    
    Commit c141ecc3cecd ("of: Warn when of_property_read_bool() is used on
    non-boolean properties") added a warning when trying to parse a property
    with a value (boolean properties are defined as: absent = false, present
    without any value = true). This causes a warning from meson-card-utils.
    
    meson-card-utils needs to know about the existence of the
    "audio-routing" and/or "audio-widgets" properties in order to properly
    parse them. Switch to of_property_present() in order to silence the
    following warning messages during boot:
      OF: /sound: Read of boolean property 'audio-routing' with a value.
      OF: /sound: Read of boolean property 'audio-widgets' with a value.
    
    Fixes: 7864a79f37b5 ("ASoC: meson: add axg sound card support")
    Tested-by: Christian Hewitt <[email protected]>
    Cc: [email protected]
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ata: pata_cs5536: fix build on 32-bit UML [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Fri Jun 6 11:01:11 2025 +0200

    ata: pata_cs5536: fix build on 32-bit UML
    
    [ Upstream commit fe5b391fc56f77cf3c22a9dd4f0ce20db0e3533f ]
    
    On 32-bit ARCH=um, CONFIG_X86_32 is still defined, so it
    doesn't indicate building on real X86 machines. There's
    no MSR on UML though, so add a check for CONFIG_X86.
    
    Reported-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Niklas Cassel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
atm: clip: Fix infinite recursive call of clip_push(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 06:23:53 2025 +0000

    atm: clip: Fix infinite recursive call of clip_push().
    
    [ Upstream commit c489f3283dbfc0f3c00c312149cae90d27552c45 ]
    
    syzbot reported the splat below. [0]
    
    This happens if we call ioctl(ATMARP_MKIP) more than once.
    
    During the first call, clip_mkip() sets clip_push() to vcc->push(),
    and the second call copies it to clip_vcc->old_push().
    
    Later, when the socket is close()d, vcc_destroy_socket() passes
    NULL skb to clip_push(), which calls clip_vcc->old_push(),
    triggering the infinite recursion.
    
    Let's prevent the second ioctl(ATMARP_MKIP) by checking
    vcc->user_back, which is allocated by the first call as clip_vcc.
    
    Note also that we use lock_sock() to prevent racy calls.
    
    [0]:
    BUG: TASK stack guard page was hit at ffffc9000d66fff8 (stack is ffffc9000d670000..ffffc9000d678000)
    Oops: stack guard page: 0000 [#1] SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 5322 Comm: syz.0.0 Not tainted 6.16.0-rc4-syzkaller #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:clip_push+0x5/0x720 net/atm/clip.c:191
    Code: e0 8f aa 8c e8 1c ad 5b fa eb ae 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 55 <41> 57 41 56 41 55 41 54 53 48 83 ec 20 48 89 f3 49 89 fd 48 bd 00
    RSP: 0018:ffffc9000d670000 EFLAGS: 00010246
    RAX: 1ffff1100235a4a5 RBX: ffff888011ad2508 RCX: ffff8880003c0000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff888037f01000
    RBP: dffffc0000000000 R08: ffffffff8fa104f7 R09: 1ffffffff1f4209e
    R10: dffffc0000000000 R11: ffffffff8a99b300 R12: ffffffff8a99b300
    R13: ffff888037f01000 R14: ffff888011ad2500 R15: ffff888037f01578
    FS:  000055557ab6d500(0000) GS:ffff88808d250000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffc9000d66fff8 CR3: 0000000043172000 CR4: 0000000000352ef0
    Call Trace:
     <TASK>
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
    ...
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     clip_push+0x6dc/0x720 net/atm/clip.c:200
     vcc_destroy_socket net/atm/common.c:183 [inline]
     vcc_release+0x157/0x460 net/atm/common.c:205
     __sock_release net/socket.c:647 [inline]
     sock_close+0xc0/0x240 net/socket.c:1391
     __fput+0x449/0xa70 fs/file_table.c:465
     task_work_run+0x1d1/0x260 kernel/task_work.c:227
     resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
     exit_to_user_mode_loop+0xec/0x110 kernel/entry/common.c:114
     exit_to_user_mode_prepare include/linux/entry-common.h:330 [inline]
     syscall_exit_to_user_mode_work include/linux/entry-common.h:414 [inline]
     syscall_exit_to_user_mode include/linux/entry-common.h:449 [inline]
     do_syscall_64+0x2bd/0x3b0 arch/x86/entry/syscall_64.c:100
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7ff31c98e929
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007fffb5aa1f78 EFLAGS: 00000246 ORIG_RAX: 00000000000001b4
    RAX: 0000000000000000 RBX: 0000000000012747 RCX: 00007ff31c98e929
    RDX: 0000000000000000 RSI: 000000000000001e RDI: 0000000000000003
    RBP: 00007ff31cbb7ba0 R08: 0000000000000001 R09: 0000000db5aa226f
    R10: 00007ff31c7ff030 R11: 0000000000000246 R12: 00007ff31cbb608c
    R13: 00007ff31cbb6080 R14: ffffffffffffffff R15: 00007fffb5aa2090
     </TASK>
    Modules linked in:
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=2371d94d248d126c1eb1
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: clip: Fix memory leak of struct clip_vcc. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 06:23:52 2025 +0000

    atm: clip: Fix memory leak of struct clip_vcc.
    
    [ Upstream commit 62dba28275a9a3104d4e33595c7b3328d4032d8d ]
    
    ioctl(ATMARP_MKIP) allocates struct clip_vcc and set it to
    vcc->user_back.
    
    The code assumes that vcc_destroy_socket() passes NULL skb
    to vcc->push() when the socket is close()d, and then clip_push()
    frees clip_vcc.
    
    However, ioctl(ATMARPD_CTRL) sets NULL to vcc->push() in
    atm_init_atmarp(), resulting in memory leak.
    
    Let's serialise two ioctl() by lock_sock() and check vcc->push()
    in atm_init_atmarp() to prevent memleak.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: clip: Fix NULL pointer dereference in vcc_sendmsg() [+ + +]
Author: Yue Haibing <[email protected]>
Date:   Sat Jul 5 16:52:28 2025 +0800

    atm: clip: Fix NULL pointer dereference in vcc_sendmsg()
    
    [ Upstream commit 22fc46cea91df3dce140a7dc6847c6fcf0354505 ]
    
    atmarpd_dev_ops does not implement the send method, which may cause crash
    as bellow.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    PGD 0 P4D 0
    Oops: Oops: 0010 [#1] SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 5324 Comm: syz.0.0 Not tainted 6.15.0-rc6-syzkaller-00346-g5723cc3450bc #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:0x0
    Code: Unable to access opcode bytes at 0xffffffffffffffd6.
    RSP: 0018:ffffc9000d3cf778 EFLAGS: 00010246
    RAX: 1ffffffff1910dd1 RBX: 00000000000000c0 RCX: dffffc0000000000
    RDX: ffffc9000dc82000 RSI: ffff88803e4c4640 RDI: ffff888052cd0000
    RBP: ffffc9000d3cf8d0 R08: ffff888052c9143f R09: 1ffff1100a592287
    R10: dffffc0000000000 R11: 0000000000000000 R12: 1ffff92001a79f00
    R13: ffff888052cd0000 R14: ffff88803e4c4640 R15: ffffffff8c886e88
    FS:  00007fbc762566c0(0000) GS:ffff88808d6c2000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffffffffd6 CR3: 0000000041f1b000 CR4: 0000000000352ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     vcc_sendmsg+0xa10/0xc50 net/atm/common.c:644
     sock_sendmsg_nosec net/socket.c:712 [inline]
     __sock_sendmsg+0x219/0x270 net/socket.c:727
     ____sys_sendmsg+0x52d/0x830 net/socket.c:2566
     ___sys_sendmsg+0x21f/0x2a0 net/socket.c:2620
     __sys_sendmmsg+0x227/0x430 net/socket.c:2709
     __do_sys_sendmmsg net/socket.c:2736 [inline]
     __se_sys_sendmmsg net/socket.c:2733 [inline]
     __x64_sys_sendmmsg+0xa0/0xc0 net/socket.c:2733
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xf6/0x210 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T
    Signed-off-by: Yue Haibing <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: clip: Fix potential null-ptr-deref in to_atmarpd(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 06:23:51 2025 +0000

    atm: clip: Fix potential null-ptr-deref in to_atmarpd().
    
    [ Upstream commit 706cc36477139c1616a9b2b96610a8bb520b7119 ]
    
    atmarpd is protected by RTNL since commit f3a0592b37b8 ("[ATM]: clip
    causes unregister hang").
    
    However, it is not enough because to_atmarpd() is called without RTNL,
    especially clip_neigh_solicit() / neigh_ops->solicit() is unsleepable.
    
    Also, there is no RTNL dependency around atmarpd.
    
    Let's use a private mutex and RCU to protect access to atmarpd in
    to_atmarpd().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

atm: idt77252: Add missing `dma_map_error()` [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Tue Jun 24 08:41:47 2025 +0200

    atm: idt77252: Add missing `dma_map_error()`
    
    [ Upstream commit c4890963350dcf4e9a909bae23665921fba4ad27 ]
    
    The DMA map functions can fail and should be tested for errors.
    
    Signed-off-by: Thomas Fourier <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

 
bnxt_en: Fix DCB ETS validation [+ + +]
Author: Shravya KN <[email protected]>
Date:   Thu Jul 10 14:39:36 2025 -0700

    bnxt_en: Fix DCB ETS validation
    
    [ Upstream commit b74c2a2e9cc471e847abd87e50a2354c07e02040 ]
    
    In bnxt_ets_validate(), the code incorrectly loops over all possible
    traffic classes to check and add the ETS settings.  Fix it to loop
    over the configured traffic classes only.
    
    The unconfigured traffic classes will default to TSA_ETS with 0
    bandwidth.  Looping over these unconfigured traffic classes may
    cause the validation to fail and trigger this error message:
    
    "rejecting ETS config starving a TC\n"
    
    The .ieee_setets() will then fail.
    
    Fixes: 7df4ae9fe855 ("bnxt_en: Implement DCBNL to support host-based DCBX.")
    Reviewed-by: Sreekanth Reddy <[email protected]>
    Signed-off-by: Shravya KN <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT [+ + +]
Author: Somnath Kotur <[email protected]>
Date:   Thu Jul 10 14:39:38 2025 -0700

    bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT
    
    [ Upstream commit 3cdf199d4755d477972ee87110b2aebc88b3cfad ]
    
    When transmitting an XDP_REDIRECT packet, call dma_unmap_len_set()
    with the proper length instead of 0.  This bug triggers this warning
    on a system with IOMMU enabled:
    
    WARNING: CPU: 36 PID: 0 at drivers/iommu/dma-iommu.c:842 __iommu_dma_unmap+0x159/0x170
    RIP: 0010:__iommu_dma_unmap+0x159/0x170
    Code: a8 00 00 00 00 48 c7 45 b0 00 00 00 00 48 c7 45 c8 00 00 00 00 48 c7 45 a0 ff ff ff ff 4c 89 45
    b8 4c 89 45 c0 e9 77 ff ff ff <0f> 0b e9 60 ff ff ff e8 8b bf 6a 00 66 66 2e 0f 1f 84 00 00 00 00
    RSP: 0018:ff22d31181150c88 EFLAGS: 00010206
    RAX: 0000000000002000 RBX: 00000000e13a0000 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ff22d31181150cf0 R08: ff22d31181150ca8 R09: 0000000000000000
    R10: 0000000000000000 R11: ff22d311d36c9d80 R12: 0000000000001000
    R13: ff13544d10645010 R14: ff22d31181150c90 R15: ff13544d0b2bac00
    FS: 0000000000000000(0000) GS:ff13550908a00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00005be909dacff8 CR3: 0008000173408003 CR4: 0000000000f71ef0
    PKRU: 55555554
    Call Trace:
    <IRQ>
    ? show_regs+0x6d/0x80
    ? __warn+0x89/0x160
    ? __iommu_dma_unmap+0x159/0x170
    ? report_bug+0x17e/0x1b0
    ? handle_bug+0x46/0x90
    ? exc_invalid_op+0x18/0x80
    ? asm_exc_invalid_op+0x1b/0x20
    ? __iommu_dma_unmap+0x159/0x170
    ? __iommu_dma_unmap+0xb3/0x170
    iommu_dma_unmap_page+0x4f/0x100
    dma_unmap_page_attrs+0x52/0x220
    ? srso_alias_return_thunk+0x5/0xfbef5
    ? xdp_return_frame+0x2e/0xd0
    bnxt_tx_int_xdp+0xdf/0x440 [bnxt_en]
    __bnxt_poll_work_done+0x81/0x1e0 [bnxt_en]
    bnxt_poll+0xd3/0x1e0 [bnxt_en]
    
    Fixes: f18c2b77b2e4 ("bnxt_en: optimized XDP_REDIRECT support")
    Signed-off-by: Somnath Kotur <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpfilter: match bit size of bpfilter_umh to that of the kernel [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Wed Apr 29 12:45:13 2020 +0900

    bpfilter: match bit size of bpfilter_umh to that of the kernel
    
    [ Upstream commit 9371f86ecb60f6f1f120e3d93fe892bbb70d04c0 ]
    
    bpfilter_umh is built for the default machine bit of the compiler,
    which may not match to the bit size of the kernel.
    
    This happens in the scenario below:
    
    You can use biarch GCC that defaults to 64-bit for building the 32-bit
    kernel. In this case, Kbuild passes -m32 to teach the compiler to
    produce 32-bit kernel space objects. However, it is missing when
    building bpfilter_umh. It is built as a 64-bit ELF, and then embedded
    into the 32-bit kernel.
    
    The 32-bit kernel and 64-bit umh is a bad combination.
    
    In theory, we can have 32-bit umh running on 64-bit kernel, but we do
    not have a good reason to support such a usecase.
    
    The best is to match the bit size between them.
    
    Pass -m32 or -m64 to the umh build command if it is found in
    $(KBUILD_CFLAGS). Evaluate CC_CAN_LINK against the kernel bit-size.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Stable-dep-of: 02e9a22ceef0 ("kbuild: hdrcheck: fix cross build with clang")
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: don't abort filesystem when attempting to snapshot deleted subvolume [+ + +]
Author: Omar Sandoval <[email protected]>
Date:   Thu Jan 4 11:48:46 2024 -0800

    btrfs: don't abort filesystem when attempting to snapshot deleted subvolume
    
    commit 7081929ab2572920e94d70be3d332e5c9f97095a upstream.
    
    If the source file descriptor to the snapshot ioctl refers to a deleted
    subvolume, we get the following abort:
    
      BTRFS: Transaction aborted (error -2)
      WARNING: CPU: 0 PID: 833 at fs/btrfs/transaction.c:1875 create_pending_snapshot+0x1040/0x1190 [btrfs]
      Modules linked in: pata_acpi btrfs ata_piix libata scsi_mod virtio_net blake2b_generic xor net_failover virtio_rng failover scsi_common rng_core raid6_pq libcrc32c
      CPU: 0 PID: 833 Comm: t_snapshot_dele Not tainted 6.7.0-rc6 #2
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014
      RIP: 0010:create_pending_snapshot+0x1040/0x1190 [btrfs]
      RSP: 0018:ffffa09c01337af8 EFLAGS: 00010282
      RAX: 0000000000000000 RBX: ffff9982053e7c78 RCX: 0000000000000027
      RDX: ffff99827dc20848 RSI: 0000000000000001 RDI: ffff99827dc20840
      RBP: ffffa09c01337c00 R08: 0000000000000000 R09: ffffa09c01337998
      R10: 0000000000000003 R11: ffffffffb96da248 R12: fffffffffffffffe
      R13: ffff99820535bb28 R14: ffff99820b7bd000 R15: ffff99820381ea80
      FS:  00007fe20aadabc0(0000) GS:ffff99827dc00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000559a120b502f CR3: 00000000055b6000 CR4: 00000000000006f0
      Call Trace:
       <TASK>
       ? create_pending_snapshot+0x1040/0x1190 [btrfs]
       ? __warn+0x81/0x130
       ? create_pending_snapshot+0x1040/0x1190 [btrfs]
       ? report_bug+0x171/0x1a0
       ? handle_bug+0x3a/0x70
       ? exc_invalid_op+0x17/0x70
       ? asm_exc_invalid_op+0x1a/0x20
       ? create_pending_snapshot+0x1040/0x1190 [btrfs]
       ? create_pending_snapshot+0x1040/0x1190 [btrfs]
       create_pending_snapshots+0x92/0xc0 [btrfs]
       btrfs_commit_transaction+0x66b/0xf40 [btrfs]
       btrfs_mksubvol+0x301/0x4d0 [btrfs]
       btrfs_mksnapshot+0x80/0xb0 [btrfs]
       __btrfs_ioctl_snap_create+0x1c2/0x1d0 [btrfs]
       btrfs_ioctl_snap_create_v2+0xc4/0x150 [btrfs]
       btrfs_ioctl+0x8a6/0x2650 [btrfs]
       ? kmem_cache_free+0x22/0x340
       ? do_sys_openat2+0x97/0xe0
       __x64_sys_ioctl+0x97/0xd0
       do_syscall_64+0x46/0xf0
       entry_SYSCALL_64_after_hwframe+0x6e/0x76
      RIP: 0033:0x7fe20abe83af
      RSP: 002b:00007ffe6eff1360 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00007fe20abe83af
      RDX: 00007ffe6eff23c0 RSI: 0000000050009417 RDI: 0000000000000003
      RBP: 0000000000000003 R08: 0000000000000000 R09: 00007fe20ad16cd0
      R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      R13: 00007ffe6eff13c0 R14: 00007fe20ad45000 R15: 0000559a120b6d58
       </TASK>
      ---[ end trace 0000000000000000 ]---
      BTRFS: error (device vdc: state A) in create_pending_snapshot:1875: errno=-2 No such entry
      BTRFS info (device vdc: state EA): forced readonly
      BTRFS warning (device vdc: state EA): Skipping commit of aborted transaction.
      BTRFS: error (device vdc: state EA) in cleanup_transaction:2055: errno=-2 No such entry
    
    This happens because create_pending_snapshot() initializes the new root
    item as a copy of the source root item. This includes the refs field,
    which is 0 for a deleted subvolume. The call to btrfs_insert_root()
    therefore inserts a root with refs == 0. btrfs_get_new_fs_root() then
    finds the root and returns -ENOENT if refs == 0, which causes
    create_pending_snapshot() to abort.
    
    Fix it by checking the source root's refs before attempting the
    snapshot, but after locking subvol_sem to avoid racing with deletion.
    
    CC: [email protected] # 4.14+
    Reviewed-by: Sweet Tea Dorminy <[email protected]>
    Reviewed-by: Anand Jain <[email protected]>
    Signed-off-by: Omar Sandoval <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    [ Larry: backport to 5.4.y. Minor conflict resolved due to missing commit 92a7cc425223
      btrfs: rename BTRFS_ROOT_REF_COWS to BTRFS_ROOT_SHAREABLE ]
    Signed-off-by: Larry Bassel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: fix missing error handling when searching for inode refs during log replay [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Jun 18 16:57:07 2025 +0100

    btrfs: fix missing error handling when searching for inode refs during log replay
    
    [ Upstream commit 6561a40ceced9082f50c374a22d5966cf9fc5f5c ]
    
    During log replay, at __add_inode_ref(), when we are searching for inode
    ref keys we totally ignore if btrfs_search_slot() returns an error. This
    may make a log replay succeed when there was an actual error and leave
    some metadata inconsistency in a subvolume tree. Fix this by checking if
    an error was returned from btrfs_search_slot() and if so, return it to
    the caller.
    
    Fixes: e02119d5a7b4 ("Btrfs: Add a write ahead tree log to optimize synchronous operations")
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: propagate last_unlink_trans earlier when doing a rmdir [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Fri Jun 20 15:54:05 2025 +0100

    btrfs: propagate last_unlink_trans earlier when doing a rmdir
    
    [ Upstream commit c466e33e729a0ee017d10d919cba18f503853c60 ]
    
    In case the removed directory had a snapshot that was deleted, we are
    propagating its inode's last_unlink_trans to the parent directory after
    we removed the entry from the parent directory. This leaves a small race
    window where someone can log the parent directory after we removed the
    entry and before we updated last_unlink_trans, and as a result if we ever
    try to replay such a log tree, we will fail since we will attempt to
    remove a snapshot during log replay, which is currently not possible and
    results in the log replay (and mount) to fail. This is the type of failure
    described in commit 1ec9a1ae1e30 ("Btrfs: fix unreplayable log after
    snapshot delete + parent dir fsync").
    
    So fix this by propagating the last_unlink_trans to the parent directory
    before we remove the entry from it.
    
    Fixes: 44f714dae50a ("Btrfs: improve performance on fsync against new inode after rename/unlink")
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: use btrfs_record_snapshot_destroy() during rmdir [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Fri Jun 20 16:37:01 2025 +0100

    btrfs: use btrfs_record_snapshot_destroy() during rmdir
    
    [ Upstream commit 157501b0469969fc1ba53add5049575aadd79d80 ]
    
    We are setting the parent directory's last_unlink_trans directly which
    may result in a concurrent task starting to log the directory not see the
    update and therefore can log the directory after we removed a child
    directory which had a snapshot within instead of falling back to a
    transaction commit. Replaying such a log tree would result in a mount
    failure since we can't currently delete snapshots (and subvolumes) during
    log replay. This is the type of failure described in commit 1ec9a1ae1e30
    ("Btrfs: fix unreplayable log after snapshot delete + parent dir fsync").
    
    Fix this by using btrfs_record_snapshot_destroy() which updates the
    last_unlink_trans field while holding the inode's log_mutex lock.
    
    Fixes: 44f714dae50a ("Btrfs: improve performance on fsync against new inode after rename/unlink")
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level [+ + +]
Author: Sean Nyekjaer <[email protected]>
Date:   Fri Jul 11 12:12:02 2025 +0200

    can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level
    
    [ Upstream commit 58805e9cbc6f6a28f35d90e740956e983a0e036e ]
    
    Downgrade the "msg lost in rx" message to debug level, to prevent
    flooding the kernel log with error messages.
    
    Fixes: e0d1f4816f2a ("can: m_can: add Bosch M_CAN controller support")
    Reviewed-by: Vincent Mailhol <[email protected]>
    Signed-off-by: Sean Nyekjaer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [mkl: enhance commit message]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
cifs: Fix cifs_query_path_info() for Windows NT servers [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Tue Dec 31 16:06:22 2024 +0100

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

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

 
dma-buf: fix timeout handling in dma_resv_wait_timeout v2 [+ + +]
Author: Christian König <[email protected]>
Date:   Tue Jan 28 10:47:48 2025 +0100

    dma-buf: fix timeout handling in dma_resv_wait_timeout v2
    
    [ Upstream commit 2b95a7db6e0f75587bffddbb490399cbb87e4985 ]
    
    Even the kerneldoc says that with a zero timeout the function should not
    wait for anything, but still return 1 to indicate that the fences are
    signaled now.
    
    Unfortunately that isn't what was implemented, instead of only returning
    1 we also waited for at least one jiffies.
    
    Fix that by adjusting the handling to what the function is actually
    documented to do.
    
    v2: improve code readability
    
    Reported-by: Marek Olšák <[email protected]>
    Reported-by: Lucas Stach <[email protected]>
    Signed-off-by: Christian König <[email protected]>
    Reviewed-by: Lucas Stach <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
dpaa2-eth: fix xdp_rxq_info leak [+ + +]
Author: Fushuai Wang <[email protected]>
Date:   Thu Jun 26 21:30:03 2025 +0800

    dpaa2-eth: fix xdp_rxq_info leak
    
    [ Upstream commit 2def09ead4ad5907988b655d1e1454003aaf8297 ]
    
    The driver registered xdp_rxq_info structures via xdp_rxq_info_reg()
    but failed to properly unregister them in error paths and during
    removal.
    
    Fixes: d678be1dc1ec ("dpaa2-eth: add XDP_REDIRECT support")
    Signed-off-by: Fushuai Wang <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Ioana Ciornei <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

 
drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling [+ + +]
Author: Kaustabh Chakraborty <[email protected]>
Date:   Fri Jun 27 00:50:30 2025 +0530

    drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling
    
    commit b846350aa272de99bf6fecfa6b08e64ebfb13173 upstream.
    
    If there's support for another console device (such as a TTY serial),
    the kernel occasionally panics during boot. The panic message and a
    relevant snippet of the call stack is as follows:
    
      Unable to handle kernel NULL pointer dereference at virtual address 000000000000000
      Call trace:
        drm_crtc_handle_vblank+0x10/0x30 (P)
        decon_irq_handler+0x88/0xb4
        [...]
    
    Otherwise, the panics don't happen. This indicates that it's some sort
    of race condition.
    
    Add a check to validate if the drm device can handle vblanks before
    calling drm_crtc_handle_vblank() to avoid this.
    
    Cc: [email protected]
    Fixes: 96976c3d9aff ("drm/exynos: Add DECON driver")
    Signed-off-by: Kaustabh Chakraborty <[email protected]>
    Signed-off-by: Inki Dae <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/exynos: fimd: Guard display clock control with runtime PM calls [+ + +]
Author: Marek Szyprowski <[email protected]>
Date:   Wed Jun 18 14:06:26 2025 +0200

    drm/exynos: fimd: Guard display clock control with runtime PM calls
    
    [ Upstream commit 5d91394f236167ac624b823820faf4aa928b889e ]
    
    Commit c9b1150a68d9 ("drm/atomic-helper: Re-order bridge chain pre-enable
    and post-disable") changed the call sequence to the CRTC enable/disable
    and bridge pre_enable/post_disable methods, so those bridge methods are
    now called when CRTC is not yet enabled.
    
    This causes a lockup observed on Samsung Peach-Pit/Pi Chromebooks. The
    source of this lockup is a call to fimd_dp_clock_enable() function, when
    FIMD device is not yet runtime resumed. It worked before the mentioned
    commit only because the CRTC implemented by the FIMD driver was always
    enabled what guaranteed the FIMD device to be runtime resumed.
    
    This patch adds runtime PM guards to the fimd_dp_clock_enable() function
    to enable its proper operation also when the CRTC implemented by FIMD is
    not yet enabled.
    
    Fixes: 196e059a8a6a ("drm/exynos: convert clock_enable crtc callback to pipeline clock")
    Signed-off-by: Marek Szyprowski <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Inki Dae <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/gt: Fix timeline left held on VMA alloc error [+ + +]
Author: Janusz Krzysztofik <[email protected]>
Date:   Mon Jul 7 16:34:40 2025 -0400

    drm/i915/gt: Fix timeline left held on VMA alloc error
    
    [ Upstream commit a5aa7bc1fca78c7fa127d9e33aa94a0c9066c1d6 ]
    
    The following error has been reported sporadically by CI when a test
    unbinds the i915 driver on a ring submission platform:
    
    <4> [239.330153] ------------[ cut here ]------------
    <4> [239.330166] i915 0000:00:02.0: [drm] drm_WARN_ON(dev_priv->mm.shrink_count)
    <4> [239.330196] WARNING: CPU: 1 PID: 18570 at drivers/gpu/drm/i915/i915_gem.c:1309 i915_gem_cleanup_early+0x13e/0x150 [i915]
    ...
    <4> [239.330640] RIP: 0010:i915_gem_cleanup_early+0x13e/0x150 [i915]
    ...
    <4> [239.330942] Call Trace:
    <4> [239.330944]  <TASK>
    <4> [239.330949]  i915_driver_late_release+0x2b/0xa0 [i915]
    <4> [239.331202]  i915_driver_release+0x86/0xa0 [i915]
    <4> [239.331482]  devm_drm_dev_init_release+0x61/0x90
    <4> [239.331494]  devm_action_release+0x15/0x30
    <4> [239.331504]  release_nodes+0x3d/0x120
    <4> [239.331517]  devres_release_all+0x96/0xd0
    <4> [239.331533]  device_unbind_cleanup+0x12/0x80
    <4> [239.331543]  device_release_driver_internal+0x23a/0x280
    <4> [239.331550]  ? bus_find_device+0xa5/0xe0
    <4> [239.331563]  device_driver_detach+0x14/0x20
    ...
    <4> [357.719679] ---[ end trace 0000000000000000 ]---
    
    If the test also unloads the i915 module then that's followed with:
    
    <3> [357.787478] =============================================================================
    <3> [357.788006] BUG i915_vma (Tainted: G     U  W        N ): Objects remaining on __kmem_cache_shutdown()
    <3> [357.788031] -----------------------------------------------------------------------------
    <3> [357.788204] Object 0xffff888109e7f480 @offset=29824
    <3> [357.788670] Allocated in i915_vma_instance+0xee/0xc10 [i915] age=292729 cpu=4 pid=2244
    <4> [357.788994]  i915_vma_instance+0xee/0xc10 [i915]
    <4> [357.789290]  init_status_page+0x7b/0x420 [i915]
    <4> [357.789532]  intel_engines_init+0x1d8/0x980 [i915]
    <4> [357.789772]  intel_gt_init+0x175/0x450 [i915]
    <4> [357.790014]  i915_gem_init+0x113/0x340 [i915]
    <4> [357.790281]  i915_driver_probe+0x847/0xed0 [i915]
    <4> [357.790504]  i915_pci_probe+0xe6/0x220 [i915]
    ...
    
    Closer analysis of CI results history has revealed a dependency of the
    error on a few IGT tests, namely:
    - igt@api_intel_allocator@fork-simple-stress-signal,
    - igt@api_intel_allocator@two-level-inception-interruptible,
    - igt@gem_linear_blits@interruptible,
    - igt@prime_mmap_coherency@ioctl-errors,
    which invisibly trigger the issue, then exhibited with first driver unbind
    attempt.
    
    All of the above tests perform actions which are actively interrupted with
    signals.  Further debugging has allowed to narrow that scope down to
    DRM_IOCTL_I915_GEM_EXECBUFFER2, and ring_context_alloc(), specific to ring
    submission, in particular.
    
    If successful then that function, or its execlists or GuC submission
    equivalent, is supposed to be called only once per GEM context engine,
    followed by raise of a flag that prevents the function from being called
    again.  The function is expected to unwind its internal errors itself, so
    it may be safely called once more after it returns an error.
    
    In case of ring submission, the function first gets a reference to the
    engine's legacy timeline and then allocates a VMA.  If the VMA allocation
    fails, e.g. when i915_vma_instance() called from inside is interrupted
    with a signal, then ring_context_alloc() fails, leaving the timeline held
    referenced.  On next I915_GEM_EXECBUFFER2 IOCTL, another reference to the
    timeline is got, and only that last one is put on successful completion.
    As a consequence, the legacy timeline, with its underlying engine status
    page's VMA object, is still held and not released on driver unbind.
    
    Get the legacy timeline only after successful allocation of the context
    engine's VMA.
    
    v2: Add a note on other submission methods (Krzysztof Karas):
        Both execlists and GuC submission use lrc_alloc() which seems free
        from a similar issue.
    
    Fixes: 75d0a7f31eec ("drm/i915: Lift timeline into intel_context")
    Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
    Cc: Chris Wilson <[email protected]>
    Cc: Matthew Auld <[email protected]>
    Cc: Krzysztof Karas <[email protected]>
    Reviewed-by: Sebastian Brzezinka <[email protected]>
    Reviewed-by: Krzysztof Niemiec <[email protected]>
    Signed-off-by: Janusz Krzysztofik <[email protected]>
    Reviewed-by: Nitin Gote <[email protected]>
    Reviewed-by: Andi Shyti <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit cc43422b3cc79eacff4c5a8ba0d224688ca9dd4f)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/selftests: Change mock_request() to return error pointers [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Jun 25 10:21:58 2025 -0500

    drm/i915/selftests: Change mock_request() to return error pointers
    
    [ Upstream commit caa7c7a76b78ce41d347003f84975125383e6b59 ]
    
    There was an error pointer vs NULL bug in __igt_breadcrumbs_smoketest().
    The __mock_request_alloc() function implements the
    smoketest->request_alloc() function pointer.  It was supposed to return
    error pointers, but it propogates the NULL return from mock_request()
    so in the event of a failure, it would lead to a NULL pointer
    dereference.
    
    To fix this, change the mock_request() function to return error pointers
    and update all the callers to expect that.
    
    Fixes: 52c0fdb25c7c ("drm/i915: Replace global breadcrumbs with per-context interrupt tracking")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    (cherry picked from commit 778fa8ad5f0f23397d045c7ebca048ce8def1c43)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/sched: Increment job count before swapping tail spsc queue [+ + +]
Author: Matthew Brost <[email protected]>
Date:   Fri Jun 13 14:20:13 2025 -0700

    drm/sched: Increment job count before swapping tail spsc queue
    
    commit 8af39ec5cf2be522c8eb43a3d8005ed59e4daaee upstream.
    
    A small race exists between spsc_queue_push and the run-job worker, in
    which spsc_queue_push may return not-first while the run-job worker has
    already idled due to the job count being zero. If this race occurs, job
    scheduling stops, leading to hangs while waiting on the job’s DMA
    fences.
    
    Seal this race by incrementing the job count before appending to the
    SPSC queue.
    
    This race was observed on a drm-tip 6.16-rc1 build with the Xe driver in
    an SVM test case.
    
    Fixes: 1b1f42d8fde4 ("drm: move amd_gpu_scheduler into common location")
    Fixes: 27105db6c63a ("drm/amdgpu: Add SPSC queue to scheduler.")
    Cc: [email protected]
    Signed-off-by: Matthew Brost <[email protected]>
    Reviewed-by: Jonathan Cavitt <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
drm/v3d: Disable interrupts before resetting the GPU [+ + +]
Author: Maíra Canal <[email protected]>
Date:   Sat Jun 28 19:42:42 2025 -0300

    drm/v3d: Disable interrupts before resetting the GPU
    
    [ Upstream commit 226862f50a7a88e4e4de9abbf36c64d19acd6fd0 ]
    
    Currently, an interrupt can be triggered during a GPU reset, which can
    lead to GPU hangs and NULL pointer dereference in an interrupt context
    as shown in the following trace:
    
     [  314.035040] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000c0
     [  314.043822] Mem abort info:
     [  314.046606]   ESR = 0x0000000096000005
     [  314.050347]   EC = 0x25: DABT (current EL), IL = 32 bits
     [  314.055651]   SET = 0, FnV = 0
     [  314.058695]   EA = 0, S1PTW = 0
     [  314.061826]   FSC = 0x05: level 1 translation fault
     [  314.066694] Data abort info:
     [  314.069564]   ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
     [  314.075039]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
     [  314.080080]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
     [  314.085382] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000102728000
     [  314.091814] [00000000000000c0] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
     [  314.100511] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
     [  314.106770] Modules linked in: v3d i2c_brcmstb vc4 snd_soc_hdmi_codec gpu_sched drm_shmem_helper drm_display_helper cec drm_dma_helper drm_kms_helper drm drm_panel_orientation_quirks snd_soc_core snd_compress snd_pcm_dmaengine snd_pcm snd_timer snd backlight
     [  314.129654] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.12.25+rpt-rpi-v8 #1  Debian 1:6.12.25-1+rpt1
     [  314.139388] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT)
     [  314.145211] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     [  314.152165] pc : v3d_irq+0xec/0x2e0 [v3d]
     [  314.156187] lr : v3d_irq+0xe0/0x2e0 [v3d]
     [  314.160198] sp : ffffffc080003ea0
     [  314.163502] x29: ffffffc080003ea0 x28: ffffffec1f184980 x27: 021202b000000000
     [  314.170633] x26: ffffffec1f17f630 x25: ffffff8101372000 x24: ffffffec1f17d9f0
     [  314.177764] x23: 000000000000002a x22: 000000000000002a x21: ffffff8103252000
     [  314.184895] x20: 0000000000000001 x19: 00000000deadbeef x18: 0000000000000000
     [  314.192026] x17: ffffff94e51d2000 x16: ffffffec1dac3cb0 x15: c306000000000000
     [  314.199156] x14: 0000000000000000 x13: b2fc982e03cc5168 x12: 0000000000000001
     [  314.206286] x11: ffffff8103f8bcc0 x10: ffffffec1f196868 x9 : ffffffec1dac3874
     [  314.213416] x8 : 0000000000000000 x7 : 0000000000042a3a x6 : ffffff810017a180
     [  314.220547] x5 : ffffffec1ebad400 x4 : ffffffec1ebad320 x3 : 00000000000bebeb
     [  314.227677] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
     [  314.234807] Call trace:
     [  314.237243]  v3d_irq+0xec/0x2e0 [v3d]
     [  314.240906]  __handle_irq_event_percpu+0x58/0x218
     [  314.245609]  handle_irq_event+0x54/0xb8
     [  314.249439]  handle_fasteoi_irq+0xac/0x240
     [  314.253527]  handle_irq_desc+0x48/0x68
     [  314.257269]  generic_handle_domain_irq+0x24/0x38
     [  314.261879]  gic_handle_irq+0x48/0xd8
     [  314.265533]  call_on_irq_stack+0x24/0x58
     [  314.269448]  do_interrupt_handler+0x88/0x98
     [  314.273624]  el1_interrupt+0x34/0x68
     [  314.277193]  el1h_64_irq_handler+0x18/0x28
     [  314.281281]  el1h_64_irq+0x64/0x68
     [  314.284673]  default_idle_call+0x3c/0x168
     [  314.288675]  do_idle+0x1fc/0x230
     [  314.291895]  cpu_startup_entry+0x3c/0x50
     [  314.295810]  rest_init+0xe4/0xf0
     [  314.299030]  start_kernel+0x5e8/0x790
     [  314.302684]  __primary_switched+0x80/0x90
     [  314.306691] Code: 940029eb 360ffc13 f9442ea0 52800001 (f9406017)
     [  314.312775] ---[ end trace 0000000000000000 ]---
     [  314.317384] Kernel panic - not syncing: Oops: Fatal exception in interrupt
     [  314.324249] SMP: stopping secondary CPUs
     [  314.328167] Kernel Offset: 0x2b9da00000 from 0xffffffc080000000
     [  314.334076] PHYS_OFFSET: 0x0
     [  314.336946] CPU features: 0x08,00002013,c0200000,0200421b
     [  314.342337] Memory Limit: none
     [  314.345382] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---
    
    Before resetting the GPU, it's necessary to disable all interrupts and
    deal with any interrupt handler still in-flight. Otherwise, the GPU might
    reset with jobs still running, or yet, an interrupt could be handled
    during the reset.
    
    Cc: [email protected]
    Fixes: 57692c94dcbe ("drm/v3d: Introduce a new DRM driver for Broadcom V3D V3.x+")
    Reviewed-by: Juan A. Suarez <[email protected]>
    Reviewed-by: Iago Toral Quiroga <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Maíra Canal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
enic: fix incorrect MTU comparison in enic_change_mtu() [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Sat Jun 28 07:56:05 2025 -0700

    enic: fix incorrect MTU comparison in enic_change_mtu()
    
    [ Upstream commit aaf2b2480375099c022a82023e1cd772bf1c6a5d ]
    
    The comparison in enic_change_mtu() incorrectly used the current
    netdev->mtu instead of the new new_mtu value when warning about
    an MTU exceeding the port MTU. This could suppress valid warnings
    or issue incorrect ones.
    
    Fix the condition and log to properly reflect the new_mtu.
    
    Fixes: ab123fe071c9 ("enic: handle mtu change for vf properly")
    Signed-off-by: Alok Tiwari <[email protected]>
    Acked-by: John Daley <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ethernet: atl1: Add missing DMA mapping error checks and count errors [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Mon Jul 7 15:36:37 2025 -0400

    ethernet: atl1: Add missing DMA mapping error checks and count errors
    
    [ Upstream commit d72411d20905180cdc452c553be17481b24463d2 ]
    
    The `dma_map_XXX()` functions can fail and must be checked using
    `dma_mapping_error()`.  This patch adds proper error handling for all
    DMA mapping calls.
    
    In `atl1_alloc_rx_buffers()`, if DMA mapping fails, the buffer is
    deallocated and marked accordingly.
    
    In `atl1_tx_map()`, previously mapped buffers are unmapped and the
    packet is dropped on failure.
    
    If `atl1_xmit_frame()` drops the packet, increment the tx_error counter.
    
    Fixes: f3cc28c79760 ("Add Attansic L1 ethernet driver.")
    Signed-off-by: Thomas Fourier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: fix proc_sys_compare() handling of in-lookup dentries [+ + +]
Author: Al Viro <[email protected]>
Date:   Mon Jun 30 02:52:13 2025 -0400

    fix proc_sys_compare() handling of in-lookup dentries
    
    [ Upstream commit b969f9614885c20f903e1d1f9445611daf161d6d ]
    
    There's one case where ->d_compare() can be called for an in-lookup
    dentry; usually that's nothing special from ->d_compare() point of
    view, but... proc_sys_compare() is weird.
    
    The thing is, /proc/sys subdirectories can look differently for
    different processes.  Up to and including having the same name
    resolve to different dentries - all of them hashed.
    
    The way it's done is ->d_compare() refusing to admit a match unless
    this dentry is supposed to be visible to this caller.  The information
    needed to discriminate between them is stored in inode; it is set
    during proc_sys_lookup() and until it's done d_splice_alias() we really
    can't tell who should that dentry be visible for.
    
    Normally there's no negative dentries in /proc/sys; we can run into
    a dying dentry in RCU dcache lookup, but those can be safely rejected.
    
    However, ->d_compare() is also called for in-lookup dentries, before
    they get positive - or hashed, for that matter.  In case of match
    we will wait until dentry leaves in-lookup state and repeat ->d_compare()
    afterwards.  In other words, the right behaviour is to treat the
    name match as sufficient for in-lookup dentries; if dentry is not
    for us, we'll see that when we recheck once proc_sys_lookup() is
    done with it.
    
    While we are at it, fix the misspelled READ_ONCE and WRITE_ONCE there.
    
    Fixes: d9171b934526 ("parallel lookups machinery, part 4 (and last)")
    Reported-by: NeilBrown <[email protected]>
    Reviewed-by: Christian Brauner <[email protected]>
    Reviewed-by: NeilBrown <[email protected]>
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
flexfiles/pNFS: update stats on NFS4ERR_DELAY for v4.1 DSes [+ + +]
Author: Tigran Mkrtchyan <[email protected]>
Date:   Thu May 15 21:04:15 2025 +0200

    flexfiles/pNFS: update stats on NFS4ERR_DELAY for v4.1 DSes
    
    [ Upstream commit e3e3775392f3f0f3e3044f8c162bf47858e01759 ]
    
    On NFS4ERR_DELAY nfs slient updates its stats, but misses for
    flexfiles v4.1 DSes.
    
    Signed-off-by: Tigran Mkrtchyan <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Stable-dep-of: 38074de35b01 ("NFSv4/flexfiles: Fix handling of NFS level errors in I/O")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY [+ + +]
Author: Zhang Heng <[email protected]>
Date:   Thu Jun 5 15:29:59 2025 +0800

    HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY
    
    [ Upstream commit 1a8953f4f7746c6a515989774fe03047c522c613 ]
    
    MARTLINKTECHNOLOGY is a microphone device, when the HID interface in an
    audio device is requested to get specific report id, the following error
    may occur.
    
    [  562.939373] usb 1-1.4.1.2: new full-speed USB device number 21 using xhci_hcd
    [  563.104908] usb 1-1.4.1.2: New USB device found, idVendor=4c4a, idProduct=4155, bcdDevice= 1.00
    [  563.104910] usb 1-1.4.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [  563.104911] usb 1-1.4.1.2: Product: USB Composite Device
    [  563.104912] usb 1-1.4.1.2: Manufacturer: SmartlinkTechnology
    [  563.104913] usb 1-1.4.1.2: SerialNumber: 20201111000001
    [  563.229499] input: SmartlinkTechnology USB Composite Device as /devices/pci0000:00/0000:00:07.1/0000:04:00.3/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1.2/1-1.4.1.2:1.2/0003:4C4A:4155.000F/input/input35
    [  563.291505] hid-generic 0003:4C4A:4155.000F: input,hidraw2: USB HID v2.01 Keyboard [SmartlinkTechnology USB Composite Device] on usb-0000:04:00.3-1.4.1.2/input2
    [  563.291557] usbhid 1-1.4.1.2:1.3: couldn't find an input interrupt endpoint
    [  568.506654] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  573.626656] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  578.746657] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  583.866655] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    [  588.986657] usb 1-1.4.1.2: 1:1: usb_set_interface failed (-110)
    
    Ignore HID interface. The device is working properly.
    
    Signed-off-by: Zhang Heng <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras [+ + +]
Author: Chia-Lin Kao (AceLan) <[email protected]>
Date:   Tue May 6 13:50:15 2025 +0800

    HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras
    
    [ Upstream commit 54bae4c17c11688339eb73a04fd24203bb6e7494 ]
    
    The Chicony Electronics HP 5MP Cameras (USB ID 04F2:B824 & 04F2:B82C)
    report a HID sensor interface that is not actually implemented.
    Attempting to access this non-functional sensor via iio_info causes
    system hangs as runtime PM tries to wake up an unresponsive sensor.
    
    Add these 2 devices to the HID ignore list since the sensor interface is
    non-functional by design and should not be exposed to userspace.
    
    Signed-off-by: Chia-Lin Kao (AceLan) <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

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

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

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

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

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

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

 
Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Fri Jan 26 17:07:24 2024 +0100

    Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID
    
    commit 9cf6e24c9fbf17e52de9fff07f12be7565ea6d61 upstream.
    
    After commit 936e4d49ecbc ("Input: atkbd - skip ATKBD_CMD_GETID in
    translated mode") not only the getid command is skipped, but also
    the de-activating of the keyboard at the end of atkbd_probe(), potentially
    re-introducing the problem fixed by commit be2d7e4233a4 ("Input: atkbd -
    fix multi-byte scancode handling on reconnect").
    
    Make sure multi-byte scancode handling on reconnect is still handled
    correctly by not skipping the atkbd_deactivate() call.
    
    Fixes: 936e4d49ecbc ("Input: atkbd - skip ATKBD_CMD_GETID in translated mode")
    Tested-by: Paul Menzel <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Wang Hai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Input: xpad - add support for Amazon Game Controller [+ + +]
Author: Matt Reynolds <[email protected]>
Date:   Thu Apr 29 15:29:37 2021 -0700

    Input: xpad - add support for Amazon Game Controller
    
    [ Upstream commit 05665cef4b745cb46b1d1b8e96deaa25464092d3 ]
    
    The Amazon Luna controller (product name "Amazon Game Controller") behaves
    like an Xbox 360 controller when connected over USB.
    
    Signed-off-by: Matt Reynolds <[email protected]>
    Reviewed-by: Harry Cutts <[email protected]>
    Link: https://lore.kernel.org/r/20210429103548.1.If5f9a44cb81e25b9350f7c6c0b3c88b4ecd81166@changeid
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Stable-dep-of: 22c69d786ef8 ("Input: xpad - support Acer NGR 200 Controller")
    Signed-off-by: Sasha Levin <[email protected]>

Input: xpad - add VID for Turtle Beach controllers [+ + +]
Author: Vicki Pfau <[email protected]>
Date:   Thu Mar 23 18:32:43 2023 -0700

    Input: xpad - add VID for Turtle Beach controllers
    
    [ Upstream commit 1999a6b12a3b5c8953fc9ec74863ebc75a1b851d ]
    
    This adds support for the Turtle Beach REACT-R and Recon Xbox controllers
    
    Signed-off-by: Vicki Pfau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Stable-dep-of: 22c69d786ef8 ("Input: xpad - support Acer NGR 200 Controller")
    Signed-off-by: Sasha Levin <[email protected]>

Input: xpad - support Acer NGR 200 Controller [+ + +]
Author: Nilton Perim Neto <[email protected]>
Date:   Fri Jun 27 16:29:40 2025 -0700

    Input: xpad - support Acer NGR 200 Controller
    
    [ Upstream commit 22c69d786ef8fb789c61ca75492a272774221324 ]
    
    Add the NGR 200 Xbox 360 to the list of recognized controllers.
    
    Signed-off-by: Nilton Perim Neto <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
kbuild: add --target to correctly cross-compile UAPI headers with Clang [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sat Mar 5 21:56:05 2022 +0900

    kbuild: add --target to correctly cross-compile UAPI headers with Clang
    
    [ Upstream commit 9fbed27a7a1101c926718dfa9b49aff1d04477b5 ]
    
    When you compile-test UAPI headers (CONFIG_UAPI_HEADER_TEST=y) with
    Clang, they are currently compiled for the host target (likely x86_64)
    regardless of the given ARCH=.
    
    In fact, some exported headers include libc headers. For example,
    include/uapi/linux/agpgart.h includes <stdlib.h> after being exported.
    The header search paths should match to the target we are compiling
    them for.
    
    Pick up the --target triple from KBUILD_CFLAGS in the same ways as
    commit 7f58b487e9ff ("kbuild: make Clang build userprogs for target
    architecture").
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Reviewed-by: Nathan Chancellor <[email protected]>
    Reviewed-by: Nick Desaulniers <[email protected]>
    Stable-dep-of: 02e9a22ceef0 ("kbuild: hdrcheck: fix cross build with clang")
    Signed-off-by: Sasha Levin <[email protected]>

kbuild: hdrcheck: fix cross build with clang [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Feb 25 11:00:31 2025 +0100

    kbuild: hdrcheck: fix cross build with clang
    
    [ Upstream commit 02e9a22ceef0227175e391902d8760425fa072c6 ]
    
    The headercheck tries to call clang with a mix of compiler arguments
    that don't include the target architecture. When building e.g. x86
    headers on arm64, this produces a warning like
    
       clang: warning: unknown platform, assuming -mfloat-abi=soft
    
    Add in the KBUILD_CPPFLAGS, which contain the target, in order to make it
    build properly.
    
    See also 1b71c2fb04e7 ("kbuild: userprogs: fix bitsize and target
    detection on clang").
    
    Reviewed-by: Nathan Chancellor <[email protected]>
    Fixes: feb843a469fb ("kbuild: add $(CLANG_FLAGS) to KBUILD_CPPFLAGS")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kbuild: use -MMD instead of -MD to exclude system headers from dependency [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Thu Apr 23 23:23:53 2020 +0900

    kbuild: use -MMD instead of -MD to exclude system headers from dependency
    
    [ Upstream commit 30a7729771731971839cc969d2a321e6ea7a144b ]
    
    This omits system headers from the generated header dependency.
    
    System headers are not updated unless you upgrade the compiler. Nor do
    they contain CONFIG options, so fixdep does not need to parse them.
    
    Having said that, the effect of this optimization will be quite small
    because the kernel code generally does not include system headers
    except <stdarg.h>. Host programs include a lot of system headers,
    but there are not so many in the kernel tree.
    
    At first, keeping system headers in .*.cmd files might be useful to
    detect the compiler update, but there is no guarantee that <stdarg.h>
    is included from every file. So, I implemented a more reliable way in
    the previous commit.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Stable-dep-of: 02e9a22ceef0 ("kbuild: hdrcheck: fix cross build with clang")
    Signed-off-by: Sasha Levin <[email protected]>

 
lib: test_objagg: Set error message in check_expect_hints_stats() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Mon Jun 30 14:36:40 2025 -0500

    lib: test_objagg: Set error message in check_expect_hints_stats()
    
    [ Upstream commit e6ed134a4ef592fe1fd0cafac9683813b3c8f3e8 ]
    
    Smatch complains that the error message isn't set in the caller:
    
        lib/test_objagg.c:923 test_hints_case2()
        error: uninitialized symbol 'errmsg'.
    
    This static checker warning only showed up after a recent refactoring
    but the bug dates back to when the code was originally added.  This
    likely doesn't affect anything in real life.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Fixes: 0a020d416d0a ("lib: introduce initial implementation of object aggregation manager")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 5.4.296 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Jul 17 18:25:06 2025 +0200

    Linux 5.4.296
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Alok Tiwari <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Linux: Logitech C-270 even more broken [+ + +]
Author: Oliver Neukum <[email protected]>
Date:   Thu Jun 5 14:28:45 2025 +0200

    Logitech C-270 even more broken
    
    commit cee4392a57e14a799fbdee193bc4c0de65b29521 upstream.
    
    Some varieties of this device don't work with
    RESET_RESUME alone.
    
    Signed-off-by: Oliver Neukum <[email protected]>
    Cc: stable <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

 
md/raid1: Fix stack memory use after return in raid1_reshape [+ + +]
Author: Wang Jinchao <[email protected]>
Date:   Thu Jun 12 19:28:40 2025 +0800

    md/raid1: Fix stack memory use after return in raid1_reshape
    
    [ Upstream commit d67ed2ccd2d1dcfda9292c0ea8697a9d0f2f0d98 ]
    
    In the raid1_reshape function, newpool is
    allocated on the stack and assigned to conf->r1bio_pool.
    This results in conf->r1bio_pool.wait.head pointing
    to a stack address.
    Accessing this address later can lead to a kernel panic.
    
    Example access path:
    
    raid1_reshape()
    {
            // newpool is on the stack
            mempool_t newpool, oldpool;
            // initialize newpool.wait.head to stack address
            mempool_init(&newpool, ...);
            conf->r1bio_pool = newpool;
    }
    
    raid1_read_request() or raid1_write_request()
    {
            alloc_r1bio()
            {
                    mempool_alloc()
                    {
                            // if pool->alloc fails
                            remove_element()
                            {
                                    --pool->curr_nr;
                            }
                    }
            }
    }
    
    mempool_free()
    {
            if (pool->curr_nr < pool->min_nr) {
                    // pool->wait.head is a stack address
                    // wake_up() will try to access this invalid address
                    // which leads to a kernel panic
                    return;
                    wake_up(&pool->wait);
            }
    }
    
    Fix:
    reinit conf->r1bio_pool.wait after assigning newpool.
    
    Fixes: afeee514ce7f ("md: convert to bioset_init()/mempool_init()")
    Signed-off-by: Wang Jinchao <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/linux-raid/[email protected]
    Signed-off-by: Yu Kuai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
media: cxusb: no longer judge rbuf when the write fails [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Sat Apr 5 19:56:41 2025 +0800

    media: cxusb: no longer judge rbuf when the write fails
    
    [ Upstream commit 73fb3b92da84637e3817580fa205d48065924e15 ]
    
    syzbot reported a uninit-value in cxusb_i2c_xfer. [1]
    
    Only when the write operation of usb_bulk_msg() in dvb_usb_generic_rw()
    succeeds and rlen is greater than 0, the read operation of usb_bulk_msg()
    will be executed to read rlen bytes of data from the dvb device into the
    rbuf.
    
    In this case, although rlen is 1, the write operation failed which resulted
    in the dvb read operation not being executed, and ultimately variable i was
    not initialized.
    
    [1]
    BUG: KMSAN: uninit-value in cxusb_gpio_tuner drivers/media/usb/dvb-usb/cxusb.c:124 [inline]
    BUG: KMSAN: uninit-value in cxusb_i2c_xfer+0x153a/0x1a60 drivers/media/usb/dvb-usb/cxusb.c:196
     cxusb_gpio_tuner drivers/media/usb/dvb-usb/cxusb.c:124 [inline]
     cxusb_i2c_xfer+0x153a/0x1a60 drivers/media/usb/dvb-usb/cxusb.c:196
     __i2c_transfer+0xe25/0x3150 drivers/i2c/i2c-core-base.c:-1
     i2c_transfer+0x317/0x4a0 drivers/i2c/i2c-core-base.c:2315
     i2c_transfer_buffer_flags+0x125/0x1e0 drivers/i2c/i2c-core-base.c:2343
     i2c_master_send include/linux/i2c.h:109 [inline]
     i2cdev_write+0x210/0x280 drivers/i2c/i2c-dev.c:183
     do_loop_readv_writev fs/read_write.c:848 [inline]
     vfs_writev+0x963/0x14e0 fs/read_write.c:1057
     do_writev+0x247/0x5c0 fs/read_write.c:1101
     __do_sys_writev fs/read_write.c:1169 [inline]
     __se_sys_writev fs/read_write.c:1166 [inline]
     __x64_sys_writev+0x98/0xe0 fs/read_write.c:1166
     x64_sys_call+0x2229/0x3c80 arch/x86/include/generated/asm/syscalls_64.h:21
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xcd/0x1e0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=526bd95c0ec629993bf3
    Tested-by: [email protected]
    Fixes: 22c6d93a7310 ("[PATCH] dvb: usb: support Medion hybrid USB2.0 DVB-T/analogue box")
    Cc: [email protected]
    Signed-off-by: Edward Adam Davis <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cxusb: use dev_dbg() rather than hand-rolled debug [+ + +]
Author: Sean Young <[email protected]>
Date:   Mon Nov 11 12:40:52 2019 +0100

    media: cxusb: use dev_dbg() rather than hand-rolled debug
    
    [ Upstream commit c376d66515f89dd833b344c419e313db9ad169b5 ]
    
    This solves the following compiler warnings:
    
    drivers/media/usb/dvb-usb/cxusb.c: In function ‘cxusb_gpio_tuner’:
    drivers/media/usb/dvb-usb/cxusb.c:128:35: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
      128 |   deb_info("gpio_write failed.\n");
          |                                   ^
    drivers/media/usb/dvb-usb/cxusb.c: In function ‘cxusb_bluebird_gpio_rw’:
    drivers/media/usb/dvb-usb/cxusb.c:145:44: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
      145 |   deb_info("bluebird_gpio_write failed.\n");
          |                                            ^
    drivers/media/usb/dvb-usb/cxusb.c: In function ‘cxusb_i2c_xfer’:
    drivers/media/usb/dvb-usb/cxusb.c:251:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
      251 |     deb_i2c("i2c read may have failed\n");
          |                                          ^
    drivers/media/usb/dvb-usb/cxusb.c:274:43: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
      274 |     deb_i2c("i2c write may have failed\n");
          |                                           ^
    
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Stable-dep-of: 73fb3b92da84 ("media: cxusb: no longer judge rbuf when the write fails")
    Signed-off-by: Sasha Levin <[email protected]>

media: omap3isp: use sgtable-based scatterlist wrappers [+ + +]
Author: Marek Szyprowski <[email protected]>
Date:   Wed May 7 18:09:13 2025 +0200

    media: omap3isp: use sgtable-based scatterlist wrappers
    
    [ Upstream commit 3de572fe2189a4a0bd80295e1f478401e739498e ]
    
    Use common wrappers operating directly on the struct sg_table objects to
    fix incorrect use of scatterlists sync calls. dma_sync_sg_for_*()
    functions have to be called with the number of elements originally passed
    to dma_map_sg_*() function, not the one returned in sgtable's nents.
    
    Fixes: d33186d0be18 ("[media] omap3isp: ccdc: Use the DMA API for LSC")
    Fixes: 0e24e90f2ca7 ("[media] omap3isp: stat: Use the DMA API")
    CC: [email protected]
    Signed-off-by: Marek Szyprowski <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: uvcvideo: Return the number of processed controls [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Mon Feb 24 10:34:53 2025 +0000

    media: uvcvideo: Return the number of processed controls
    
    commit ba4fafb02ad6a4eb2e00f861893b5db42ba54369 upstream.
    
    If we let know our callers that we have not done anything, they will be
    able to optimize their decisions.
    
    Cc: [email protected]
    Fixes: b4012002f3a3 ("[media] uvcvideo: Add support for control events")
    Reviewed-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

media: uvcvideo: Send control events for partial succeeds [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Mon Feb 24 10:34:54 2025 +0000

    media: uvcvideo: Send control events for partial succeeds
    
    commit 5c791467aea6277430da5f089b9b6c2a9d8a4af7 upstream.
    
    Today, when we are applying a change to entities A, B. If A succeeds and B
    fails the events for A are not sent.
    
    This change changes the code so the events for A are send right after
    they happen.
    
    Cc: [email protected]
    Fixes: b4012002f3a3 ("[media] uvcvideo: Add support for control events")
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: vivid: Change the siize of the composing [+ + +]
Author: Denis Arefev <[email protected]>
Date:   Tue Apr 15 11:27:21 2025 +0300

    media: vivid: Change the siize of the composing
    
    [ Upstream commit f83ac8d30c43fd902af7c84c480f216157b60ef0 ]
    
    syzkaller found a bug:
    
    BUG: KASAN: vmalloc-out-of-bounds in tpg_fill_plane_pattern drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2608 [inline]
    BUG: KASAN: vmalloc-out-of-bounds in tpg_fill_plane_buffer+0x1a9c/0x5af0 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2705
    Write of size 1440 at addr ffffc9000d0ffda0 by task vivid-000-vid-c/5304
    
    CPU: 0 UID: 0 PID: 5304 Comm: vivid-000-vid-c Not tainted 6.14.0-rc2-syzkaller-00039-g09fbf3d50205 #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    
    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
     kasan_check_range+0x282/0x290 mm/kasan/generic.c:189
     __asan_memcpy+0x40/0x70 mm/kasan/shadow.c:106
     tpg_fill_plane_pattern drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2608 [inline]
     tpg_fill_plane_buffer+0x1a9c/0x5af0 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:2705
     vivid_fillbuff drivers/media/test-drivers/vivid/vivid-kthread-cap.c:470 [inline]
     vivid_thread_vid_cap_tick+0xf8e/0x60d0 drivers/media/test-drivers/vivid/vivid-kthread-cap.c:629
     vivid_thread_vid_cap+0x8aa/0xf30 drivers/media/test-drivers/vivid/vivid-kthread-cap.c:767
     kthread+0x7a9/0x920 kernel/kthread.c:464
     ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:148
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
     </TASK>
    
    The composition size cannot be larger than the size of fmt_cap_rect.
    So execute v4l2_rect_map_inside() even if has_compose_cap == 0.
    
    Fixes: 94a7ad928346 ("media: vivid: fix compose size exceed boundary")
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?id=8ed8e8cc30cbe0d86c9a25bd1d6a5775129b8ea3
    Signed-off-by: Denis Arefev <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
mmc: mediatek: use data instead of mrq parameter from msdc_{un}prepare_data() [+ + +]
Author: Yue Hu <[email protected]>
Date:   Mon May 17 18:09:00 2021 +0800

    mmc: mediatek: use data instead of mrq parameter from msdc_{un}prepare_data()
    
    [ Upstream commit 151071351bb6f3d1861e99a22c4cebadf81911a0 ]
    
    We already have 'mrq->data' before calling these two functions, no
    need to find it again via 'mrq->data' internally. Also remove local
    data variable accordingly.
    
    Signed-off-by: Yue Hu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: f5de469990f1 ("mtk-sd: Prevent memory corruption from DMA map failure")
    Signed-off-by: Sasha Levin <[email protected]>

mmc: sdhci: Add a helper function for dump register in dynamic debug mode [+ + +]
Author: Victor Shih <[email protected]>
Date:   Fri Jun 6 19:01:20 2025 +0800

    mmc: sdhci: Add a helper function for dump register in dynamic debug mode
    
    commit 2881ba9af073faa8ee7408a8d1e0575e50eb3f6c upstream.
    
    Add a helper function for dump register in dynamic debug mode.
    
    Signed-off-by: Victor Shih <[email protected]>
    Acked-by: Adrian Hunter <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mtk-sd: Fix a pagefault in dma_unmap_sg() for not prepared data [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Thu Jun 5 10:07:38 2025 +0900

    mtk-sd: Fix a pagefault in dma_unmap_sg() for not prepared data
    
    commit 539d80575b810c7a5987c7ac8915e3bc99c03695 upstream.
    
    When swiotlb buffer is full, the dma_map_sg() returns 0 to
    msdc_prepare_data(), but it does not check it and sets the
    MSDC_PREPARE_FLAG.
    
    swiotlb_tbl_map_single() /* prints "swiotlb buffer is full" */
      <-swiotlb_map()
        <-dma_direct_map_page()
          <-dma_direct_map_sg()
            <-__dma_map_sg_attrs()
              <-dma_map_sg_attrs()
                <-dma_map_sg()  /* returns 0 (pages mapped) */
                  <-msdc_prepare_data()
    
    Then, the msdc_unprepare_data() checks MSDC_PREPARE_FLAG and calls
    dma_unmap_sg() with unmapped pages. It causes a page fault.
    
    To fix this problem, Do not set MSDC_PREPARE_FLAG if dma_map_sg()
    fails because this is not prepared.
    
    Fixes: 208489032bdd ("mmc: mediatek: Add Mediatek MMC driver")
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Tested-by: Sergey Senozhatsky <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/174908565814.4056588.769599127120955383.stgit@mhiramat.tok.corp.google.com
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mtk-sd: Prevent memory corruption from DMA map failure [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Thu Jun 12 20:26:10 2025 +0900

    mtk-sd: Prevent memory corruption from DMA map failure
    
    [ Upstream commit f5de469990f19569627ea0dd56536ff5a13beaa3 ]
    
    If msdc_prepare_data() fails to map the DMA region, the request is
    not prepared for data receiving, but msdc_start_data() proceeds
    the DMA with previous setting.
    Since this will lead a memory corruption, we have to stop the
    request operation soon after the msdc_prepare_data() fails to
    prepare it.
    
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Fixes: 208489032bdd ("mmc: mediatek: Add Mediatek MMC driver")
    Cc: [email protected]
    Link: https://lore.kernel.org/r/174972756982.3337526.6755001617701603082.stgit@mhiramat.tok.corp.google.com
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mtk-sd: reset host->mrq on prepare_data() error [+ + +]
Author: Sergey Senozhatsky <[email protected]>
Date:   Wed Jun 25 14:20:37 2025 +0900

    mtk-sd: reset host->mrq on prepare_data() error
    
    [ Upstream commit ec54c0a20709ed6e56f40a8d59eee725c31a916b ]
    
    Do not leave host with dangling ->mrq pointer if we hit
    the msdc_prepare_data() error out path.
    
    Signed-off-by: Sergey Senozhatsky <[email protected]>
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Fixes: f5de469990f1 ("mtk-sd: Prevent memory corruption from DMA map failure")
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/sched: Abort __tc_modify_qdisc if parent class does not exist [+ + +]
Author: Victor Nogueira <[email protected]>
Date:   Mon Jul 7 18:08:01 2025 -0300

    net/sched: Abort __tc_modify_qdisc if parent class does not exist
    
    [ Upstream commit ffdde7bf5a439aaa1955ebd581f5c64ab1533963 ]
    
    Lion's patch [1] revealed an ancient bug in the qdisc API.
    Whenever a user creates/modifies a qdisc specifying as a parent another
    qdisc, the qdisc API will, during grafting, detect that the user is
    not trying to attach to a class and reject. However grafting is
    performed after qdisc_create (and thus the qdiscs' init callback) is
    executed. In qdiscs that eventually call qdisc_tree_reduce_backlog
    during init or change (such as fq, hhf, choke, etc), an issue
    arises. For example, executing the following commands:
    
    sudo tc qdisc add dev lo root handle a: htb default 2
    sudo tc qdisc add dev lo parent a: handle beef fq
    
    Qdiscs such as fq, hhf, choke, etc unconditionally invoke
    qdisc_tree_reduce_backlog() in their control path init() or change() which
    then causes a failure to find the child class; however, that does not stop
    the unconditional invocation of the assumed child qdisc's qlen_notify with
    a null class. All these qdiscs make the assumption that class is non-null.
    
    The solution is ensure that qdisc_leaf() which looks up the parent
    class, and is invoked prior to qdisc_create(), should return failure on
    not finding the class.
    In this patch, we leverage qdisc_leaf to return ERR_PTRs whenever the
    parentid doesn't correspond to a class, so that we can detect it
    earlier on and abort before qdisc_create is called.
    
    [1] https://lore.kernel.org/netdev/[email protected]/
    
    Fixes: 5e50da01d0ce ("[NET_SCHED]: Fix endless loops (part 2): "simple" qdiscs")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Acked-by: Jamal Hadi Salim <[email protected]>
    Reviewed-by: Cong Wang <[email protected]>
    Signed-off-by: Victor Nogueira <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/sched: Always pass notifications when child class becomes empty [+ + +]
Author: Lion Ackermann <[email protected]>
Date:   Mon Jun 30 15:27:30 2025 +0200

    net/sched: Always pass notifications when child class becomes empty
    
    [ Upstream commit 103406b38c600fec1fe375a77b27d87e314aea09 ]
    
    Certain classful qdiscs may invoke their classes' dequeue handler on an
    enqueue operation. This may unexpectedly empty the child qdisc and thus
    make an in-flight class passive via qlen_notify(). Most qdiscs do not
    expect such behaviour at this point in time and may re-activate the
    class eventually anyways which will lead to a use-after-free.
    
    The referenced fix commit attempted to fix this behavior for the HFSC
    case by moving the backlog accounting around, though this turned out to
    be incomplete since the parent's parent may run into the issue too.
    The following reproducer demonstrates this use-after-free:
    
        tc qdisc add dev lo root handle 1: drr
        tc filter add dev lo parent 1: basic classid 1:1
        tc class add dev lo parent 1: classid 1:1 drr
        tc qdisc add dev lo parent 1:1 handle 2: hfsc def 1
        tc class add dev lo parent 2: classid 2:1 hfsc rt m1 8 d 1 m2 0
        tc qdisc add dev lo parent 2:1 handle 3: netem
        tc qdisc add dev lo parent 3:1 handle 4: blackhole
    
        echo 1 | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888
        tc class delete dev lo classid 1:1
        echo 1 | socat -u STDIN UDP4-DATAGRAM:127.0.0.1:8888
    
    Since backlog accounting issues leading to a use-after-frees on stale
    class pointers is a recurring pattern at this point, this patch takes
    a different approach. Instead of trying to fix the accounting, the patch
    ensures that qdisc_tree_reduce_backlog always calls qlen_notify when
    the child qdisc is empty. This solves the problem because deletion of
    qdiscs always involves a call to qdisc_reset() and / or
    qdisc_purge_queue() which ultimately resets its qlen to 0 thus causing
    the following qdisc_tree_reduce_backlog() to report to the parent. Note
    that this may call qlen_notify on passive classes multiple times. This
    is not a problem after the recent patch series that made all the
    classful qdiscs qlen_notify() handlers idempotent.
    
    Fixes: 3f981138109f ("sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue()")
    Signed-off-by: Lion Ackermann <[email protected]>
    Reviewed-by: Jamal Hadi Salim <[email protected]>
    Acked-by: Cong Wang <[email protected]>
    Acked-by: Jamal Hadi Salim <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: appletalk: Fix device refcount leak in atrtr_create() [+ + +]
Author: Kito Xu <[email protected]>
Date:   Wed Jul 9 03:52:51 2025 +0000

    net: appletalk: Fix device refcount leak in atrtr_create()
    
    [ Upstream commit 711c80f7d8b163d3ecd463cd96f07230f488e750 ]
    
    When updating an existing route entry in atrtr_create(), the old device
    reference was not being released before assigning the new device,
    leading to a device refcount leak. Fix this by calling dev_put() to
    release the old device reference before holding the new one.
    
    Fixes: c7f905f0f6d4 ("[ATALK]: Add missing dev_hold() to atrtr_create().")
    Signed-off-by: Kito Xu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

net: ipv6: Discard next-hop MTU less than minimum link MTU [+ + +]
Author: Georg Kohmann <[email protected]>
Date:   Wed Oct 7 14:53:02 2020 +0200

    net: ipv6: Discard next-hop MTU less than minimum link MTU
    
    commit 4a65dff81a04f874fa6915c7f069b4dc2c4010e4 upstream.
    
    When a ICMPV6_PKT_TOOBIG report a next-hop MTU that is less than the IPv6
    minimum link MTU, the estimated path MTU is reduced to the minimum link
    MTU. This behaviour breaks TAHI IPv6 Core Conformance Test v6LC4.1.6:
    Packet Too Big Less than IPv6 MTU.
    
    Referring to RFC 8201 section 4: "If a node receives a Packet Too Big
    message reporting a next-hop MTU that is less than the IPv6 minimum link
    MTU, it must discard it. A node must not reduce its estimate of the Path
    MTU below the IPv6 minimum link MTU on receipt of a Packet Too Big
    message."
    
    Drop the path MTU update if reported MTU is less than the minimum link MTU.
    
    Signed-off-by: Georg Kohmann <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: WangYuli <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: phy: microchip: limit 100M workaround to link-down events on LAN88xx [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Wed Jul 9 15:07:53 2025 +0200

    net: phy: microchip: limit 100M workaround to link-down events on LAN88xx
    
    [ Upstream commit dd4360c0e8504f2f7639c7f5d07c93cfd6a98333 ]
    
    Restrict the 100Mbit forced-mode workaround to link-down transitions
    only, to prevent repeated link reset cycles in certain configurations.
    
    The workaround was originally introduced to improve signal reliability
    when switching cables between long and short distances. It temporarily
    forces the PHY into 10 Mbps before returning to 100 Mbps.
    
    However, when used with autonegotiating link partners (e.g., Intel i350),
    executing this workaround on every link change can confuse the partner
    and cause constant renegotiation loops. This results in repeated link
    down/up transitions and the PHY never reaching a stable state.
    
    Limit the workaround to only run during the PHY_NOLINK state. This ensures
    it is triggered only once per link drop, avoiding disruptive toggling
    while still preserving its intended effect.
    
    Note: I am not able to reproduce the original issue that this workaround
    addresses. I can only confirm that 100 Mbit mode works correctly in my
    test setup. Based on code inspection, I assume the workaround aims to
    reset some internal state machine or signal block by toggling speeds.
    However, a PHY reset is already performed earlier in the function via
    phy_init_hw(), which may achieve a similar effect. Without a reproducer,
    I conservatively keep the workaround but restrict its conditions.
    
    Fixes: e57cf3639c32 ("net: lan78xx: fix accessing the LAN7800's internal phy specific registers from the MAC driver")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: rose: Fix fall-through warnings for Clang [+ + +]
Author: Gustavo A. R. Silva <[email protected]>
Date:   Tue Mar 9 23:43:45 2021 -0600

    net: rose: Fix fall-through warnings for Clang
    
    [ Upstream commit 90d181ca488f466904ea59dd5c836f766b69c71b ]
    
    In preparation to enable -Wimplicit-fallthrough for Clang, fix multiple
    warnings by explicitly adding multiple break statements instead of
    letting the code fall through to the next case.
    
    Link: https://github.com/KSPP/linux/issues/115
    Signed-off-by: Gustavo A. R. Silva <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 34a500caf48c ("rose: fix dangling neighbour pointers in rose_rt_device_down()")
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: qmi_wwan: add SIMCom 8230C composition [+ + +]
Author: Xiaowei Li <[email protected]>
Date:   Fri Jun 20 10:27:02 2025 +0800

    net: usb: qmi_wwan: add SIMCom 8230C composition
    
    [ Upstream commit 0b39b055b5b48cbbdf5746a1ca6e3f6b0221e537 ]
    
    Add support for SIMCom 8230C which is based on Qualcomm SDX35 chip.
    0x9071: tty (DM) + tty (NMEA) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9071 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) 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=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Xiaowei Li <[email protected]>
    Acked-by: Bjørn Mork <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netlink: Fix rmem check in netlink_broadcast_deliver(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 11 05:32:07 2025 +0000

    netlink: Fix rmem check in netlink_broadcast_deliver().
    
    commit a3c4a125ec725cefb40047eb05ff9eafd57830b4 upstream.
    
    We need to allow queuing at least one skb even when skb is
    larger than sk->sk_rcvbuf.
    
    The cited commit made a mistake while converting a condition
    in netlink_broadcast_deliver().
    
    Let's correct the rmem check for the allow-one-skb rule.
    
    Fixes: ae8f160e7eb24 ("netlink: Fix wraparounds of sk->sk_rmem_alloc.")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

netlink: Fix wraparounds of sk->sk_rmem_alloc. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Jul 4 05:48:18 2025 +0000

    netlink: Fix wraparounds of sk->sk_rmem_alloc.
    
    [ Upstream commit ae8f160e7eb24240a2a79fc4c815c6a0d4ee16cc ]
    
    Netlink has this pattern in some places
    
      if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf)
            atomic_add(skb->truesize, &sk->sk_rmem_alloc);
    
    , which has the same problem fixed by commit 5a465a0da13e ("udp:
    Fix multiple wraparounds of sk->sk_rmem_alloc.").
    
    For example, if we set INT_MAX to SO_RCVBUFFORCE, the condition
    is always false as the two operands are of int.
    
    Then, a single socket can eat as many skb as possible until OOM
    happens, and we can see multiple wraparounds of sk->sk_rmem_alloc.
    
    Let's fix it by using atomic_add_return() and comparing the two
    variables as unsigned int.
    
    Before:
      [root@fedora ~]# ss -f netlink
      Recv-Q      Send-Q Local Address:Port                Peer Address:Port
      -1668710080 0               rtnl:nl_wraparound/293               *
    
    After:
      [root@fedora ~]# ss -f netlink
      Recv-Q     Send-Q Local Address:Port                Peer Address:Port
      2147483072 0               rtnl:nl_wraparound/290               *
      ^
      `--- INT_MAX - 576
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Jason Baron <[email protected]>
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netlink: make sure we allow at least one dump skb [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Thu Jul 10 17:11:21 2025 -0700

    netlink: make sure we allow at least one dump skb
    
    commit a215b5723922f8099078478122f02100e489cb80 upstream.
    
    Commit under Fixes tightened up the memory accounting for Netlink
    sockets. Looks like the accounting is too strict for some existing
    use cases, Marek reported issues with nl80211 / WiFi iw CLI.
    
    To reduce number of iterations Netlink dumps try to allocate
    messages based on the size of the buffer passed to previous
    recvmsg() calls. If user space uses a larger buffer in recvmsg()
    than sk_rcvbuf we will allocate an skb we won't be able to queue.
    
    Make sure we always allow at least one skb to be queued.
    Same workaround is already present in netlink_attachskb().
    Alternative would be to cap the allocation size to
      rcvbuf - rmem_alloc
    but as I said, the workaround is already present in other places.
    
    Reported-by: Marek Szyprowski <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: ae8f160e7eb2 ("netlink: Fix wraparounds of sk->sk_rmem_alloc.")
    Tested-by: Marek Szyprowski <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nfs: Clean up /proc/net/rpc/nfs when nfs_fs_proc_net_init() fails. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jun 12 14:52:50 2025 -0700

    nfs: Clean up /proc/net/rpc/nfs when nfs_fs_proc_net_init() fails.
    
    [ Upstream commit e8d6f3ab59468e230f3253efe5cb63efa35289f7 ]
    
    syzbot reported a warning below [1] following a fault injection in
    nfs_fs_proc_net_init(). [0]
    
    When nfs_fs_proc_net_init() fails, /proc/net/rpc/nfs is not removed.
    
    Later, rpc_proc_exit() tries to remove /proc/net/rpc, and the warning
    is logged as the directory is not empty.
    
    Let's handle the error of nfs_fs_proc_net_init() properly.
    
    [0]:
    FAULT_INJECTION: forcing a failure.
    name failslab, interval 1, probability 0, space 0, times 0
    CPU: 1 UID: 0 PID: 6120 Comm: syz.2.27 Not tainted 6.16.0-rc1-syzkaller-00010-g2c4a1f3fe03e #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
    Call Trace:
     <TASK>
      dump_stack_lvl (lib/dump_stack.c:123)
     should_fail_ex (lib/fault-inject.c:73 lib/fault-inject.c:174)
     should_failslab (mm/failslab.c:46)
     kmem_cache_alloc_noprof (mm/slub.c:4178 mm/slub.c:4204)
     __proc_create (fs/proc/generic.c:427)
     proc_create_reg (fs/proc/generic.c:554)
     proc_create_net_data (fs/proc/proc_net.c:120)
     nfs_fs_proc_net_init (fs/nfs/client.c:1409)
     nfs_net_init (fs/nfs/inode.c:2600)
     ops_init (net/core/net_namespace.c:138)
     setup_net (net/core/net_namespace.c:443)
     copy_net_ns (net/core/net_namespace.c:576)
     create_new_namespaces (kernel/nsproxy.c:110)
     unshare_nsproxy_namespaces (kernel/nsproxy.c:218 (discriminator 4))
     ksys_unshare (kernel/fork.c:3123)
     __x64_sys_unshare (kernel/fork.c:3190)
     do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
     entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
     </TASK>
    
    [1]:
    remove_proc_entry: removing non-empty directory 'net/rpc', leaking at least 'nfs'
     WARNING: CPU: 1 PID: 6120 at fs/proc/generic.c:727 remove_proc_entry+0x45e/0x530 fs/proc/generic.c:727
    Modules linked in:
    CPU: 1 UID: 0 PID: 6120 Comm: syz.2.27 Not tainted 6.16.0-rc1-syzkaller-00010-g2c4a1f3fe03e #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
     RIP: 0010:remove_proc_entry+0x45e/0x530 fs/proc/generic.c:727
    Code: 3c 02 00 0f 85 85 00 00 00 48 8b 93 d8 00 00 00 4d 89 f0 4c 89 e9 48 c7 c6 40 ba a2 8b 48 c7 c7 60 b9 a2 8b e8 33 81 1d ff 90 <0f> 0b 90 90 e9 5f fe ff ff e8 04 69 5e ff 90 48 b8 00 00 00 00 00
    RSP: 0018:ffffc90003637b08 EFLAGS: 00010282
    RAX: 0000000000000000 RBX: ffff88805f534140 RCX: ffffffff817a92c8
    RDX: ffff88807da99e00 RSI: ffffffff817a92d5 RDI: 0000000000000001
    RBP: ffff888033431ac0 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000001 R12: ffff888033431a00
    R13: ffff888033431ae4 R14: ffff888033184724 R15: dffffc0000000000
    FS:  0000555580328500(0000) GS:ffff888124a62000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f71733743e0 CR3: 000000007f618000 CR4: 00000000003526f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
      sunrpc_exit_net+0x46/0x90 net/sunrpc/sunrpc_syms.c:76
      ops_exit_list net/core/net_namespace.c:200 [inline]
      ops_undo_list+0x2eb/0xab0 net/core/net_namespace.c:253
      setup_net+0x2e1/0x510 net/core/net_namespace.c:457
      copy_net_ns+0x2a6/0x5f0 net/core/net_namespace.c:574
      create_new_namespaces+0x3ea/0xa90 kernel/nsproxy.c:110
      unshare_nsproxy_namespaces+0xc0/0x1f0 kernel/nsproxy.c:218
      ksys_unshare+0x45b/0xa40 kernel/fork.c:3121
      __do_sys_unshare kernel/fork.c:3192 [inline]
      __se_sys_unshare kernel/fork.c:3190 [inline]
      __x64_sys_unshare+0x31/0x40 kernel/fork.c:3190
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xcd/0x490 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fa1a6b8e929
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007fff3a090368 EFLAGS: 00000246 ORIG_RAX: 0000000000000110
    RAX: ffffffffffffffda RBX: 00007fa1a6db5fa0 RCX: 00007fa1a6b8e929
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000040000080
    RBP: 00007fa1a6c10b39 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007fa1a6db5fa0 R14: 00007fa1a6db5fa0 R15: 0000000000000001
     </TASK>
    
    Fixes: d47151b79e32 ("nfs: expose /proc/net/sunrpc/nfs in net namespaces")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=a4cc4ac22daa4a71b87c
    Tested-by: [email protected]
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4/flexfiles: Fix handling of NFS level errors in I/O [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Thu Jun 19 15:16:11 2025 -0400

    NFSv4/flexfiles: Fix handling of NFS level errors in I/O
    
    [ Upstream commit 38074de35b015df5623f524d6f2b49a0cd395c40 ]
    
    Allow the flexfiles error handling to recognise NFS level errors (as
    opposed to RPC level errors) and handle them separately. The main
    motivator is the NFSERR_PERM errors that get returned if the NFS client
    connects to the data server through a port number that is lower than
    1024. In that case, the client should disconnect and retry a READ on a
    different data server, or it should retry a WRITE after reconnecting.
    
    Reviewed-by: Tigran Mkrtchyan <[email protected]>
    Fixes: d67ae825a59d ("pnfs/flexfiles: Add the FlexFile Layout Driver")
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nui: Fix dma_mapping_error() check [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Mon Jun 30 10:36:43 2025 +0200

    nui: Fix dma_mapping_error() check
    
    [ Upstream commit 561aa0e22b70a5e7246b73d62a824b3aef3fc375 ]
    
    dma_map_XXX() functions return values DMA_MAPPING_ERROR as error values
    which is often ~0.  The error value should be tested with
    dma_mapping_error().
    
    This patch creates a new function in niu_ops to test if the mapping
    failed.  The test is fixed in niu_rbr_add_page(), added in
    niu_start_xmit() and the successfully mapped pages are unmaped upon error.
    
    Fixes: ec2deec1f352 ("niu: Fix to check for dma mapping errors.")
    Signed-off-by: Thomas Fourier <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
of: Add of_property_present() helper [+ + +]
Author: Rob Herring <[email protected]>
Date:   Thu Feb 9 15:35:01 2023 -0600

    of: Add of_property_present() helper
    
    [ Upstream commit 9cbad37ce8122de32a1529e394b468bc101c9e7f ]
    
    Add an of_property_present() function similar to
    fwnode_property_present(). of_property_read_bool() could be used
    directly, but it is cleaner to not use it on non-boolean properties.
    
    Reviewed-by: Frank Rowand <[email protected]>
    Tested-by: Frank Rowand <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Rob Herring <[email protected]>
    Stable-dep-of: 171eb6f71e9e ("ASoC: meson: meson-card-utils: use of_property_present() for DT parsing")
    Signed-off-by: Sasha Levin <[email protected]>

of: property: define of_property_read_u{8,16,32,64}_array() unconditionally [+ + +]
Author: Michael Walle <[email protected]>
Date:   Tue Jan 18 18:35:03 2022 +0100

    of: property: define of_property_read_u{8,16,32,64}_array() unconditionally
    
    [ Upstream commit 2ca42c3ad9ed875b136065b010753a4caaaa1d38 ]
    
    We can get rid of all the empty stubs because all these functions call
    of_property_read_variable_u{8,16,32,64}_array() which already have an
    empty stub if CONFIG_OF is not defined.
    
    Signed-off-by: Michael Walle <[email protected]>
    Signed-off-by: Rob Herring <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 171eb6f71e9e ("ASoC: meson: meson-card-utils: use of_property_present() for DT parsing")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
pinctrl: qcom: msm: mark certain pins as invalid for interrupts [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Thu Jun 12 11:14:48 2025 +0200

    pinctrl: qcom: msm: mark certain pins as invalid for interrupts
    
    commit 93712205ce2f1fb047739494c0399a26ea4f0890 upstream.
    
    On some platforms, the UFS-reset pin has no interrupt logic in TLMM but
    is nevertheless registered as a GPIO in the kernel. This enables the
    user-space to trigger a BUG() in the pinctrl-msm driver by running, for
    example: `gpiomon -c 0 113` on RB2.
    
    The exact culprit is requesting pins whose intr_detection_width setting
    is not 1 or 2 for interrupts. This hits a BUG() in
    msm_gpio_irq_set_type(). Potentially crashing the kernel due to an
    invalid request from user-space is not optimal, so let's go through the
    pins and mark those that would fail the check as invalid for the irq chip
    as we should not even register them as available irqs.
    
    This function can be extended if we determine that there are more
    corner-cases like this.
    
    Fixes: f365be092572 ("pinctrl: Add Qualcomm TLMM driver")
    Cc: [email protected]
    Reviewed-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
platform/mellanox: mlxbf-tmfifo: fix vring_desc.len assignment [+ + +]
Author: David Thompson <[email protected]>
Date:   Fri Jun 13 21:46:08 2025 +0000

    platform/mellanox: mlxbf-tmfifo: fix vring_desc.len assignment
    
    [ Upstream commit 109f4d29dade8ae5b4ac6325af9d1bc24b4230f8 ]
    
    Fix warnings reported by sparse, related to incorrect type:
    drivers/platform/mellanox/mlxbf-tmfifo.c:284:38: warning: incorrect type in assignment (different base types)
    drivers/platform/mellanox/mlxbf-tmfifo.c:284:38:    expected restricted __virtio32 [usertype] len
    drivers/platform/mellanox/mlxbf-tmfifo.c:284:38:    got unsigned long
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Fixes: 78034cbece79 ("platform/mellanox: mlxbf-tmfifo: Drop the Rx packet if no more descriptors")
    Signed-off-by: David Thompson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc: Fix struct termio related ioctl macros [+ + +]
Author: Madhavan Srinivasan <[email protected]>
Date:   Sat May 17 19:52:37 2025 +0530

    powerpc: Fix struct termio related ioctl macros
    
    [ Upstream commit ab107276607af90b13a5994997e19b7b9731e251 ]
    
    Since termio interface is now obsolete, include/uapi/asm/ioctls.h
    has some constant macros referring to "struct termio", this caused
    build failure at userspace.
    
    In file included from /usr/include/asm/ioctl.h:12,
                     from /usr/include/asm/ioctls.h:5,
                     from tst-ioctls.c:3:
    tst-ioctls.c: In function 'get_TCGETA':
    tst-ioctls.c:12:10: error: invalid application of 'sizeof' to incomplete type 'struct termio'
       12 |   return TCGETA;
          |          ^~~~~~
    
    Even though termios.h provides "struct termio", trying to juggle definitions around to
    make it compile could introduce regressions. So better to open code it.
    
    Reported-by: Tulio Magno <[email protected]>
    Suggested-by: Nicholas Piggin <[email protected]>
    Tested-by: Justin M. Forbes <[email protected]>
    Reviewed-by: Michael Ellerman <[email protected]>
    Closes: https://lore.kernel.org/linuxppc-dev/[email protected]/
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
proc: Clear the pieces of proc_inode that proc_evict_inode cares about [+ + +]
Author: Eric W. Biederman <[email protected]>
Date:   Thu Feb 20 11:17:28 2020 -0600

    proc: Clear the pieces of proc_inode that proc_evict_inode cares about
    
    [ Upstream commit 71448011ea2a1cd36d8f5cbdab0ed716c454d565 ]
    
    This just keeps everything tidier, and allows for using flags like
    SLAB_TYPESAFE_BY_RCU where slabs are not always cleared before reuse.
    I don't see reuse without reinitializing happening with the proc_inode
    but I had a false alarm while reworking flushing of proc dentries and
    indoes when a process dies that caused me to tidy this up.
    
    The code is a little easier to follow and reason about this
    way so I figured the changes might as well be kept.
    
    Signed-off-by: "Eric W. Biederman" <[email protected]>
    Stable-dep-of: b969f9614885 ("fix proc_sys_compare() handling of in-lookup dentries")
    Signed-off-by: Sasha Levin <[email protected]>

 
pwm: mediatek: Ensure to disable clocks in error path [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Fri Jul 4 19:27:27 2025 +0200

    pwm: mediatek: Ensure to disable clocks in error path
    
    commit 505b730ede7f5c4083ff212aa955155b5b92e574 upstream.
    
    After enabling the clocks each error path must disable the clocks again.
    One of them failed to do so. Unify the error paths to use goto to make it
    harder for future changes to add a similar bug.
    
    Fixes: 7ca59947b5fc ("pwm: mediatek: Prevent divide-by-zero in pwm_mediatek_config()")
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    [ukleinek: backported to 5.15.y]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
RDMA/core: Create and destroy counters in the ib_core [+ + +]
Author: Leon Romanovsky <[email protected]>
Date:   Tue Jun 30 13:18:52 2020 +0300

    RDMA/core: Create and destroy counters in the ib_core
    
    [ Upstream commit 3b023e1b680a56e84c22d43486875a5aa4c78afe ]
    
    Move allocation and destruction of counters under ib_core responsibility
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Stable-dep-of: acd245b1e33f ("RDMA/mlx5: Fix CC counters query for MPV")
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/core: Use refcount_t instead of atomic_t on refcount of iwcm_id_private [+ + +]
Author: Weihang Li <[email protected]>
Date:   Fri May 28 17:37:32 2021 +0800

    RDMA/core: Use refcount_t instead of atomic_t on refcount of iwcm_id_private
    
    [ Upstream commit 60dff56d77292062789232f68354f567e1ccf1d2 ]
    
    The refcount_t API will WARN on underflow and overflow of a reference
    counter, and avoid use-after-free risks.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Weihang Li <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Stable-dep-of: 6883b680e703 ("RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction")
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction [+ + +]
Author: Shin'ichiro Kawasaki <[email protected]>
Date:   Sat May 10 19:10:36 2025 +0900

    RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction
    
    [ Upstream commit 6883b680e703c6b2efddb4e7a8d891ce1803d06b ]
    
    The commit 59c68ac31e15 ("iw_cm: free cm_id resources on the last
    deref") simplified cm_id resource management by freeing cm_id once all
    references to the cm_id were removed. The references are removed either
    upon completion of iw_cm event handlers or when the application destroys
    the cm_id. This commit introduced the use-after-free condition where
    cm_id_private object could still be in use by event handler works during
    the destruction of cm_id. The commit aee2424246f9 ("RDMA/iwcm: Fix a
    use-after-free related to destroying CM IDs") addressed this use-after-
    free by flushing all pending works at the cm_id destruction.
    
    However, still another use-after-free possibility remained. It happens
    with the work objects allocated for each cm_id_priv within
    alloc_work_entries() during cm_id creation, and subsequently freed in
    dealloc_work_entries() once all references to the cm_id are removed.
    If the cm_id's last reference is decremented in the event handler work,
    the work object for the work itself gets removed, and causes the use-
    after-free BUG below:
    
      BUG: KASAN: slab-use-after-free in __pwq_activate_work+0x1ff/0x250
      Read of size 8 at addr ffff88811f9cf800 by task kworker/u16:1/147091
    
      CPU: 2 UID: 0 PID: 147091 Comm: kworker/u16:1 Not tainted 6.15.0-rc2+ #27 PREEMPT(voluntary)
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
      Workqueue:  0x0 (iw_cm_wq)
      Call Trace:
       <TASK>
       dump_stack_lvl+0x6a/0x90
       print_report+0x174/0x554
       ? __virt_addr_valid+0x208/0x430
       ? __pwq_activate_work+0x1ff/0x250
       kasan_report+0xae/0x170
       ? __pwq_activate_work+0x1ff/0x250
       __pwq_activate_work+0x1ff/0x250
       pwq_dec_nr_in_flight+0x8c5/0xfb0
       process_one_work+0xc11/0x1460
       ? __pfx_process_one_work+0x10/0x10
       ? assign_work+0x16c/0x240
       worker_thread+0x5ef/0xfd0
       ? __pfx_worker_thread+0x10/0x10
       kthread+0x3b0/0x770
       ? __pfx_kthread+0x10/0x10
       ? rcu_is_watching+0x11/0xb0
       ? _raw_spin_unlock_irq+0x24/0x50
       ? rcu_is_watching+0x11/0xb0
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x30/0x70
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1a/0x30
       </TASK>
    
      Allocated by task 147416:
       kasan_save_stack+0x2c/0x50
       kasan_save_track+0x10/0x30
       __kasan_kmalloc+0xa6/0xb0
       alloc_work_entries+0xa9/0x260 [iw_cm]
       iw_cm_connect+0x23/0x4a0 [iw_cm]
       rdma_connect_locked+0xbfd/0x1920 [rdma_cm]
       nvme_rdma_cm_handler+0x8e5/0x1b60 [nvme_rdma]
       cma_cm_event_handler+0xae/0x320 [rdma_cm]
       cma_work_handler+0x106/0x1b0 [rdma_cm]
       process_one_work+0x84f/0x1460
       worker_thread+0x5ef/0xfd0
       kthread+0x3b0/0x770
       ret_from_fork+0x30/0x70
       ret_from_fork_asm+0x1a/0x30
    
      Freed by task 147091:
       kasan_save_stack+0x2c/0x50
       kasan_save_track+0x10/0x30
       kasan_save_free_info+0x37/0x60
       __kasan_slab_free+0x4b/0x70
       kfree+0x13a/0x4b0
       dealloc_work_entries+0x125/0x1f0 [iw_cm]
       iwcm_deref_id+0x6f/0xa0 [iw_cm]
       cm_work_handler+0x136/0x1ba0 [iw_cm]
       process_one_work+0x84f/0x1460
       worker_thread+0x5ef/0xfd0
       kthread+0x3b0/0x770
       ret_from_fork+0x30/0x70
       ret_from_fork_asm+0x1a/0x30
    
      Last potentially related work creation:
       kasan_save_stack+0x2c/0x50
       kasan_record_aux_stack+0xa3/0xb0
       __queue_work+0x2ff/0x1390
       queue_work_on+0x67/0xc0
       cm_event_handler+0x46a/0x820 [iw_cm]
       siw_cm_upcall+0x330/0x650 [siw]
       siw_cm_work_handler+0x6b9/0x2b20 [siw]
       process_one_work+0x84f/0x1460
       worker_thread+0x5ef/0xfd0
       kthread+0x3b0/0x770
       ret_from_fork+0x30/0x70
       ret_from_fork_asm+0x1a/0x30
    
    This BUG is reproducible by repeating the blktests test case nvme/061
    for the rdma transport and the siw driver.
    
    To avoid the use-after-free of cm_id_private work objects, ensure that
    the last reference to the cm_id is decremented not in the event handler
    works, but in the cm_id destruction context. For that purpose, move
    iwcm_deref_id() call from destroy_cm_id() to the callers of
    destroy_cm_id(). In iw_destroy_cm_id(), call iwcm_deref_id() after
    flushing the pending works.
    
    During the fix work, I noticed that iw_destroy_cm_id() is called from
    cm_work_handler() and process_event() context. However, the comment of
    iw_destroy_cm_id() notes that the function "cannot be called by the
    event thread". Drop the false comment.
    
    Closes: https://lore.kernel.org/linux-rdma/r5676e754sv35aq7cdsqrlnvyhiq5zktteaurl7vmfih35efko@z6lay7uypy3c/
    Fixes: 59c68ac31e15 ("iw_cm: free cm_id resources on the last deref")
    Cc: [email protected]
    Signed-off-by: Shin'ichiro Kawasaki <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Zhu Yanjun <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/mlx5: Fix CC counters query for MPV [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Mon Jun 16 12:14:53 2025 +0300

    RDMA/mlx5: Fix CC counters query for MPV
    
    [ Upstream commit acd245b1e33fc4b9d0f2e3372021d632f7ee0652 ]
    
    In case, CC counters are querying for the second port use the correct
    core device for the query instead of always using the master core device.
    
    Fixes: aac4492ef23a ("IB/mlx5: Update counter implementation for dual port RoCE")
    Signed-off-by: Patrisious Haddad <[email protected]>
    Reviewed-by: Michael Guralnik <[email protected]>
    Link: https://patch.msgid.link/9cace74dcf106116118bebfa9146d40d4166c6b0.1750064969.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/mlx5: Fix vport loopback for MPV device [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Sat Jul 12 04:37:18 2025 -0400

    RDMA/mlx5: Fix vport loopback for MPV device
    
    [ Upstream commit a9a9e68954f29b1e197663f76289db4879fd51bb ]
    
    Always enable vport loopback for both MPV devices on driver start.
    
    Previously in some cases related to MPV RoCE, packets weren't correctly
    executing loopback check at vport in FW, since it was disabled.
    Due to complexity of identifying such cases for MPV always enable vport
    loopback for both GVMIs when binding the slave to the master port.
    
    Fixes: 0042f9e458a5 ("RDMA/mlx5: Enable vport loopback when user context or QP mandate")
    Signed-off-by: Patrisious Haddad <[email protected]>
    Reviewed-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/d4298f5ebb2197459e9e7221c51ecd6a34699847.1750064969.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RDMA/mlx5: Initialize obj_event->obj_sub_list before xa_insert [+ + +]
Author: Mark Zhang <[email protected]>
Date:   Tue Jun 17 11:13:55 2025 +0300

    RDMA/mlx5: Initialize obj_event->obj_sub_list before xa_insert
    
    [ Upstream commit 8edab8a72d67742f87e9dc2e2b0cdfddda5dc29a ]
    
    The obj_event may be loaded immediately after inserted, then if the
    list_head is not initialized then we may get a poisonous pointer.  This
    fixes the crash below:
    
     mlx5_core 0000:03:00.0: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0 enhanced)
     mlx5_core.sf mlx5_core.sf.4: firmware version: 32.38.3056
     mlx5_core 0000:03:00.0 en3f0pf0sf2002: renamed from eth0
     mlx5_core.sf mlx5_core.sf.4: Rate limit: 127 rates are supported, range: 0Mbps to 195312Mbps
     IPv6: ADDRCONF(NETDEV_CHANGE): en3f0pf0sf2002: link becomes ready
     Unable to handle kernel NULL pointer dereference at virtual address 0000000000000060
     Mem abort info:
       ESR = 0x96000006
       EC = 0x25: DABT (current EL), IL = 32 bits
       SET = 0, FnV = 0
       EA = 0, S1PTW = 0
     Data abort info:
       ISV = 0, ISS = 0x00000006
       CM = 0, WnR = 0
     user pgtable: 4k pages, 48-bit VAs, pgdp=00000007760fb000
     [0000000000000060] pgd=000000076f6d7003, p4d=000000076f6d7003, pud=0000000777841003, pmd=0000000000000000
     Internal error: Oops: 96000006 [#1] SMP
     Modules linked in: ipmb_host(OE) act_mirred(E) cls_flower(E) sch_ingress(E) mptcp_diag(E) udp_diag(E) raw_diag(E) unix_diag(E) tcp_diag(E) inet_diag(E) binfmt_misc(E) bonding(OE) rdma_ucm(OE) rdma_cm(OE) iw_cm(OE) ib_ipoib(OE) ib_cm(OE) isofs(E) cdrom(E) mst_pciconf(OE) ib_umad(OE) mlx5_ib(OE) ipmb_dev_int(OE) mlx5_core(OE) kpatch_15237886(OEK) mlxdevm(OE) auxiliary(OE) ib_uverbs(OE) ib_core(OE) psample(E) mlxfw(OE) tls(E) sunrpc(E) vfat(E) fat(E) crct10dif_ce(E) ghash_ce(E) sha1_ce(E) sbsa_gwdt(E) virtio_console(E) ext4(E) mbcache(E) jbd2(E) xfs(E) libcrc32c(E) mmc_block(E) virtio_net(E) net_failover(E) failover(E) sha2_ce(E) sha256_arm64(E) nvme(OE) nvme_core(OE) gpio_mlxbf3(OE) mlx_compat(OE) mlxbf_pmc(OE) i2c_mlxbf(OE) sdhci_of_dwcmshc(OE) pinctrl_mlxbf3(OE) mlxbf_pka(OE) gpio_generic(E) i2c_core(E) mmc_core(E) mlxbf_gige(OE) vitesse(E) pwr_mlxbf(OE) mlxbf_tmfifo(OE) micrel(E) mlxbf_bootctl(OE) virtio_ring(E) virtio(E) ipmi_devintf(E) ipmi_msghandler(E)
      [last unloaded: mst_pci]
     CPU: 11 PID: 20913 Comm: rte-worker-11 Kdump: loaded Tainted: G           OE K   5.10.134-13.1.an8.aarch64 #1
     Hardware name: https://www.mellanox.com BlueField-3 SmartNIC Main Card/BlueField-3 SmartNIC Main Card, BIOS 4.2.2.12968 Oct 26 2023
     pstate: a0400089 (NzCv daIf +PAN -UAO -TCO BTYPE=--)
     pc : dispatch_event_fd+0x68/0x300 [mlx5_ib]
     lr : devx_event_notifier+0xcc/0x228 [mlx5_ib]
     sp : ffff80001005bcf0
     x29: ffff80001005bcf0 x28: 0000000000000001
     x27: ffff244e0740a1d8 x26: ffff244e0740a1d0
     x25: ffffda56beff5ae0 x24: ffffda56bf911618
     x23: ffff244e0596a480 x22: ffff244e0596a480
     x21: ffff244d8312ad90 x20: ffff244e0596a480
     x19: fffffffffffffff0 x18: 0000000000000000
     x17: 0000000000000000 x16: ffffda56be66d620
     x15: 0000000000000000 x14: 0000000000000000
     x13: 0000000000000000 x12: 0000000000000000
     x11: 0000000000000040 x10: ffffda56bfcafb50
     x9 : ffffda5655c25f2c x8 : 0000000000000010
     x7 : 0000000000000000 x6 : ffff24545a2e24b8
     x5 : 0000000000000003 x4 : ffff80001005bd28
     x3 : 0000000000000000 x2 : 0000000000000000
     x1 : ffff244e0596a480 x0 : ffff244d8312ad90
     Call trace:
      dispatch_event_fd+0x68/0x300 [mlx5_ib]
      devx_event_notifier+0xcc/0x228 [mlx5_ib]
      atomic_notifier_call_chain+0x58/0x80
      mlx5_eq_async_int+0x148/0x2b0 [mlx5_core]
      atomic_notifier_call_chain+0x58/0x80
      irq_int_handler+0x20/0x30 [mlx5_core]
      __handle_irq_event_percpu+0x60/0x220
      handle_irq_event_percpu+0x3c/0x90
      handle_irq_event+0x58/0x158
      handle_fasteoi_irq+0xfc/0x188
      generic_handle_irq+0x34/0x48
      ...
    
    Fixes: 759738537142 ("IB/mlx5: Enable subscription for device events over DEVX")
    Link: https://patch.msgid.link/r/3ce7f20e0d1a03dc7de6e57494ec4b8eaf1f05c2.1750147949.git.leon@kernel.org
    Signed-off-by: Mark Zhang <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regulator: gpio: Add input_supply support in gpio_regulator_config [+ + +]
Author: Jerome Neanne <[email protected]>
Date:   Thu Sep 29 15:25:25 2022 +0200

    regulator: gpio: Add input_supply support in gpio_regulator_config
    
    [ Upstream commit adfdfcbdbd32b356323a3db6d3a683270051a7e6 ]
    
    This is simillar as fixed-regulator.
    Used to extract regulator parent from the device tree.
    
    Without that property used, the parent regulator can be shut down (if not an always on).
    Thus leading to inappropriate behavior:
    On am62-SP-SK this fix is required to avoid tps65219 ldo1 (SDMMC rail) to be shut down after boot completion.
    
    Signed-off-by: Jerome Neanne <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: c9764fd88bc7 ("regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods")
    Signed-off-by: Sasha Levin <[email protected]>

regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods [+ + +]
Author: Manivannan Sadhasivam <[email protected]>
Date:   Thu Jul 3 16:05:49 2025 +0530

    regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods
    
    [ Upstream commit c9764fd88bc744592b0604ccb6b6fc1a5f76b4e3 ]
    
    drvdata::gpiods is supposed to hold an array of 'gpio_desc' pointers. But
    the memory is allocated for only one pointer. This will lead to
    out-of-bounds access later in the code if 'config::ngpios' is > 1. So
    fix the code to allocate enough memory to hold 'config::ngpios' of GPIO
    descriptors.
    
    While at it, also move the check for memory allocation failure to be below
    the allocation to make it more readable.
    
    Cc: [email protected] # 5.0
    Fixes: d6cd33ad7102 ("regulator: gpio: Convert to use descriptors")
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "ACPI: battery: negate current when discharging" [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Thu Jul 3 12:54:55 2025 +0200

    Revert "ACPI: battery: negate current when discharging"
    
    commit de1675de39aa945bad5937d1fde4df3682670639 upstream.
    
    Revert commit 234f71555019 ("ACPI: battery: negate current when
    discharging") breaks not one but several userspace implementations
    of battery monitoring: Steam and MangoHud. Perhaps it breaks more,
    but those are the two that have been tested.
    
    Reported-by: Matthew Schwartz <[email protected]>
    Closes: https://lore.kernel.org/linux-acpi/[email protected]/
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "mmc: sdhci: Disable SD card clock before changing parameters" [+ + +]
Author: Ulf Hansson <[email protected]>
Date:   Tue Jun 24 13:09:32 2025 +0200

    Revert "mmc: sdhci: Disable SD card clock before changing parameters"
    
    commit dcc3bcfc5b50c625b475dcc25d167b6b947a6637 upstream.
    
    It has turned out the trying to strictly conform to the SDHCI specification
    is causing problems. Let's revert and start over.
    
    This reverts commit fb3bbc46c94f261b6156ee863c1b06c84cf157dc.
    
    Cc: Erick Shepherd <[email protected]>
    Cc: [email protected]
    Fixes: fb3bbc46c94f ("mmc: sdhci: Disable SD card clock before changing parameters")
    Suggested-by: Adrian Hunter <[email protected]>
    Reported-by: Jonathan Liu <[email protected]>
    Reported-by: Salvatore Bonaccorso <[email protected]>
    Closes: https://bugs.debian.org/1108065
    Acked-by: Adrian Hunter <[email protected]>
    Signed-off-by: Ulf Hansson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rose: fix dangling neighbour pointers in rose_rt_device_down() [+ + +]
Author: Kohei Enju <[email protected]>
Date:   Sun Jun 29 12:06:31 2025 +0900

    rose: fix dangling neighbour pointers in rose_rt_device_down()
    
    [ Upstream commit 34a500caf48c47d5171f4aa1f237da39b07c6157 ]
    
    There are two bugs in rose_rt_device_down() that can cause
    use-after-free:
    
    1. The loop bound `t->count` is modified within the loop, which can
       cause the loop to terminate early and miss some entries.
    
    2. When removing an entry from the neighbour array, the subsequent entries
       are moved up to fill the gap, but the loop index `i` is still
       incremented, causing the next entry to be skipped.
    
    For example, if a node has three neighbours (A, A, B) with count=3 and A
    is being removed, the second A is not checked.
    
        i=0: (A, A, B) -> (A, B) with count=2
              ^ checked
        i=1: (A, B)    -> (A, B) with count=2
                 ^ checked (B, not A!)
        i=2: (doesn't occur because i < count is false)
    
    This leaves the second A in the array with count=2, but the rose_neigh
    structure has been freed. Code that accesses these entries assumes that
    the first `count` entries are valid pointers, causing a use-after-free
    when it accesses the dangling pointer.
    
    Fix both issues by iterating over the array in reverse order with a fixed
    loop bound. This ensures that all entries are examined and that the removal
    of an entry doesn't affect subsequent iterations.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=e04e2c007ba2c80476cb
    Tested-by: [email protected]
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kohei Enju <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rxrpc: Fix oops due to non-existence of prealloc backlog struct [+ + +]
Author: David Howells <[email protected]>
Date:   Tue Jul 8 22:15:04 2025 +0100

    rxrpc: Fix oops due to non-existence of prealloc backlog struct
    
    commit 880a88f318cf1d2a0f4c0a7ff7b07e2062b434a4 upstream.
    
    If an AF_RXRPC service socket is opened and bound, but calls are
    preallocated, then rxrpc_alloc_incoming_call() will oops because the
    rxrpc_backlog struct doesn't get allocated until the first preallocation is
    made.
    
    Fix this by returning NULL from rxrpc_alloc_incoming_call() if there is no
    backlog struct.  This will cause the incoming call to be aborted.
    
    Reported-by: Junvyyang, Tencent Zhuque Lab <[email protected]>
    Suggested-by: Junvyyang, Tencent Zhuque Lab <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    cc: LePremierHomme <[email protected]>
    cc: Marc Dionne <[email protected]>
    cc: Willy Tarreau <[email protected]>
    cc: Simon Horman <[email protected]>
    cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Wed Jan 22 19:54:27 2025 -0700

    s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS
    
    commit 3b8b80e993766dc96d1a1c01c62f5d15fafc79b9 upstream.
    
    GCC changed the default C standard dialect from gnu17 to gnu23,
    which should not have impacted the kernel because it explicitly requests
    the gnu11 standard in the main Makefile. However, there are certain
    places in the s390 code that use their own CFLAGS without a '-std='
    value, which break with this dialect change because of the kernel's own
    definitions of bool, false, and true conflicting with the C23 reserved
    keywords.
    
      include/linux/stddef.h:11:9: error: cannot use keyword 'false' as enumeration constant
         11 |         false   = 0,
            |         ^~~~~
      include/linux/stddef.h:11:9: note: 'false' is a keyword with '-std=c23' onwards
      include/linux/types.h:35:33: error: 'bool' cannot be defined via 'typedef'
         35 | typedef _Bool                   bool;
            |                                 ^~~~
      include/linux/types.h:35:33: note: 'bool' is a keyword with '-std=c23' onwards
    
    Add '-std=gnu11' to the decompressor and purgatory CFLAGS to eliminate
    these errors and make the C standard version of these areas match the
    rest of the kernel.
    
    Cc: [email protected]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Tested-by: Heiko Carstens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
scsi: qla4xxx: Fix missing DMA mapping error in qla4xxx_alloc_pdu() [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Wed Jun 18 09:17:37 2025 +0200

    scsi: qla4xxx: Fix missing DMA mapping error in qla4xxx_alloc_pdu()
    
    [ Upstream commit 00f452a1b084efbe8dcb60a29860527944a002a1 ]
    
    dma_map_XXX() can fail and should be tested for errors with
    dma_mapping_error().
    
    Fixes: b3a271a94d00 ("[SCSI] qla4xxx: support iscsiadm session mgmt")
    Signed-off-by: Thomas Fourier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: ufs: core: Fix spelling of a sysfs attribute name [+ + +]
Author: Bart Van Assche <[email protected]>
Date:   Mon Jul 7 13:26:05 2025 -0400

    scsi: ufs: core: Fix spelling of a sysfs attribute name
    
    [ Upstream commit 021f243627ead17eb6500170256d3d9be787dad8 ]
    
    Change "resourse" into "resource" in the name of a sysfs attribute.
    
    Fixes: d829fc8a1058 ("scsi: ufs: sysfs: unit descriptor")
    Signed-off-by: Bart Van Assche <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Avri Altman <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: spi-fsl-dspi: Clear completion counter before initiating transfer [+ + +]
Author: James Clark <[email protected]>
Date:   Fri Jun 27 11:21:37 2025 +0100

    spi: spi-fsl-dspi: Clear completion counter before initiating transfer
    
    [ Upstream commit fa60c094c19b97e103d653f528f8d9c178b6a5f5 ]
    
    In target mode, extra interrupts can be received between the end of a
    transfer and halting the module if the host continues sending more data.
    If the interrupt from this occurs after the reinit_completion() then the
    completion counter is left at a non-zero value. The next unrelated
    transfer initiated by userspace will then complete immediately without
    waiting for the interrupt or writing to the RX buffer.
    
    Fix it by resetting the counter before the transfer so that lingering
    values are cleared. This is done after clearing the FIFOs and the
    status register but before the transfer is initiated, so no interrupts
    should be received at this point resulting in other race conditions.
    
    Fixes: 4f5ee75ea171 ("spi: spi-fsl-dspi: Replace interruptible wait queue with a simple completion")
    Signed-off-by: James Clark <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-fsl-dspi: Fix interrupt-less DMA mode taking an XSPI code path [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Wed Mar 18 02:15:59 2020 +0200

    spi: spi-fsl-dspi: Fix interrupt-less DMA mode taking an XSPI code path
    
    [ Upstream commit 826b3a6a34619b934cdc33eeb961fcb99ce92c09 ]
    
    Interrupts are not necessary for DMA functionality, since the completion
    event is provided by the DMA driver.
    
    But if the driver fails to request the IRQ defined in the device tree,
    it will call dspi_poll which would make the driver hang waiting for data
    to become available in the RX FIFO.
    
    Fixes: c55be3059159 ("spi: spi-fsl-dspi: Use poll mode in case the platform IRQ is missing")
    Signed-off-by: Vladimir Oltean <[email protected]>
    Tested-by: Michael Walle <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: fa60c094c19b ("spi: spi-fsl-dspi: Clear completion counter before initiating transfer")
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-fsl-dspi: Rename fifo_{read,write} and {tx,cmd}_fifo_write [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Thu Mar 5 00:00:37 2020 +0200

    spi: spi-fsl-dspi: Rename fifo_{read,write} and {tx,cmd}_fifo_write
    
    [ Upstream commit 547248fbed23f3cd2f6a5937b44fad60993640c4 ]
    
    These function names are very generic and it is easy to get confused.
    Rename them after the hardware register that they are accessing.
    
    Signed-off-by: Vladimir Oltean <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: fa60c094c19b ("spi: spi-fsl-dspi: Clear completion counter before initiating transfer")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
tipc: Fix use-after-free in tipc_conn_close(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Wed Jul 2 01:43:40 2025 +0000

    tipc: Fix use-after-free in tipc_conn_close().
    
    [ Upstream commit 667eeab4999e981c96b447a4df5f20bdf5c26f13 ]
    
    syzbot reported a null-ptr-deref in tipc_conn_close() during netns
    dismantle. [0]
    
    tipc_topsrv_stop() iterates tipc_net(net)->topsrv->conn_idr and calls
    tipc_conn_close() for each tipc_conn.
    
    The problem is that tipc_conn_close() is called after releasing the
    IDR lock.
    
    At the same time, there might be tipc_conn_recv_work() running and it
    could call tipc_conn_close() for the same tipc_conn and release its
    last ->kref.
    
    Once we release the IDR lock in tipc_topsrv_stop(), there is no
    guarantee that the tipc_conn is alive.
    
    Let's hold the ref before releasing the lock and put the ref after
    tipc_conn_close() in tipc_topsrv_stop().
    
    [0]:
    BUG: KASAN: use-after-free in tipc_conn_close+0x122/0x140 net/tipc/topsrv.c:165
    Read of size 8 at addr ffff888099305a08 by task kworker/u4:3/435
    
    CPU: 0 PID: 435 Comm: kworker/u4:3 Not tainted 4.19.204-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: netns cleanup_net
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1fc/0x2ef lib/dump_stack.c:118
     print_address_description.cold+0x54/0x219 mm/kasan/report.c:256
     kasan_report_error.cold+0x8a/0x1b9 mm/kasan/report.c:354
     kasan_report mm/kasan/report.c:412 [inline]
     __asan_report_load8_noabort+0x88/0x90 mm/kasan/report.c:433
     tipc_conn_close+0x122/0x140 net/tipc/topsrv.c:165
     tipc_topsrv_stop net/tipc/topsrv.c:701 [inline]
     tipc_topsrv_exit_net+0x27b/0x5c0 net/tipc/topsrv.c:722
     ops_exit_list+0xa5/0x150 net/core/net_namespace.c:153
     cleanup_net+0x3b4/0x8b0 net/core/net_namespace.c:553
     process_one_work+0x864/0x1570 kernel/workqueue.c:2153
     worker_thread+0x64c/0x1130 kernel/workqueue.c:2296
     kthread+0x33f/0x460 kernel/kthread.c:259
     ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415
    
    Allocated by task 23:
     kmem_cache_alloc_trace+0x12f/0x380 mm/slab.c:3625
     kmalloc include/linux/slab.h:515 [inline]
     kzalloc include/linux/slab.h:709 [inline]
     tipc_conn_alloc+0x43/0x4f0 net/tipc/topsrv.c:192
     tipc_topsrv_accept+0x1b5/0x280 net/tipc/topsrv.c:470
     process_one_work+0x864/0x1570 kernel/workqueue.c:2153
     worker_thread+0x64c/0x1130 kernel/workqueue.c:2296
     kthread+0x33f/0x460 kernel/kthread.c:259
     ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415
    
    Freed by task 23:
     __cache_free mm/slab.c:3503 [inline]
     kfree+0xcc/0x210 mm/slab.c:3822
     tipc_conn_kref_release net/tipc/topsrv.c:150 [inline]
     kref_put include/linux/kref.h:70 [inline]
     conn_put+0x2cd/0x3a0 net/tipc/topsrv.c:155
     process_one_work+0x864/0x1570 kernel/workqueue.c:2153
     worker_thread+0x64c/0x1130 kernel/workqueue.c:2296
     kthread+0x33f/0x460 kernel/kthread.c:259
     ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415
    
    The buggy address belongs to the object at ffff888099305a00
     which belongs to the cache kmalloc-512 of size 512
    The buggy address is located 8 bytes inside of
     512-byte region [ffff888099305a00, ffff888099305c00)
    The buggy address belongs to the page:
    page:ffffea000264c140 count:1 mapcount:0 mapping:ffff88813bff0940 index:0x0
    flags: 0xfff00000000100(slab)
    raw: 00fff00000000100 ffffea00028b6b88 ffffea0002cd2b08 ffff88813bff0940
    raw: 0000000000000000 ffff888099305000 0000000100000006 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888099305900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff888099305980: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff888099305a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                          ^
     ffff888099305a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff888099305b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    
    Fixes: c5fa7b3cf3cb ("tipc: introduce new TIPC server infrastructure")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=27169a847a70550d17be
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Tung Nguyen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

    usb: Add checks for snprintf() calls in usb_alloc_dev()
    
    [ Upstream commit 82fe5107fa3d21d6c3fba091c9dbc50495588630 ]
    
    When creating a device path in the driver the snprintf() takes
    up to 16 characters long argument along with the additional up to
    12 characters for the signed integer (as it can't see the actual limits)
    and tries to pack this into 16 bytes array. GCC complains about that
    when build with `make W=1`:
    
      drivers/usb/core/usb.c:705:25: note: ‘snprintf’ output between 3 and 28 bytes into a destination of size 16
    
    Since everything works until now, let's just check for the potential
    buffer overflow and bail out. It is most likely a never happen situation,
    but at least it makes GCC happy.
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: cdc-wdm: avoid setting WDM_READ for ZLP-s [+ + +]
Author: Robert Hodaszi <[email protected]>
Date:   Thu Apr 3 16:40:04 2025 +0200

    usb: cdc-wdm: avoid setting WDM_READ for ZLP-s
    
    [ Upstream commit 387602d8a75574fafb451b7a8215e78dfd67ee63 ]
    
    Don't set WDM_READ flag in wdm_in_callback() for ZLP-s, otherwise when
    userspace tries to poll for available data, it might - incorrectly -
    believe there is something available, and when it tries to non-blocking
    read it, it might get stuck in the read loop.
    
    For example this is what glib does for non-blocking read (briefly):
    
      1. poll()
      2. if poll returns with non-zero, starts a read data loop:
        a. loop on poll() (EINTR disabled)
        b. if revents was set, reads data
          I. if read returns with EINTR or EAGAIN, goto 2.a.
          II. otherwise return with data
    
    So if ZLP sets WDM_READ (#1), we expect data, and try to read it (#2).
    But as that was a ZLP, and we are doing non-blocking read, wdm_read()
    returns with EAGAIN (#2.b.I), so loop again, and try to read again
    (#2.a.).
    
    With glib, we might stuck in this loop forever, as EINTR is disabled
    (#2.a).
    
    Signed-off-by: Robert Hodaszi <[email protected]>
    Acked-by: Oliver Neukum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: gadget: u_serial: Fix race condition in TTY wakeup [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Tue Jun 17 13:07:12 2025 +0800

    usb: gadget: u_serial: Fix race condition in TTY wakeup
    
    commit c529c3730bd09115684644e26bf01ecbd7e2c2c9 upstream.
    
    A race condition occurs when gs_start_io() calls either gs_start_rx() or
    gs_start_tx(), as those functions briefly drop the port_lock for
    usb_ep_queue(). This allows gs_close() and gserial_disconnect() to clear
    port.tty and port_usb, respectively.
    
    Use the null-safe TTY Port helper function to wake up TTY.
    
    Example
      CPU1:                       CPU2:
      gserial_connect() // lock
                                  gs_close() // await lock
      gs_start_rx()     // unlock
      usb_ep_queue()
                                  gs_close() // lock, reset port.tty and unlock
      gs_start_rx()     // lock
      tty_wakeup()      // NPE
    
    Fixes: 35f95fd7f234 ("TTY: usb/u_serial, use tty from tty_port")
    Cc: stable <[email protected]>
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Reviewed-by: Prashanth K <[email protected]>
    Link: https://lore.kernel.org/linux-usb/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: potential integer overflow in usbg_make_tpg() [+ + +]
Author: Chen Yufeng <[email protected]>
Date:   Tue Apr 15 14:58:57 2025 +0800

    usb: potential integer overflow in usbg_make_tpg()
    
    [ Upstream commit 153874010354d050f62f8ae25cbb960c17633dc5 ]
    
    The variable tpgt in usbg_make_tpg() is defined as unsigned long and is
    assigned to tpgt->tport_tpgt, which is defined as u16. This may cause an
    integer overflow when tpgt is greater than USHRT_MAX (65535). I
    haven't tried to trigger it myself, but it is possible to trigger it
    by calling usbg_make_tpg() with a large value for tpgt.
    
    I modified the type of tpgt to match tpgt->tport_tpgt and adjusted the
    relevant code accordingly.
    
    This patch is similar to commit 59c816c1f24d ("vhost/scsi: potential
    memory corruption").
    
    Signed-off-by: Chen Yufeng <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: typec: altmodes/displayport: do not index invalid pin_assignments [+ + +]
Author: RD Babiera <[email protected]>
Date:   Wed Jun 18 22:49:42 2025 +0000

    usb: typec: altmodes/displayport: do not index invalid pin_assignments
    
    commit af4db5a35a4ef7a68046883bfd12468007db38f1 upstream.
    
    A poorly implemented DisplayPort Alt Mode port partner can indicate
    that its pin assignment capabilities are greater than the maximum
    value, DP_PIN_ASSIGN_F. In this case, calls to pin_assignment_show
    will cause a BRK exception due to an out of bounds array access.
    
    Prevent for loop in pin_assignment_show from accessing
    invalid values in pin_assignments by adding DP_PIN_ASSIGN_MAX
    value in typec_dp.h and using i < DP_PIN_ASSIGN_MAX as a loop
    condition.
    
    Fixes: 0e3bb7d6894d ("usb: typec: Add driver for DisplayPort alternate mode")
    Cc: stable <[email protected]>
    Signed-off-by: RD Babiera <[email protected]>
    Reviewed-by: Badhri Jagan Sridharan <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: typec: displayport: Fix potential deadlock [+ + +]
Author: Andrei Kuchynski <[email protected]>
Date:   Tue Jun 24 13:32:46 2025 +0000

    usb: typec: displayport: Fix potential deadlock
    
    commit 099cf1fbb8afc3771f408109f62bdec66f85160e upstream.
    
    The deadlock can occur due to a recursive lock acquisition of
    `cros_typec_altmode_data::mutex`.
    The call chain is as follows:
    1. cros_typec_altmode_work() acquires the mutex
    2. typec_altmode_vdm() -> dp_altmode_vdm() ->
    3. typec_altmode_exit() -> cros_typec_altmode_exit()
    4. cros_typec_altmode_exit() attempts to acquire the mutex again
    
    To prevent this, defer the `typec_altmode_exit()` call by scheduling
    it rather than calling it directly from within the mutex-protected
    context.
    
    Cc: stable <[email protected]>
    Fixes: b4b38ffb38c9 ("usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode")
    Signed-off-by: Andrei Kuchynski <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode [+ + +]
Author: Jos Wang <[email protected]>
Date:   Sun Feb 9 15:19:26 2025 +0800

    usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode
    
    [ Upstream commit b4b38ffb38c91afd4dc387608db26f6fc34ed40b ]
    
    Although some Type-C DRD devices that do not support the DP Sink
    function (such as Huawei Mate 40Pro), the Source Port initiates
    Enter Mode CMD, but the device responds to Enter Mode ACK, the
    Source port then initiates DP Status Update CMD, and the device
    responds to DP Status Update NAK.
    
    As PD2.0 spec ("6.4.4.3.4 Enter Mode Command"),A DR_Swap Message
    Shall Not be sent during Modal Operation between the Port Partners.
    At this time, the source port initiates DR_Swap message through the
    "echo device > /sys/class/typec/port0/data_role" command to switch
    the data role from host to device. The device will initiate a Hard
    Reset for recovery, resulting in the failure of data role swap.
    
    Therefore, when DP Status Update NAK is received, Exit Mode CMD is
    initiated to exit the currently entered DP altmode.
    
    Signed-off-by: Jos Wang <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
VMCI: check context->notify_page after call to get_user_pages_fast() to avoid GPF [+ + +]
Author: George Kennedy <[email protected]>
Date:   Mon Nov 28 15:18:25 2022 -0500

    VMCI: check context->notify_page after call to get_user_pages_fast() to avoid GPF
    
    [ Upstream commit 1a726cb47fd204109c767409fa9ca15a96328f14 ]
    
    The call to get_user_pages_fast() in vmci_host_setup_notify() can return
    NULL context->notify_page causing a GPF. To avoid GPF check if
    context->notify_page == NULL and return error if so.
    
    general protection fault, probably for non-canonical address
        0xe0009d1000000060: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: maybe wild-memory-access in range [0x0005088000000300-
        0x0005088000000307]
    CPU: 2 PID: 26180 Comm: repro_34802241 Not tainted 6.1.0-rc4 #1
    Hardware name: Red Hat KVM, BIOS 1.15.0-2.module+el8.6.0 04/01/2014
    RIP: 0010:vmci_ctx_check_signal_notify+0x91/0xe0
    Call Trace:
     <TASK>
     vmci_host_unlocked_ioctl+0x362/0x1f40
     __x64_sys_ioctl+0x1a1/0x230
     do_syscall_64+0x3a/0x90
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Fixes: a1d88436d53a ("VMCI: Fix two UVA mapping bugs")
    Reported-by: syzkaller <[email protected]>
    Signed-off-by: George Kennedy <[email protected]>
    Reviewed-by: Vishnu Dasa <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 1bd6406fb5f3 ("VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify")
    Signed-off-by: Sasha Levin <[email protected]>

VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify [+ + +]
Author: Wupeng Ma <[email protected]>
Date:   Sat May 10 11:30:40 2025 +0800

    VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify
    
    [ Upstream commit 1bd6406fb5f36c2bb1e96e27d4c3e9f4d09edde4 ]
    
    During our test, it is found that a warning can be trigger in try_grab_folio
    as follow:
    
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 1678 at mm/gup.c:147 try_grab_folio+0x106/0x130
      Modules linked in:
      CPU: 0 UID: 0 PID: 1678 Comm: syz.3.31 Not tainted 6.15.0-rc5 #163 PREEMPT(undef)
      RIP: 0010:try_grab_folio+0x106/0x130
      Call Trace:
       <TASK>
       follow_huge_pmd+0x240/0x8e0
       follow_pmd_mask.constprop.0.isra.0+0x40b/0x5c0
       follow_pud_mask.constprop.0.isra.0+0x14a/0x170
       follow_page_mask+0x1c2/0x1f0
       __get_user_pages+0x176/0x950
       __gup_longterm_locked+0x15b/0x1060
       ? gup_fast+0x120/0x1f0
       gup_fast_fallback+0x17e/0x230
       get_user_pages_fast+0x5f/0x80
       vmci_host_unlocked_ioctl+0x21c/0xf80
      RIP: 0033:0x54d2cd
      ---[ end trace 0000000000000000 ]---
    
    Digging into the source, context->notify_page may init by get_user_pages_fast
    and can be seen in vmci_ctx_unset_notify which will try to put_page. However
    get_user_pages_fast is not finished here and lead to following
    try_grab_folio warning. The race condition is shown as follow:
    
    cpu0                    cpu1
    vmci_host_do_set_notify
    vmci_host_setup_notify
    get_user_pages_fast(uva, 1, FOLL_WRITE, &context->notify_page);
    lockless_pages_from_mm
    gup_pgd_range
    gup_huge_pmd  // update &context->notify_page
                            vmci_host_do_set_notify
                            vmci_ctx_unset_notify
                            notify_page = context->notify_page;
                            if (notify_page)
                            put_page(notify_page);  // page is freed
    __gup_longterm_locked
    __get_user_pages
    follow_trans_huge_pmd
    try_grab_folio // warn here
    
    To slove this, use local variable page to make notify_page can be seen
    after finish get_user_pages_fast.
    
    Fixes: a1d88436d53a ("VMCI: Fix two UVA mapping bugs")
    Cc: stable <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Wupeng Ma <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
vsock/vmci: Clear the vmci transport packet properly when initializing it [+ + +]
Author: HarshaVardhana S A <[email protected]>
Date:   Tue Jul 1 14:22:54 2025 +0200

    vsock/vmci: Clear the vmci transport packet properly when initializing it
    
    commit 223e2288f4b8c262a864e2c03964ffac91744cd5 upstream.
    
    In vmci_transport_packet_init memset the vmci_transport_packet before
    populating the fields to avoid any uninitialised data being left in the
    structure.
    
    Cc: Bryan Tan <[email protected]>
    Cc: Vishnu Dasa <[email protected]>
    Cc: Broadcom internal kernel review list
    Cc: Stefano Garzarella <[email protected]>
    Cc: "David S. Miller" <[email protected]>
    Cc: Eric Dumazet <[email protected]>
    Cc: Jakub Kicinski <[email protected]>
    Cc: Paolo Abeni <[email protected]>
    Cc: Simon Horman <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: stable <[email protected]>
    Signed-off-by: HarshaVardhana S A <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
    Acked-by: Stefano Garzarella <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vt: add missing notification when switching back to text mode [+ + +]
Author: Nicolas Pitre <[email protected]>
Date:   Tue Jun 10 21:41:44 2025 -0400

    vt: add missing notification when switching back to text mode
    
    [ Upstream commit ff78538e07fa284ce08cbbcb0730daa91ed16722 ]
    
    Programs using poll() on /dev/vcsa to be notified when VT changes occur
    were missing one case: the switch from gfx to text mode.
    
    Signed-off-by: Nicolas Pitre <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath6kl: remove WARN on bad firmware input [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Tue Jun 17 11:45:29 2025 +0200

    wifi: ath6kl: remove WARN on bad firmware input
    
    [ Upstream commit e7417421d89358da071fd2930f91e67c7128fbff ]
    
    If the firmware gives bad input, that's nothing to do with
    the driver's stack at this point etc., so the WARN_ON()
    doesn't add any value. Additionally, this is one of the
    top syzbot reports now. Just print a message, and as an
    added bonus, print the sizes too.
    
    Reported-by: [email protected]
    Tested-by: [email protected]
    Acked-by: Jeff Johnson <[email protected]>
    Link: https://patch.msgid.link/20250617114529.031a677a348e.I58bf1eb4ac16a82c546725ff010f3f0d2b0cca49@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: drop invalid source address OCB frames [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Mon Jun 16 17:18:38 2025 +0200

    wifi: mac80211: drop invalid source address OCB frames
    
    [ Upstream commit d1b1a5eb27c4948e8811cf4dbb05aaf3eb10700c ]
    
    In OCB, don't accept frames from invalid source addresses
    (and in particular don't try to create stations for them),
    drop the frames instead.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/r/[email protected]/
    Signed-off-by: Johannes Berg <[email protected]>
    Tested-by: [email protected]
    Link: https://patch.msgid.link/20250616171838.7433379cab5d.I47444d63c72a0bd58d2e2b67bb99e1fea37eec6f@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev() [+ + +]
Author: Daniil Dulov <[email protected]>
Date:   Thu Jun 26 14:46:19 2025 +0300

    wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev()
    
    [ Upstream commit 74b1ec9f5d627d2bdd5e5b6f3f81c23317657023 ]
    
    There is a potential NULL pointer dereference in zd_mac_tx_to_dev(). For
    example, the following is possible:
    
            T0                                      T1
    zd_mac_tx_to_dev()
      /* len == skb_queue_len(q) */
      while (len > ZD_MAC_MAX_ACK_WAITERS) {
    
                                              filter_ack()
                                                spin_lock_irqsave(&q->lock, flags);
                                                /* position == skb_queue_len(q) */
                                                for (i=1; i<position; i++)
                                                  skb = __skb_dequeue(q)
    
                                                if (mac->type == NL80211_IFTYPE_AP)
                                                  skb = __skb_dequeue(q);
                                                spin_unlock_irqrestore(&q->lock, flags);
    
        skb_dequeue() -> NULL
    
    Since there is a small gap between checking skb queue length and skb being
    unconditionally dequeued in zd_mac_tx_to_dev(), skb_dequeue() can return NULL.
    Then the pointer is passed to zd_mac_tx_status() where it is dereferenced.
    
    In order to avoid potential NULL pointer dereference due to situations like
    above, check if skb is not NULL before passing it to zd_mac_tx_status().
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 459c51ad6e1f ("zd1211rw: port to mac80211")
    Signed-off-by: Daniil Dulov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/mce/amd: Fix threshold limit reset [+ + +]
Author: Yazen Ghannam <[email protected]>
Date:   Tue Jun 24 14:15:59 2025 +0000

    x86/mce/amd: Fix threshold limit reset
    
    commit 5f6e3b720694ad771911f637a51930f511427ce1 upstream.
    
    The MCA threshold limit must be reset after servicing the interrupt.
    
    Currently, the restart function doesn't have an explicit check for this.  It
    makes some assumptions based on the current limit and what's in the registers.
    These assumptions don't always hold, so the limit won't be reset in some
    cases.
    
    Make the reset condition explicit. Either an interrupt/overflow has occurred
    or the bank is being initialized.
    
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/mce: Don't remove sysfs if thresholding sysfs init fails [+ + +]
Author: Yazen Ghannam <[email protected]>
Date:   Tue Jun 24 14:15:56 2025 +0000

    x86/mce: Don't remove sysfs if thresholding sysfs init fails
    
    commit 4c113a5b28bfd589e2010b5fc8867578b0135ed7 upstream.
    
    Currently, the MCE subsystem sysfs interface will be removed if the
    thresholding sysfs interface fails to be created. A common failure is due to
    new MCA bank types that are not recognized and don't have a short name set.
    
    The MCA thresholding feature is optional and should not break the common MCE
    sysfs interface. Also, new MCA bank types are occasionally introduced, and
    updates will be needed to recognize them. But likewise, this should not break
    the common sysfs interface.
    
    Keep the MCE sysfs interface regardless of the status of the thresholding
    sysfs interface.
    
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Qiuxu Zhuo <[email protected]>
    Reviewed-by: Tony Luck <[email protected]>
    Tested-by: Tony Luck <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

x86/mce: Make sure CMCI banks are cleared during shutdown on Intel [+ + +]
Author: JP Kobryn <[email protected]>
Date:   Fri Jun 27 10:49:35 2025 -0700

    x86/mce: Make sure CMCI banks are cleared during shutdown on Intel
    
    commit 30ad231a5029bfa16e46ce868497b1a5cdd3c24d upstream.
    
    CMCI banks are not cleared during shutdown on Intel CPUs. As a side effect,
    when a kexec is performed, CPUs coming back online are unable to
    rediscover/claim these occupied banks which breaks MCE reporting.
    
    Clear the CPU ownership during shutdown via cmci_clear() so the banks can
    be reclaimed and MCE reporting will become functional once more.
    
      [ bp: Massage commit message. ]
    
    Reported-by: Aijay Adams <[email protected]>
    Signed-off-by: JP Kobryn <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Tony Luck <[email protected]>
    Reviewed-by: Qiuxu Zhuo <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/mm: Disable hugetlb page table sharing on 32-bit [+ + +]
Author: Jann Horn <[email protected]>
Date:   Wed Jul 2 10:32:04 2025 +0200

    x86/mm: Disable hugetlb page table sharing on 32-bit
    
    commit 76303ee8d54bff6d9a6d55997acd88a6c2ba63cf upstream.
    
    Only select ARCH_WANT_HUGE_PMD_SHARE on 64-bit x86.
    Page table sharing requires at least three levels because it involves
    shared references to PMD tables; 32-bit x86 has either two-level paging
    (without PAE) or three-level paging (with PAE), but even with
    three-level paging, having a dedicated PGD entry for hugetlb is only
    barely possible (because the PGD only has four entries), and it seems
    unlikely anyone's actually using PMD sharing on 32-bit.
    
    Having ARCH_WANT_HUGE_PMD_SHARE enabled on non-PAE 32-bit X86 (which
    has 2-level paging) became particularly problematic after commit
    59d9094df3d7 ("mm: hugetlb: independent PMD page table shared count"),
    since that changes `struct ptdesc` such that the `pt_mm` (for PGDs) and
    the `pt_share_count` (for PMDs) share the same union storage - and with
    2-level paging, PMDs are PGDs.
    
    (For comparison, arm64 also gates ARCH_WANT_HUGE_PMD_SHARE on the
    configuration of page tables such that it is never enabled with 2-level
    paging.)
    
    Closes: https://lore.kernel.org/r/[email protected]
    Fixes: cfe28c5d63d8 ("x86: mm: Remove x86 version of huge_pmd_share.")
    Reported-by: Vitaly Chikunov <[email protected]>
    Suggested-by: Dave Hansen <[email protected]>
    Signed-off-by: Jann Horn <[email protected]>
    Signed-off-by: Dave Hansen <[email protected]>
    Acked-by: Oscar Salvador <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Tested-by: Vitaly Chikunov <[email protected]>
    Cc:[email protected]
    Link: https://lore.kernel.org/all/20250702-x86-2level-hugetlb-v2-1-1a98096edf92%40google.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>