Skip to content

[ciqlts9_6] Multiple patches tested (6 commits)#899

Open
ciq-kernel-automation[bot] wants to merge 6 commits intociqlts9_6from
{jmaple}_ciqlts9_6
Open

[ciqlts9_6] Multiple patches tested (6 commits)#899
ciq-kernel-automation[bot] wants to merge 6 commits intociqlts9_6from
{jmaple}_ciqlts9_6

Conversation

@ciq-kernel-automation
Copy link

@ciq-kernel-automation ciq-kernel-automation bot commented Feb 19, 2026

Summary

This PR has been automatically created after successful completion of all CI stages.

Commit Message(s)

eventpoll: don't decrement ep refcount while still holding the ep mutex

jira VULN-162877
cve CVE-2025-38349
commit-author Linus Torvalds <torvalds@linux-foundation.org>
commit 8c2e52ebbe885c7eeaabd3b7ddcdc1246fc400d2
usb: core: config: Prevent OOB read in SS endpoint companion parsing

jira VULN-163655
cve CVE-2025-39760
commit-author Xinyu Liu <katieeliu@tencent.com>
commit cf16f408364efd8a68f39011a3b073c83a03612d
ALSA: usb-audio: Fix potential overflow of PCM transfer buffer

jira VULN-161129
cve CVE-2025-40269
commit-author Takashi Iwai <tiwai@suse.de>
commit 05a1fc5efdd8560f34a3af39c9cf1e1526cc3ddf
fs/proc: fix uaf in proc_readdir_de()

jira VULN-169407
cve CVE-2025-40271
commit-author Wei Yang <albinwyang@tencent.com>
commit 895b4c0c79b092d732544011c3cecaf7322c36a1
fbdev: Add bounds checking in bit_putcs to fix vmalloc-out-of-bounds

jira VULN-161235
cve CVE-2025-40304
commit-author Albin Babu Varghese <albinbabuvarghese20@gmail.com>
commit 3637d34b35b287ab830e66048841ace404382b67
github actions: add mutltiarch support

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 32m 46s 36m 52s
aarch64 19m 3s 20m 38s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed
x86_64 206 44
aarch64 126 43

Test Comparison

x86_64:

  • ⚠️ Status: Skipped - No baseline available

aarch64:

  • ⚠️ Status: Skipped - No baseline available

🤖 This PR was automatically generated by GitHub Actions
Run ID: 22161444043

jira VULN-162877
cve CVE-2025-38349
commit-author Linus Torvalds <torvalds@linux-foundation.org>
commit 8c2e52e

Jann Horn points out that epoll is decrementing the ep refcount and then
doing a

    mutex_unlock(&ep->mtx);

afterwards. That's very wrong, because it can lead to a use-after-free.

That pattern is actually fine for the very last reference, because the
code in question will delay the actual call to "ep_free(ep)" until after
it has unlocked the mutex.

But it's wrong for the much subtler "next to last" case when somebody
*else* may also be dropping their reference and free the ep while we're
still using the mutex.

Note that this is true even if that other user is also using the same ep
mutex: mutexes, unlike spinlocks, can not be used for object ownership,
even if they guarantee mutual exclusion.

A mutex "unlock" operation is not atomic, and as one user is still
accessing the mutex as part of unlocking it, another user can come in
and get the now released mutex and free the data structure while the
first user is still cleaning up.

See our mutex documentation in Documentation/locking/mutex-design.rst,
in particular the section [1] about semantics:

	"mutex_unlock() may access the mutex structure even after it has
	 internally released the lock already - so it's not safe for
	 another context to acquire the mutex and assume that the
	 mutex_unlock() context is not using the structure anymore"

So if we drop our ep ref before the mutex unlock, but we weren't the
last one, we may then unlock the mutex, another user comes in, drops
_their_ reference and releases the 'ep' as it now has no users - all
while the mutex_unlock() is still accessing it.

Fix this by simply moving the ep refcount dropping to outside the mutex:
the refcount itself is atomic, and doesn't need mutex protection (that's
the whole _point_ of refcounts: unlike mutexes, they are inherently
about object lifetimes).

	Reported-by: Jann Horn <jannh@google.com>
Link: https://docs.kernel.org/locking/mutex-design.html#semantics [1]
	Cc: Alexander Viro <viro@zeniv.linux.org.uk>
	Cc: Christian Brauner <brauner@kernel.org>
	Cc: Jan Kara <jack@suse.cz>
	Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit 8c2e52e)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira VULN-163655
cve CVE-2025-39760
commit-author Xinyu Liu <katieeliu@tencent.com>
commit cf16f40

usb_parse_ss_endpoint_companion() checks descriptor type before length,
enabling a potentially odd read outside of the buffer size.

Fix this up by checking the size first before looking at any of the
fields in the descriptor.

	Signed-off-by: Xinyu Liu <katieeliu@tencent.com>
	Cc: stable <stable@kernel.org>
	Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit cf16f40)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira VULN-161129
cve CVE-2025-40269
commit-author Takashi Iwai <tiwai@suse.de>
commit 05a1fc5

The PCM stream data in USB-audio driver is transferred over USB URB
packet buffers, and each packet size is determined dynamically.  The
packet sizes are limited by some factors such as wMaxPacketSize USB
descriptor.  OTOH, in the current code, the actually used packet sizes
are determined only by the rate and the PPS, which may be bigger than
the size limit above.  This results in a buffer overflow, as reported
by syzbot.

