Changelog in Linux kernel 5.15.189

 
aoe: avoid potential deadlock at set_capacity [+ + +]
Author: Maksim Kiselev <[email protected]>
Date:   Wed Jan 24 10:24:36 2024 +0300

    aoe: avoid potential deadlock at set_capacity
    
    commit e169bd4fb2b36c4b2bee63c35c740c85daeb2e86 upstream.
    
    Move set_capacity() outside of the section procected by (&d->lock).
    To avoid possible interrupt unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
    [1] lock(&bdev->bd_size_lock);
                                    local_irq_disable();
                                [2] lock(&d->lock);
                                [3] lock(&bdev->bd_size_lock);
       <Interrupt>
    [4]  lock(&d->lock);
    
      *** DEADLOCK ***
    
    Where [1](&bdev->bd_size_lock) hold by zram_add()->set_capacity().
    [2]lock(&d->lock) hold by aoeblk_gdalloc(). And aoeblk_gdalloc()
    is trying to acquire [3](&bdev->bd_size_lock) at set_capacity() call.
    In this situation an attempt to acquire [4]lock(&d->lock) from
    aoecmd_cfg_rsp() will lead to deadlock.
    
    So the simplest solution is breaking lock dependency
    [2](&d->lock) -> [3](&bdev->bd_size_lock) by moving set_capacity()
    outside.
    
    Signed-off-by: Maksim Kiselev <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    [ Larry: backport to 5.15.y. Minor conflict resolved due to missing commit d9c2bd252a457
      aoe: add error handling support for add_disk() ]
    Signed-off-by: Larry Bassel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode [+ + +]
Author: Shengjiu Wang <[email protected]>
Date:   Wed Jun 25 10:05:04 2025 +0800

    ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode
    
    [ Upstream commit cbe876121633dadb2b0ce52711985328638e9aab ]
    
    When USRC=0, there is underrun issue for the non-ideal ratio mode;
    according to the reference mannual, the internal measured ratio can be
    used with USRC=1 and IDRC=0.
    
    Fixes: d0250cf4f2ab ("ASoC: fsl_asrc: Add an option to select internal ratio mode")
    Signed-off-by: Shengjiu Wang <[email protected]>
    Reviewed-by: Daniel Baluta <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[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]>

 
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]>

 
bpf, sockmap: Fix skb refcnt race after locking changes [+ + +]
Author: John Fastabend <[email protected]>
Date:   Fri Sep 1 13:21:37 2023 -0700

    bpf, sockmap: Fix skb refcnt race after locking changes
    
    commit a454d84ee20baf7bd7be90721b9821f73c7d23d9 upstream.
    
    There is a race where skb's from the sk_psock_backlog can be referenced
    after userspace side has already skb_consumed() the sk_buff and its refcnt
    dropped to zer0 causing use after free.
    
    The flow is the following:
    
      while ((skb = skb_peek(&psock->ingress_skb))
        sk_psock_handle_Skb(psock, skb, ..., ingress)
        if (!ingress) ...
        sk_psock_skb_ingress
           sk_psock_skb_ingress_enqueue(skb)
              msg->skb = skb
              sk_psock_queue_msg(psock, msg)
        skb_dequeue(&psock->ingress_skb)
    
    The sk_psock_queue_msg() puts the msg on the ingress_msg queue. This is
    what the application reads when recvmsg() is called. An application can
    read this anytime after the msg is placed on the queue. The recvmsg hook
    will also read msg->skb and then after user space reads the msg will call
    consume_skb(skb) on it effectively free'ing it.
    
    But, the race is in above where backlog queue still has a reference to
    the skb and calls skb_dequeue(). If the skb_dequeue happens after the
    user reads and free's the skb we have a use after free.
    
    The !ingress case does not suffer from this problem because it uses
    sendmsg_*(sk, msg) which does not pass the sk_buff further down the
    stack.
    
    The following splat was observed with 'test_progs -t sockmap_listen':
    
      [ 1022.710250][ T2556] general protection fault, ...
      [...]
      [ 1022.712830][ T2556] Workqueue: events sk_psock_backlog
      [ 1022.713262][ T2556] RIP: 0010:skb_dequeue+0x4c/0x80
      [ 1022.713653][ T2556] Code: ...
      [...]
      [ 1022.720699][ T2556] Call Trace:
      [ 1022.720984][ T2556]  <TASK>
      [ 1022.721254][ T2556]  ? die_addr+0x32/0x80^M
      [ 1022.721589][ T2556]  ? exc_general_protection+0x25a/0x4b0
      [ 1022.722026][ T2556]  ? asm_exc_general_protection+0x22/0x30
      [ 1022.722489][ T2556]  ? skb_dequeue+0x4c/0x80
      [ 1022.722854][ T2556]  sk_psock_backlog+0x27a/0x300
      [ 1022.723243][ T2556]  process_one_work+0x2a7/0x5b0
      [ 1022.723633][ T2556]  worker_thread+0x4f/0x3a0
      [ 1022.723998][ T2556]  ? __pfx_worker_thread+0x10/0x10
      [ 1022.724386][ T2556]  kthread+0xfd/0x130
      [ 1022.724709][ T2556]  ? __pfx_kthread+0x10/0x10
      [ 1022.725066][ T2556]  ret_from_fork+0x2d/0x50
      [ 1022.725409][ T2556]  ? __pfx_kthread+0x10/0x10
      [ 1022.725799][ T2556]  ret_from_fork_asm+0x1b/0x30
      [ 1022.726201][ T2556]  </TASK>
    
    To fix we add an skb_get() before passing the skb to be enqueued in the
    engress queue. This bumps the skb->users refcnt so that consume_skb()
    and kfree_skb will not immediately free the sk_buff. With this we can
    be sure the skb is still around when we do the dequeue. Then we just
    need to decrement the refcnt or free the skb in the backlog case which
    we do by calling kfree_skb() on the ingress case as well as the sendmsg
    case.
    
    Before locking change from fixes tag we had the sock locked so we
    couldn't race with user and there was no issue here.
    
    Fixes: 799aa7f98d53e ("skmsg: Avoid lock_sock() in sk_psock_backlog()")
    Reported-by: Jiri Olsa  <[email protected]>
    Signed-off-by: John Fastabend <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Tested-by: Xu Kuohai <[email protected]>
    Tested-by: Jiri Olsa <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Pranav Tyagi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
bpf: fix precision backtracking instruction iteration [+ + +]
Author: Andrii Nakryiko <[email protected]>
Date:   Thu Nov 9 16:26:37 2023 -0800

    bpf: fix precision backtracking instruction iteration
    
    commit 4bb7ea946a370707315ab774432963ce47291946 upstream.
    
    Fix an edge case in __mark_chain_precision() which prematurely stops
    backtracking instructions in a state if it happens that state's first
    and last instruction indexes are the same. This situations doesn't
    necessarily mean that there were no instructions simulated in a state,
    but rather that we starting from the instruction, jumped around a bit,
    and then ended up at the same instruction before checkpointing or
    marking precision.
    
    To distinguish between these two possible situations, we need to consult
    jump history. If it's empty or contain a single record "bridging" parent
    state and first instruction of processed state, then we indeed
    backtracked all instructions in this state. But if history is not empty,
    we are definitely not done yet.
    
    Move this logic inside get_prev_insn_idx() to contain it more nicely.
    Use -ENOENT return code to denote "we are out of instructions"
    situation.
    
    This bug was exposed by verifier_loop1.c's bounded_recursion subtest, once
    the next fix in this patch set is applied.
    
    Acked-by: Eduard Zingerman <[email protected]>
    Fixes: b5dc0163d8fd ("bpf: precise scalar_value tracking")
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Aaron Lu <[email protected]>
    Reported-by: Wei Wei <[email protected]>
    Closes: https://lore.kernel.org/all/20250605070921.GA3795@bytedance/
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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]>

 
dma-buf: add dma_resv_for_each_fence_unlocked v8 [+ + +]
Author: Christian König <[email protected]>
Date:   Tue Jun 15 15:10:03 2021 +0200

    dma-buf: add dma_resv_for_each_fence_unlocked v8
    
    [ Upstream commit c921ff373b469ad7907cde219fa700909f59cac4 ]
    
    Abstract the complexity of iterating over all the fences
    in a dma_resv object.
    
    The new loop handles the whole RCU and retry dance and
    returns only fences where we can be sure we grabbed the
    right one.
    
    v2: fix accessing the shared fences while they might be freed,
        improve kerneldoc, rename _cursor to _iter, add
        dma_resv_iter_is_exclusive, add dma_resv_iter_begin/end
    
    v3: restructor the code, move rcu_read_lock()/unlock() into the
        iterator, add dma_resv_iter_is_restarted()
    
    v4: fix NULL deref when no explicit fence exists, drop superflous
        rcu_read_lock()/unlock() calls.
    
    v5: fix typos in the documentation
    
    v6: fix coding error when excl fence is NULL
    
    v7: one more logic fix
    
    v8: fix index check in dma_resv_iter_is_exclusive()
    
    Signed-off-by: Christian König <[email protected]>
    Reviewed-by: Tvrtko Ursulin <[email protected]> (v7)
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: 2b95a7db6e0f ("dma-buf: fix timeout handling in dma_resv_wait_timeout v2")
    Signed-off-by: Sasha Levin <[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]>

dma-buf: use new iterator in dma_resv_wait_timeout [+ + +]
Author: Christian König <[email protected]>
Date:   Tue Jun 15 15:28:03 2021 +0200

    dma-buf: use new iterator in dma_resv_wait_timeout
    
    [ Upstream commit ada5c48b11a3df814701daa9cd11305a75a5f1a5 ]
    
    This makes the function much simpler since the complex
    retry logic is now handled elsewhere.
    
    Signed-off-by: Christian König <[email protected]>
    Reviewed-by: Daniel Vetter <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Stable-dep-of: 2b95a7db6e0f ("dma-buf: fix timeout handling in dma_resv_wait_timeout v2")
    Signed-off-by: Sasha Levin <[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/gem: Fix race in drm_gem_handle_create_tail() [+ + +]
Author: Simona Vetter <[email protected]>
Date:   Mon Jul 7 17:18:13 2025 +0200

    drm/gem: Fix race in drm_gem_handle_create_tail()
    
    commit bd46cece51a36ef088f22ef0416ac13b0a46d5b0 upstream.
    
    Object creation is a careful dance where we must guarantee that the
    object is fully constructed before it is visible to other threads, and
    GEM buffer objects are no difference.
    
    Final publishing happens by calling drm_gem_handle_create(). After
    that the only allowed thing to do is call drm_gem_object_put() because
    a concurrent call to the GEM_CLOSE ioctl with a correctly guessed id
    (which is trivial since we have a linear allocator) can already tear
    down the object again.
    
    Luckily most drivers get this right, the very few exceptions I've
    pinged the relevant maintainers for. Unfortunately we also need
    drm_gem_handle_create() when creating additional handles for an
    already existing object (e.g. GETFB ioctl or the various bo import
    ioctl), and hence we cannot have a drm_gem_handle_create_and_put() as
    the only exported function to stop these issues from happening.
    
    Now unfortunately the implementation of drm_gem_handle_create() isn't
    living up to standards: It does correctly finishe object
    initialization at the global level, and hence is safe against a
    concurrent tear down. But it also sets up the file-private aspects of
    the handle, and that part goes wrong: We fully register the object in
    the drm_file.object_idr before calling drm_vma_node_allow() or
    obj->funcs->open, which opens up races against concurrent removal of
    that handle in drm_gem_handle_delete().
    
    Fix this with the usual two-stage approach of first reserving the
    handle id, and then only registering the object after we've completed
    the file-private setup.
    
    Jacek reported this with a testcase of concurrently calling GEM_CLOSE
    on a freshly-created object (which also destroys the object), but it
    should be possible to hit this with just additional handles created
    through import or GETFB without completed destroying the underlying
    object with the concurrent GEM_CLOSE ioctl calls.
    
    Note that the close-side of this race was fixed in f6cd7daecff5 ("drm:
    Release driver references to handle before making it available
    again"), which means a cool 9 years have passed until someone noticed
    that we need to make this symmetry or there's still gaps left :-/
    Without the 2-stage close approach we'd still have a race, therefore
    that's an integral part of this bugfix.
    
    More importantly, this means we can have NULL pointers behind
    allocated id in our drm_file.object_idr. We need to check for that
    now:
    
    - drm_gem_handle_delete() checks for ERR_OR_NULL already
    
    - drm_gem.c:object_lookup() also chekcs for NULL
    
    - drm_gem_release() should never be called if there's another thread
      still existing that could call into an IOCTL that creates a new
      handle, so cannot race. For paranoia I added a NULL check to
      drm_gem_object_release_handle() though.
    
    - most drivers (etnaviv, i915, msm) are find because they use
      idr_find(), which maps both ENOENT and NULL to NULL.
    
    - drivers using idr_for_each_entry() should also be fine, because
      idr_get_next does filter out NULL entries and continues the
      iteration.
    
    - The same holds for drm_show_memory_stats().
    
    v2: Use drm_WARN_ON (Thomas)
    
    Reported-by: Jacek Lawrynowicz <[email protected]>
    Tested-by: Jacek Lawrynowicz <[email protected]>
    Reviewed-by: Thomas Zimmermann <[email protected]>
    Cc: [email protected]
    Cc: Jacek Lawrynowicz <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: David Airlie <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Signed-off-by: Simona Vetter <[email protected]>
    Signed-off-by: Simona Vetter <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[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]>

 
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]>

 
fs/proc: do_task_stat: use __for_each_thread() [+ + +]
Author: Oleg Nesterov <[email protected]>
Date:   Sat Sep 9 18:45:01 2023 +0200

    fs/proc: do_task_stat: use __for_each_thread()
    
    commit 7904e53ed5a20fc678c01d5d1b07ec486425bb6a upstream.
    
    do/while_each_thread should be avoided when possible.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Oleg Nesterov <[email protected]>
    Cc: Eric W. Biederman <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 7601df8031fd ("fs/proc: do_task_stat: use sig->stats_lock to gather the threads/children stats")
    Cc: [email protected]
    [ mheyne: adjusted context ]
    Signed-off-by: Maximilian Heyne <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gre: Fix IPv6 multicast route creation. [+ + +]
Author: Guillaume Nault <[email protected]>
Date:   Wed Jul 9 16:30:10 2025 +0200

    gre: Fix IPv6 multicast route creation.
    
    commit 4e914ef063de40397e25a025c70d9737a9e45a8c upstream.
    
    Use addrconf_add_dev() instead of ipv6_find_idev() in
    addrconf_gre_config() so that we don't just get the inet6_dev, but also
    install the default ff00::/8 multicast route.
    
    Before commit 3e6a0243ff00 ("gre: Fix again IPv6 link-local address
    generation."), the multicast route was created at the end of the
    function by addrconf_add_mroute(). But this code path is now only taken
    in one particular case (gre devices not bound to a local IP address and
    in EUI64 mode). For all other cases, the function exits early and
    addrconf_add_mroute() is not called anymore.
    
    Using addrconf_add_dev() instead of ipv6_find_idev() in
    addrconf_gre_config(), fixes the problem as it will create the default
    multicast route for all gre devices. This also brings
    addrconf_gre_config() a bit closer to the normal netdevice IPv6
    configuration code (addrconf_dev_config()).
    
    Cc: [email protected]
    Fixes: 3e6a0243ff00 ("gre: Fix again IPv6 link-local address generation.")
    Reported-by: Aiden Yang <[email protected]>
    Closes: https://lore.kernel.org/netdev/CANR=AhRM7YHHXVxJ4DmrTNMeuEOY87K2mLmo9KMed1JMr20p6g@mail.gmail.com/
    Reviewed-by: Gary Guo <[email protected]>
    Tested-by: Gary Guo <[email protected]>
    Signed-off-by: Guillaume Nault <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/027a923dcb550ad115e6d93ee8bb7d310378bd01.1752070620.git.gnault@redhat.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2 [+ + +]
Author: Akira Inoue <[email protected]>
Date:   Thu Jun 12 13:34:38 2025 +0900

    HID: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2
    
    [ Upstream commit a8905238c3bbe13db90065ed74682418f23830c3 ]
    
    Add "Thinkpad X1 Tablet Gen 2 Keyboard" PID to hid-lenovo driver to fix trackpoint not working issue.
    
    Signed-off-by: Akira Inoue <[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]>

 
ice: safer stats processing [+ + +]
Author: Jesse Brandeburg <[email protected]>
Date:   Fri Nov 12 17:06:02 2021 -0800

    ice: safer stats processing
    
    commit 1a0f25a52e08b1f67510cabbb44888d2b3c46359 upstream.
    
    The driver was zeroing live stats that could be fetched by
    ndo_get_stats64 at any time. This could result in inconsistent
    statistics, and the telltale sign was when reading stats frequently from
    /proc/net/dev, the stats would go backwards.
    
    Fix by collecting stats into a local, and delaying when we write to the
    structure so it's not incremental.
    
    Fixes: fcea6f3da546 ("ice: Add stats and ethtool support")
    Signed-off-by: Jesse Brandeburg <[email protected]>
    Tested-by: Gurucharan G <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Closes: https://lore.kernel.org/intel-wired-lan/CAP8M2pGttT4JBjt+i4GJkxy7yERbqWJ5a8R14HzoonTLByc2Cw@mail.gmail.com
    Signed-off-by: Przemek Kitszel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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 - 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: fix null ptr deref in dtInsertEntry [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Thu Apr 11 20:05:28 2024 +0800

    jfs: fix null ptr deref in dtInsertEntry
    
    commit ce6dede912f064a855acf6f04a04cbb2c25b8c8c upstream.
    
    [syzbot reported]
    general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] PREEMPT SMP KASAN PTI
    KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
    CPU: 0 PID: 5061 Comm: syz-executor404 Not tainted 6.8.0-syzkaller-08951-gfe46a7dd189e #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
    RIP: 0010:dtInsertEntry+0xd0c/0x1780 fs/jfs/jfs_dtree.c:3713
    ...
    [Analyze]
    In dtInsertEntry(), when the pointer h has the same value as p, after writing
    name in UniStrncpy_to_le(), p->header.flag will be cleared. This will cause the
    previously true judgment "p->header.flag & BT-LEAF" to change to no after writing
    the name operation, this leads to entering an incorrect branch and accessing the
    uninitialized object ih when judging this condition for the second time.
    
    [Fix]
    After got the page, check freelist first, if freelist == 0 then exit dtInsert()
    and return -EINVAL.
    
    Reported-by: [email protected]
    Signed-off-by: Edward Adam Davis <[email protected]>
    Signed-off-by: Dave Kleikamp <[email protected]>
    Signed-off-by: Aditya Dutt <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked() [+ + +]
Author: Al Viro <[email protected]>
Date:   Sun Jul 6 02:26:45 2025 +0100

    ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked()
    
    [ Upstream commit 277627b431a0a6401635c416a21b2a0f77a77347 ]
    
    If the call of ksmbd_vfs_lock_parent() fails, we drop the parent_path
    references and return an error.  We need to drop the write access we
    just got on parent_path->mnt before we drop the mount reference - callers
    assume that ksmbd_vfs_kern_path_locked() returns with mount write
    access grabbed if and only if it has returned 0.
    
    Fixes: 864fb5d37163 ("ksmbd: fix possible deadlock in smb2_open")
    Signed-off-by: Al Viro <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 5.15.189 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Jul 17 18:30:55 2025 +0200

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

 
nbd: fix uaf in nbd_genl_connect() error path [+ + +]
Author: Zheng Qixing <[email protected]>
Date:   Thu Jun 12 21:24:05 2025 +0800

    nbd: fix uaf in nbd_genl_connect() error path
    
    [ Upstream commit aa9552438ebf015fc5f9f890dbfe39f0c53cf37e ]
    
    There is a use-after-free issue in nbd:
    
    block nbd6: Receive control failed (result -104)
    block nbd6: shutting down sockets
    ==================================================================
    BUG: KASAN: slab-use-after-free in recv_work+0x694/0xa80 drivers/block/nbd.c:1022
    Write of size 4 at addr ffff8880295de478 by task kworker/u33:0/67
    
    CPU: 2 UID: 0 PID: 67 Comm: kworker/u33:0 Not tainted 6.15.0-rc5-syzkaller-00123-g2c89c1b655c0 #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
    Workqueue: nbd6-recv recv_work
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:408 [inline]
     print_report+0xc3/0x670 mm/kasan/report.c:521
     kasan_report+0xe0/0x110 mm/kasan/report.c:634
     check_region_inline mm/kasan/generic.c:183 [inline]
     kasan_check_range+0xef/0x1a0 mm/kasan/generic.c:189
     instrument_atomic_read_write include/linux/instrumented.h:96 [inline]
     atomic_dec include/linux/atomic/atomic-instrumented.h:592 [inline]
     recv_work+0x694/0xa80 drivers/block/nbd.c:1022
     process_one_work+0x9cc/0x1b70 kernel/workqueue.c:3238
     process_scheduled_works kernel/workqueue.c:3319 [inline]
     worker_thread+0x6c8/0xf10 kernel/workqueue.c:3400
     kthread+0x3c2/0x780 kernel/kthread.c:464
     ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:153
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
     </TASK>
    
    nbd_genl_connect() does not properly stop the device on certain
    error paths after nbd_start_device() has been called. This causes
    the error path to put nbd->config while recv_work continue to use
    the config after putting it, leading to use-after-free in recv_work.
    
    This patch moves nbd_start_device() after the backend file creation.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Fixes: 6497ef8df568 ("nbd: provide a way for userspace processes to identify device backends")
    Signed-off-by: Zheng Qixing <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[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: 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: ll_temac: Fix missing tx_pending check in ethtools_set_ringparam() [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Thu Jul 10 11:06:17 2025 -0700

    net: ll_temac: Fix missing tx_pending check in ethtools_set_ringparam()
    
    [ Upstream commit e81750b4e3826fedce7362dad839cb40384d60ae ]
    
    The function ll_temac_ethtools_set_ringparam() incorrectly checked
    rx_pending twice, once correctly for RX and once mistakenly in place
    of tx_pending. This caused tx_pending to be left unchecked against
    TX_BD_NUM_MAX.
    As a result, invalid TX ring sizes may have been accepted or valid
    ones wrongly rejected based on the RX limit, leading to potential
    misconfiguration or unexpected results.
    
    This patch corrects the condition to properly validate tx_pending.
    
    Fixes: f7b261bfc35e ("net: ll_temac: Make RX/TX ring sizes configurable")
    Signed-off-by: Alok Tiwari <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: 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: phy: smsc: Fix Auto-MDIX configuration when disabled by strap [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Thu Jul 3 13:49:39 2025 +0200

    net: phy: smsc: Fix Auto-MDIX configuration when disabled by strap
    
    [ Upstream commit a141af8eb2272ab0f677a7f2653874840bc9b214 ]
    
    Correct the Auto-MDIX configuration to ensure userspace settings are
    respected when the feature is disabled by the AUTOMDIX_EN hardware strap.
    
    The LAN9500 PHY allows its default MDI-X mode to be configured via a
    hardware strap. If this strap sets the default to "MDI-X off", the
    driver was previously unable to enable Auto-MDIX from userspace.
    
    When handling the ETH_TP_MDI_AUTO case, the driver would set the
    SPECIAL_CTRL_STS_AMDIX_ENABLE_ bit but neglected to set the required
    SPECIAL_CTRL_STS_OVRRD_AMDIX_ bit. Without the override flag, the PHY
    falls back to its hardware strap default, ignoring the software request.
    
    This patch corrects the behavior by also setting the override bit when
    enabling Auto-MDIX. This ensures that the userspace configuration takes
    precedence over the hardware strap, allowing Auto-MDIX to be enabled
    correctly in all scenarios.
    
    Fixes: 05b35e7eb9a1 ("smsc95xx: add phylib support")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Cc: Andre Edich <[email protected]>
    Reviewed-by: Maxime Chevallier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: smsc: Fix link failure in forced mode with Auto-MDIX [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Thu Jul 3 13:49:41 2025 +0200

    net: phy: smsc: Fix link failure in forced mode with Auto-MDIX
    
    [ Upstream commit 9dfe110cc0f6ef42af8e81ce52aef34a647d0b8a ]
    
    Force a fixed MDI-X mode when auto-negotiation is disabled to prevent
    link instability.
    
    When forcing the link speed and duplex on a LAN9500 PHY (e.g., with
    `ethtool -s eth0 autoneg off ...`) while leaving MDI-X control in auto
    mode, the PHY fails to establish a stable link. This occurs because the
    PHY's Auto-MDIX algorithm is not designed to operate when
    auto-negotiation is disabled. In this state, the PHY continuously
    toggles the TX/RX signal pairs, which prevents the link partner from
    synchronizing.
    
    This patch resolves the issue by detecting when auto-negotiation is
    disabled. If the MDI-X control mode is set to 'auto', the driver now
    forces a specific, stable mode (ETH_TP_MDI) to prevent the pair
    toggling. This choice of a fixed MDI mode mirrors the behavior the
    hardware would exhibit if the AUTOMDIX_EN strap were configured for a
    fixed MDI connection.
    
    Fixes: 05b35e7eb9a1 ("smsc95xx: add phylib support")
    Signed-off-by: Oleksij Rempel <[email protected]>
    Cc: Andre Edich <[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: 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]>

 
netfilter: flowtable: account for Ethernet header in nf_flow_pppoe_proto() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Jul 7 12:45:17 2025 +0000

    netfilter: flowtable: account for Ethernet header in nf_flow_pppoe_proto()
    
    [ Upstream commit 18cdb3d982da8976b28d57691eb256ec5688fad2 ]
    
    syzbot found a potential access to uninit-value in nf_flow_pppoe_proto()
    
    Blamed commit forgot the Ethernet header.
    
    BUG: KMSAN: uninit-value in nf_flow_offload_inet_hook+0x7e4/0x940 net/netfilter/nf_flow_table_inet.c:27
      nf_flow_offload_inet_hook+0x7e4/0x940 net/netfilter/nf_flow_table_inet.c:27
      nf_hook_entry_hookfn include/linux/netfilter.h:157 [inline]
      nf_hook_slow+0xe1/0x3d0 net/netfilter/core.c:623
      nf_hook_ingress include/linux/netfilter_netdev.h:34 [inline]
      nf_ingress net/core/dev.c:5742 [inline]
      __netif_receive_skb_core+0x4aff/0x70c0 net/core/dev.c:5837
      __netif_receive_skb_one_core net/core/dev.c:5975 [inline]
      __netif_receive_skb+0xcc/0xac0 net/core/dev.c:6090
      netif_receive_skb_internal net/core/dev.c:6176 [inline]
      netif_receive_skb+0x57/0x630 net/core/dev.c:6235
      tun_rx_batched+0x1df/0x980 drivers/net/tun.c:1485
      tun_get_user+0x4ee0/0x6b40 drivers/net/tun.c:1938
      tun_chr_write_iter+0x3e9/0x5c0 drivers/net/tun.c:1984
      new_sync_write fs/read_write.c:593 [inline]
      vfs_write+0xb4b/0x1580 fs/read_write.c:686
      ksys_write fs/read_write.c:738 [inline]
      __do_sys_write fs/read_write.c:749 [inline]
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Fixes: 87b3593bed18 ("netfilter: flowtable: validate pppoe header")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Pablo Neira Ayuso <[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]>

 
perf: Revert to requiring CAP_SYS_ADMIN for uprobes [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Wed Jul 2 18:21:44 2025 +0200

    perf: Revert to requiring CAP_SYS_ADMIN for uprobes
    
    [ Upstream commit ba677dbe77af5ffe6204e0f3f547f3ba059c6302 ]
    
    Jann reports that uprobes can be used destructively when used in the
    middle of an instruction. The kernel only verifies there is a valid
    instruction at the requested offset, but due to variable instruction
    length cannot determine if this is an instruction as seen by the
    intended execution stream.
    
    Additionally, Mark Rutland notes that on architectures that mix data
    in the text segment (like arm64), a similar things can be done if the
    data word is 'mistaken' for an instruction.
    
    As such, require CAP_SYS_ADMIN for uprobes.
    
    Fixes: c9e0924e5c2b ("perf/core: open access to probes for CAP_PERFMON privileged process")
    Reported-by: Jann Horn <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/CAG48ez1n4520sq0XrWYDHKiKxE_+WCfAK+qt9qkY4ZiBGmL-5g@mail.gmail.com
    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]>

 
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]>

 
raid10: cleanup memleak at raid10_make_request [+ + +]
Author: Nigel Croxon <[email protected]>
Date:   Thu Jul 3 11:23:04 2025 -0400

    raid10: cleanup memleak at raid10_make_request
    
    [ Upstream commit 43806c3d5b9bb7d74ba4e33a6a8a41ac988bde24 ]
    
    If raid10_read_request or raid10_write_request registers a new
    request and the REQ_NOWAIT flag is set, the code does not
    free the malloc from the mempool.
    
    unreferenced object 0xffff8884802c3200 (size 192):
       comm "fio", pid 9197, jiffies 4298078271
       hex dump (first 32 bytes):
         00 00 00 00 00 00 00 00 88 41 02 00 00 00 00 00  .........A......
         08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
       backtrace (crc c1a049a2):
         __kmalloc+0x2bb/0x450
         mempool_alloc+0x11b/0x320
         raid10_make_request+0x19e/0x650 [raid10]
         md_handle_request+0x3b3/0x9e0
         __submit_bio+0x394/0x560
         __submit_bio_noacct+0x145/0x530
         submit_bio_noacct_nocheck+0x682/0x830
         __blkdev_direct_IO_async+0x4dc/0x6b0
         blkdev_read_iter+0x1e5/0x3b0
         __io_read+0x230/0x1110
         io_read+0x13/0x30
         io_issue_sqe+0x134/0x1180
         io_submit_sqes+0x48c/0xe90
         __do_sys_io_uring_enter+0x574/0x8b0
         do_syscall_64+0x5c/0xe0
         entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    V4: changing backing tree to see if CKI tests will pass.
    The patch code has not changed between any versions.
    
    Fixes: c9aa889b035f ("md: raid10 add nowait support")
    Signed-off-by: Nigel Croxon <[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]>

 
RDMA/mlx5: Fix vport loopback for MPV device [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Mon Jun 16 12:14:54 2025 +0300

    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]>

 
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]>

 
rseq: Fix segfault on registration when rseq_cs is non-zero [+ + +]
Author: Michael Jeanson <[email protected]>
Date:   Thu Mar 6 16:12:21 2025 -0500

    rseq: Fix segfault on registration when rseq_cs is non-zero
    
    commit fd881d0a085fc54354414aed990ccf05f282ba53 upstream.
    
    The rseq_cs field is documented as being set to 0 by user-space prior to
    registration, however this is not currently enforced by the kernel. This
    can result in a segfault on return to user-space if the value stored in
    the rseq_cs field doesn't point to a valid struct rseq_cs.
    
    The correct solution to this would be to fail the rseq registration when
    the rseq_cs field is non-zero. However, some older versions of glibc
    will reuse the rseq area of previous threads without clearing the
    rseq_cs field and will also terminate the process if the rseq
    registration fails in a secondary thread. This wasn't caught in testing
    because in this case the leftover rseq_cs does point to a valid struct
    rseq_cs.
    
    What we can do is clear the rseq_cs field on registration when it's
    non-zero which will prevent segfaults on registration and won't break
    the glibc versions that reuse rseq areas on thread creation.
    
    Signed-off-by: Michael Jeanson <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Mathieu Desnoyers <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[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]>

 
smb: server: make use of rdma_destroy_qp() [+ + +]
Author: Stefan Metzmacher <[email protected]>
Date:   Wed Jul 2 09:18:05 2025 +0200

    smb: server: make use of rdma_destroy_qp()
    
    [ Upstream commit 0c2b53997e8f5e2ec9e0fbd17ac0436466b65488 ]
    
    The qp is created by rdma_create_qp() as t->cm_id->qp
    and t->qp is just a shortcut.
    
    rdma_destroy_qp() also calls ib_destroy_qp(cm_id->qp) internally,
    but it is protected by a mutex, clears the cm_id and also calls
    trace_cm_qp_destroy().
    
    This should make the tracing more useful as both
    rdma_create_qp() and rdma_destroy_qp() are traces and it makes
    the code look more sane as functions from the same layer are used
    for the specific qp object.
    
    trace-cmd stream -e rdma_cma:cm_qp_create -e rdma_cma:cm_qp_destroy
    shows this now while doing a mount and unmount from a client:
    
      <...>-80   [002] 378.514182: cm_qp_create:  cm.id=1 src=172.31.9.167:5445 dst=172.31.9.166:37113 tos=0 pd.id=0 qp_type=RC send_wr=867 recv_wr=255 qp_num=1 rc=0
      <...>-6283 [001] 381.686172: cm_qp_destroy: cm.id=1 src=172.31.9.167:5445 dst=172.31.9.166:37113 tos=0 qp_num=1
    
    Before we only saw the first line.
    
    Cc: Namjae Jeon <[email protected]>
    Cc: Steve French <[email protected]>
    Cc: Sergey Senozhatsky <[email protected]>
    Cc: Hyunchul Lee <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Cc: [email protected]
    Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Reviewed-by: Tom Talpey <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/int340x_thermal: handle data_vault when the value is ZERO_SIZE_PTR [+ + +]
Author: Lee, Chun-Yi <[email protected]>
Date:   Mon Aug 8 21:21:58 2022 +0800

    thermal/int340x_thermal: handle data_vault when the value is ZERO_SIZE_PTR
    
    commit 7931e28098a4c1a2a6802510b0cbe57546d2049d upstream.
    
    In some case, the GDDV returns a package with a buffer which has
    zero length. It causes that kmemdup() returns ZERO_SIZE_PTR (0x10).
    
    Then the data_vault_read() got NULL point dereference problem when
    accessing the 0x10 value in data_vault.
    
    [   71.024560] BUG: kernel NULL pointer dereference, address:
    0000000000000010
    
    This patch uses ZERO_OR_NULL_PTR() for checking ZERO_SIZE_PTR or
    NULL value in data_vault.
    
    Signed-off-by: "Lee, Chun-Yi" <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    [ Larry: backport to 5.15.y. Minor conflict resolved due to missing commit 9e5d3d6be664
      thermal: int340x: Consolidate freeing of acpi_buffer pointer ]
    Signed-off-by: Larry Bassel <[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]>

 
um: vector: Reduce stack usage in vector_eth_configure() [+ + +]
Author: Tiwei Bie <[email protected]>
Date:   Mon Jun 23 19:08:29 2025 +0800

    um: vector: Reduce stack usage in vector_eth_configure()
    
    [ Upstream commit 2d65fc13be85c336c56af7077f08ccd3a3a15a4a ]
    
    When compiling with clang (19.1.7), initializing *vp using a compound
    literal may result in excessive stack usage. Fix it by initializing the
    required fields of *vp individually.
    
    Without this patch:
    
    $ objdump -d arch/um/drivers/vector_kern.o | ./scripts/checkstack.pl x86_64 0
    ...
    0x0000000000000540 vector_eth_configure [vector_kern.o]:1472
    ...
    
    With this patch:
    
    $ objdump -d arch/um/drivers/vector_kern.o | ./scripts/checkstack.pl x86_64 0
    ...
    0x0000000000000540 vector_eth_configure [vector_kern.o]:208
    ...
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    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: cdnsp: Fix issue with CV Bad Descriptor test [+ + +]
Author: Pawel Laszczak <[email protected]>
Date:   Fri Jun 20 08:23:12 2025 +0000

    usb: cdnsp: Fix issue with CV Bad Descriptor test
    
    [ Upstream commit 2831a81077f5162f104ba5a97a7d886eb371c21c ]
    
    The SSP2 controller has extra endpoint state preserve bit (ESP) which
    setting causes that endpoint state will be preserved during
    Halt Endpoint command. It is used only for EP0.
    Without this bit the Command Verifier "TD 9.10 Bad Descriptor Test"
    failed.
    Setting this bit doesn't have any impact for SSP controller.
    
    Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
    Cc: stable <[email protected]>
    Signed-off-by: Pawel Laszczak <[email protected]>
    Acked-by: Peter Chen <[email protected]>
    Link: https://lore.kernel.org/r/PH7PR07MB95382CCD50549DABAEFD6156DD7CA@PH7PR07MB9538.namprd07.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: cdnsp: Replace snprintf() with the safer scnprintf() variant [+ + +]
Author: Lee Jones <[email protected]>
Date:   Thu Nov 30 10:54:36 2023 +0000

    usb: cdnsp: Replace snprintf() with the safer scnprintf() variant
    
    [ Upstream commit b385ef088c7aab20a2c0dc20d390d69a6620f0f3 ]
    
    There is a general misunderstanding amongst engineers that {v}snprintf()
    returns the length of the data *actually* encoded into the destination
    array.  However, as per the C99 standard {v}snprintf() really returns
    the length of the data that *would have been* written if there were
    enough space for it.  This misunderstanding has led to buffer-overruns
    in the past.  It's generally considered safer to use the {v}scnprintf()
    variants in their place (or even sprintf() in simple cases).  So let's
    do that.
    
    The uses in this file all seem to assume that data *has been* written!
    
    Link: https://lwn.net/Articles/69419/
    Link: https://github.com/KSPP/linux/issues/105
    Cc: Pawel Laszczak <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: [email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 2831a81077f5 ("usb: cdnsp: Fix issue with CV Bad Descriptor test")
    Signed-off-by: Sasha Levin <[email protected]>

usb: dwc3: Abort suspend on soft disconnect failure [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Wed May 28 18:03:11 2025 +0800

    usb: dwc3: Abort suspend on soft disconnect failure
    
    [ Upstream commit 630a1dec3b0eba2a695b9063f1c205d585cbfec9 ]
    
    When dwc3_gadget_soft_disconnect() fails, dwc3_suspend_common() keeps
    going with the suspend, resulting in a period where the power domain is
    off, but the gadget driver remains connected.  Within this time frame,
    invoking vbus_event_work() will cause an error as it attempts to access
    DWC3 registers for endpoint disabling after the power domain has been
    completely shut down.
    
    Abort the suspend sequence when dwc3_gadget_suspend() cannot halt the
    controller and proceeds with a soft connect.
    
    Fixes: 9f8a67b65a49 ("usb: dwc3: gadget: fix gadget suspend/resume")
    Cc: stable <[email protected]>
    Acked-by: Thinh Nguyen <[email protected]>
    Signed-off-by: Kuen-Han Tsai <[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: xhci: quirk for data loss in ISOC transfers [+ + +]
Author: Raju Rangoju <[email protected]>
Date:   Fri Jun 27 17:41:19 2025 +0300

    usb: xhci: quirk for data loss in ISOC transfers
    
    [ Upstream commit cbc889ab0122366f6cdbe3c28d477c683ebcebc2 ]
    
    During the High-Speed Isochronous Audio transfers, xHCI
    controller on certain AMD platforms experiences momentary data
    loss. This results in Missed Service Errors (MSE) being
    generated by the xHCI.
    
    The root cause of the MSE is attributed to the ISOC OUT endpoint
    being omitted from scheduling. This can happen when an IN
    endpoint with a 64ms service interval either is pre-scheduled
    prior to the ISOC OUT endpoint or the interval of the ISOC OUT
    endpoint is shorter than that of the IN endpoint. Consequently,
    the OUT service is neglected when an IN endpoint with a service
    interval exceeding 32ms is scheduled concurrently (every 64ms in
    this scenario).
    
    This issue is particularly seen on certain older AMD platforms.
    To mitigate this problem, it is recommended to adjust the service
    interval of the IN endpoint to not exceed 32ms (interval 8). This
    adjustment ensures that the OUT endpoint will not be bypassed,
    even if a smaller interval value is utilized.
    
    Cc: stable <[email protected]>
    Signed-off-by: Raju Rangoju <[email protected]>
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: usb:cdnsp: remove TRB_FLUSH_ENDPOINT command [+ + +]
Author: Pawel Laszczak <[email protected]>
Date:   Thu Oct 26 09:37:37 2023 +0200

    usb:cdnsp: remove TRB_FLUSH_ENDPOINT command
    
    [ Upstream commit 2998874736bca1031ca84b0a3235a2cd09dfa426 ]
    
    Patch removes TRB_FLUSH_ENDPOINT command from driver.
    This command is not supported by controller and
    USBSSP returns TRB Error completion code for it.
    
    Signed-off-by: Pawel Laszczak <[email protected]>
    Acked-by: Peter Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 2831a81077f5 ("usb: cdnsp: Fix issue with CV Bad Descriptor test")
    Signed-off-by: Sasha Levin <[email protected]>

 
vhost-scsi: protect vq->log_used with vq->mutex [+ + +]
Author: Dongli Zhang <[email protected]>
Date:   Wed Apr 2 23:29:46 2025 -0700

    vhost-scsi: protect vq->log_used with vq->mutex
    
    commit f591cf9fce724e5075cc67488c43c6e39e8cbe27 upstream.
    
    The vhost-scsi completion path may access vq->log_base when vq->log_used is
    already set to false.
    
        vhost-thread                       QEMU-thread
    
    vhost_scsi_complete_cmd_work()
    -> vhost_add_used()
       -> vhost_add_used_n()
          if (unlikely(vq->log_used))
                                          QEMU disables vq->log_used
                                          via VHOST_SET_VRING_ADDR.
                                          mutex_lock(&vq->mutex);
                                          vq->log_used = false now!
                                          mutex_unlock(&vq->mutex);
    
                                          QEMU gfree(vq->log_base)
            log_used()
            -> log_write(vq->log_base)
    
    Assuming the VMM is QEMU. The vq->log_base is from QEMU userpace and can be
    reclaimed via gfree(). As a result, this causes invalid memory writes to
    QEMU userspace.
    
    The control queue path has the same issue.
    
    Signed-off-by: Dongli Zhang <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Reviewed-by: Mike Christie <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    [ Resolved conflicts in drivers/vhost/scsi.c
      bacause vhost_scsi_complete_cmd_work() has been refactored. ]
    Signed-off-by: Xinyu Zheng <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
virtio-net: ensure the received length does not exceed allocated size [+ + +]
Author: Bui Quang Minh <[email protected]>
Date:   Fri Jul 11 23:52:02 2025 -0400

    virtio-net: ensure the received length does not exceed allocated size
    
    [ Upstream commit 315dbdd7cdf6aa533829774caaf4d25f1fd20e73 ]
    
    In xdp_linearize_page, when reading the following buffers from the ring,
    we forget to check the received length with the true allocate size. This
    can lead to an out-of-bound read. This commit adds that missing check.
    
    Cc: <[email protected]>
    Fixes: 4941d472bf95 ("virtio-net: do not reset during XDP set")
    Signed-off-by: Bui Quang Minh <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vsock: Fix IOCTL_VM_SOCKETS_GET_LOCAL_CID to check also `transport_local` [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Thu Jul 3 17:18:20 2025 +0200

    vsock: Fix IOCTL_VM_SOCKETS_GET_LOCAL_CID to check also `transport_local`
    
    [ Upstream commit 1e7d9df379a04ccd0c2f82f39fbb69d482e864cc ]
    
    Support returning VMADDR_CID_LOCAL in case no other vsock transport is
    available.
    
    Fixes: 0e12190578d0 ("vsock: add local transport support in the vsock core")
    Suggested-by: Stefano Garzarella <[email protected]>
    Reviewed-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vsock: Fix transport_* TOCTOU [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Thu Jul 3 17:18:19 2025 +0200

    vsock: Fix transport_* TOCTOU
    
    [ Upstream commit 687aa0c5581b8d4aa87fd92973e4ee576b550cdf ]
    
    Transport assignment may race with module unload. Protect new_transport
    from becoming a stale pointer.
    
    This also takes care of an insecure call in vsock_use_local_transport();
    add a lockdep assert.
    
    BUG: unable to handle page fault for address: fffffbfff8056000
    Oops: Oops: 0000 [#1] SMP KASAN
    RIP: 0010:vsock_assign_transport+0x366/0x600
    Call Trace:
     vsock_connect+0x59c/0xc40
     __sys_connect+0xe8/0x100
     __x64_sys_connect+0x6e/0xc0
     do_syscall_64+0x92/0x1c0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Reviewed-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vsock: Fix transport_{g2h,h2g} TOCTOU [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Thu Jul 3 17:18:18 2025 +0200

    vsock: Fix transport_{g2h,h2g} TOCTOU
    
    [ Upstream commit 209fd720838aaf1420416494c5505096478156b4 ]
    
    vsock_find_cid() and vsock_dev_do_ioctl() may race with module unload.
    transport_{g2h,h2g} may become NULL after the NULL check.
    
    Introduce vsock_transport_local_cid() to protect from a potential
    null-ptr-deref.
    
    KASAN: null-ptr-deref in range [0x0000000000000118-0x000000000000011f]
    RIP: 0010:vsock_find_cid+0x47/0x90
    Call Trace:
     __vsock_bind+0x4b2/0x720
     vsock_bind+0x90/0xe0
     __sys_bind+0x14d/0x1e0
     __x64_sys_bind+0x6e/0xc0
     do_syscall_64+0x92/0x1c0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    KASAN: null-ptr-deref in range [0x0000000000000118-0x000000000000011f]
    RIP: 0010:vsock_dev_do_ioctl.isra.0+0x58/0xf0
    Call Trace:
     __x64_sys_ioctl+0x12d/0x190
     do_syscall_64+0x92/0x1c0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: c0cfa2d8a788 ("vsock: add multi-transports support")
    Suggested-by: Stefano Garzarella <[email protected]>
    Reviewed-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[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: 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]>

 
x86: Fix X86_FEATURE_VERW_CLEAR definition [+ + +]
Author: Jack Wang <[email protected]>
Date:   Mon Jul 14 21:36:28 2025 +0200

    x86: Fix X86_FEATURE_VERW_CLEAR definition
    
    This is a mistake during backport.
    VERW_CLEAR is on bit 5, not bit 10.
    
    Fixes: f2b75f1368af ("x86/bugs: Add a Transient Scheduler Attacks mitigation")
    
    Cc: Borislav Petkov (AMD) <[email protected]>
    Signed-off-by: Jack Wang <[email protected]>
    Acked-by: Borislav Petkov (AMD) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xen: replace xen_remap() with memremap() [+ + +]
Author: Juergen Gross <[email protected]>
Date:   Mon May 30 10:26:34 2022 +0200

    xen: replace xen_remap() with memremap()
    
    commit 41925b105e345ebc84cedb64f59d20cb14a62613 upstream.
    
    xen_remap() is used to establish mappings for frames not under direct
    control of the kernel: for Xenstore and console ring pages, and for
    grant pages of non-PV guests.
    
    Today xen_remap() is defined to use ioremap() on x86 (doing uncached
    mappings), and ioremap_cache() on Arm (doing cached mappings).
    
    Uncached mappings for those use cases are bad for performance, so they
    should be avoided if possible. As all use cases of xen_remap() don't
    require uncached mappings (the mapped area is always physical RAM),
    a mapping using the standard WB cache mode is fine.
    
    As sparse is flagging some of the xen_remap() use cases to be not
    appropriate for iomem(), as the result is not annotated with the
    __iomem modifier, eliminate xen_remap() completely and replace all
    use cases with memremap() specifying the MEMREMAP_WB caching mode.
    
    xen_unmap() can be replaced with memunmap().
    
    Reported-by: kernel test robot <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Reviewed-by: Boris Ostrovsky <[email protected]>
    Acked-by: Stefano Stabellini <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Teddy Astie <[email protected]> [backport to 5.15.y]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xhci: Allow RPM on the USB controller (1022:43f7) by default [+ + +]
Author: Basavaraj Natikar <[email protected]>
Date:   Mon Mar 4 11:13:27 2024 +0530

    xhci: Allow RPM on the USB controller (1022:43f7) by default
    
    [ Upstream commit 28cbed496059fe1868203b76e9e0ef285733524d ]
    
    Enable runtime PM by default for older AMD 1022:43f7 xHCI 1.1 host as it
    is proven to work.
    Driver enables runtime PM by default for newer xHCI 1.2 host.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Cc: Mario Limonciello <[email protected]>
    Tested-by: Oleksandr Natalenko <[email protected]>
    Signed-off-by: Basavaraj Natikar <[email protected]>
    Acked-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: cbc889ab0122 ("usb: xhci: quirk for data loss in ISOC transfers")
    Signed-off-by: Sasha Levin <[email protected]>

xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS [+ + +]
Author: Hongyu Xie <[email protected]>
Date:   Fri Jun 27 17:41:20 2025 +0300

    xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
    
    [ Upstream commit cd65ee81240e8bc3c3119b46db7f60c80864b90b ]
    
    Disable stream for platform xHC controller with broken stream.
    
    Fixes: 14aec589327a6 ("storage: accept some UAS devices if streams are unavailable")
    Cc: stable <[email protected]>
    Signed-off-by: Hongyu Xie <[email protected]>
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>