Basically when the limit is smaller than the calculated packet size,
it implies that something is wrong, most likely a weird USB
descriptor.  So the best option would be just to return an error at
the parameter setup time before doing any further operations.

This patch introduces such a sanity check, and returns -EINVAL when
the packet size is greater than maxpacksize.  The comparison with
ep->packsize[1] alone should suffice since it's always equal or
greater than ep->packsize[0].

	Reported-by: syzbot+bfd77469c8966de076f7@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=bfd77469c8966de076f7
Link: https://lore.kernel.org/690b6b46.050a0220.3d0d33.0054.GAE@google.com
	Cc: Lizhi Xu <lizhi.xu@windriver.com>
	Cc: <stable@vger.kernel.org>
Link: https://patch.msgid.link/20251109091211.12739-1-tiwai@suse.de
	Signed-off-by: Takashi Iwai <tiwai@suse.de>
(cherry picked from commit 05a1fc5)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira VULN-169407
cve CVE-2025-40271
commit-author Wei Yang <albinwyang@tencent.com>
commit 895b4c0

Pde is erased from subdir rbtree through rb_erase(), but not set the node
to EMPTY, which may result in uaf access.  We should use RB_CLEAR_NODE()
set the erased node to EMPTY, then pde_subdir_next() will return NULL to
avoid uaf access.

We found an uaf issue while using stress-ng testing, need to run testcase
getdent and tun in the same time.  The steps of the issue is as follows:

1) use getdent to traverse dir /proc/pid/net/dev_snmp6/, and current
   pde is tun3;

2) in the [time windows] unregister netdevice tun3 and tun2, and erase
   them from rbtree.  erase tun3 first, and then erase tun2.  the
   pde(tun2) will be released to slab;

3) continue to getdent process, then pde_subdir_next() will return
   pde(tun2) which is released, it will case uaf access.

CPU 0                                      |    CPU 1
-------------------------------------------------------------------------
traverse dir /proc/pid/net/dev_snmp6/      |   unregister_netdevice(tun->dev)   //tun3 tun2
sys_getdents64()                           |
  iterate_dir()                            |
    proc_readdir()                         |
      proc_readdir_de()                    |     snmp6_unregister_dev()
        pde_get(de);                       |       proc_remove()
        read_unlock(&proc_subdir_lock);    |         remove_proc_subtree()
                                           |           write_lock(&proc_subdir_lock);
        [time window]                      |           rb_erase(&root->subdir_node, &parent->subdir);
                                           |           write_unlock(&proc_subdir_lock);
        read_lock(&proc_subdir_lock);      |
        next = pde_subdir_next(de);        |
        pde_put(de);                       |
        de = next;    //UAF                |

rbtree of dev_snmp6
                        |
                    pde(tun3)
                     /    \
                  NULL  pde(tun2)

Link: https://lkml.kernel.org/r/20251025024233.158363-1-albin_yang@163.com
	Signed-off-by: Wei Yang <albinwyang@tencent.com>
	Cc: Al Viro <viro@zeniv.linux.org.uk>
	Cc: Christian Brauner <brauner@kernel.org>
	Cc: wangzijie <wangzijie1@honor.com>
	Cc: Alexey Dobriyan <adobriyan@gmail.com>
	Cc: <stable@vger.kernel.org>
	Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 895b4c0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira VULN-161235
cve CVE-2025-40304
commit-author Albin Babu Varghese <albinbabuvarghese20@gmail.com>
commit 3637d34

Add bounds checking to prevent writes past framebuffer boundaries when
rendering text near screen edges. Return early if the Y position is off-screen
and clip image height to screen boundary. Break from the rendering loop if the
X position is off-screen. When clipping image width to fit the screen, update
the character count to match the clipped width to prevent buffer size
mismatches.

Without the character count update, bit_putcs_aligned and bit_putcs_unaligned
receive mismatched parameters where the buffer is allocated for the clipped
width but cnt reflects the original larger count, causing out-of-bounds writes.

	Reported-by: syzbot+48b0652a95834717f190@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=48b0652a95834717f190
	Suggested-by: Helge Deller <deller@gmx.de>
	Tested-by: syzbot+48b0652a95834717f190@syzkaller.appspotmail.com
	Signed-off-by: Albin Babu Varghese <albinbabuvarghese20@gmail.com>
	Signed-off-by: Helge Deller <deller@gmx.de>
(cherry picked from commit 3637d34)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
@github-actions
Copy link

🤖 Validation Checks In Progress Workflow run: https://github.com/ctrliq/kernel-src-tree/actions/runs/22164577301

@github-actions
Copy link

🔍 Interdiff Analysis

  • ⚠️ PR commit 0f8e76c7695 (eventpoll: don't decrement ep refcount while still holding the ep mutex) → upstream 8c2e52ebbe88
    Differences found:
################################################################################
!    REJECTED PATCH2 HUNKS - could not be compared; manual review needed       !
################################################################################

--- b/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -844,7 +845,6 @@
 {
 	struct rb_node *rbp, *next;
 	struct epitem *epi;
-	bool dispose;
 
 	/* We need to release all tasks waiting for these file */
 	if (waitqueue_active(&ep->poll_wait))

This is an automated interdiff check for backported commits.

@github-actions
Copy link

Validation checks completed successfully View full results: https://github.com/ctrliq/kernel-src-tree/actions/runs/22164577301

@ciq-kernel-automation ciq-kernel-automation bot changed the title [ciqlts9_6] Multiple patches tested (5 commits) [ciqlts9_6] Multiple patches tested (6 commits) Feb 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments