CVE-2026-72299: tipc: restrict socket queue dumps in enqueue tracepoints
In the Linux kernel, the following vulnerability has been resolved:
tipc: restrict socket queue dumps in enqueue tracepoints
tipcskenqueue() runs with sk->sklock.slock held while the socket is owned by user context. The spinlock protects the backlog queue in this path, but it does not serialize against the socket owner consuming or purging skreceivequeue.
KASAN reported:
CPU: 14 UID: 0 PID: 1050 Comm: tipc3 Not tainted 7.1.0-rc6+ #126 PREEMPT(lazy) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace: <TASK> dumpstacklvl+0x76/0xa0 lib/dumpstack.c:123 printreport+0xce/0x5b0 mm/kasan/report.c:482 kasanreport+0xc6/0x100 mm/kasan/report.c:597 asanreportload4noabort+0x14/0x30 mm/kasan/reportgeneric.c:380 tipcskbdump+0x1327/0x16f0 net/tipc/trace.c:73 tipclistdump+0x208/0x2e0 net/tipc/trace.c:187 tipcskdump+0xaf6/0xd60 net/tipc/socket.c:3996 traceeventraweventtipcskclass+0x312/0x5a0 net/tipc/trace.h:188 tipcskrcv+0xb1d/0x1d50 net/tipc/socket.c:2497 tipcnodexmit+0x1c3/0x1440 net/tipc/node.c:1689 tipcsendmsg+0x97a/0x1440 net/tipc/socket.c:1512 tipcsendmsg+0x52/0x80 net/tipc/socket.c:1400 socksendmsg+0x2f6/0x3e0 net/socket.c:825 splicetosocket+0x7f9/0x1010 fs/splice.c:884 dosplice+0xe21/0x2330 fs/splice.c:936 dosplice+0x153/0x260 fs/splice.c:1431 x64syssplice+0x150/0x230 fs/splice.c:1616 x64syscall+0xeb5/0x2790 arch/x86/entry/syscall64.c:41 dosyscall64+0xf3/0x620 arch/x86/entry/syscall64.c:63 entrySYSCALL64afterhwframe+0x76/0x7e arch/x86/entry/entry64.S:130 RIP: 0033:0x71624e8aafe2 Code: 08 0f 85 71 3a ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 66 2e 0f 1f 84 00 00 00 00 00 66 RSP: 002b:0000716157ffed68 EFLAGS: 00000246 ORIGRAX: 0000000000000113 RAX: ffffffffffffffda RBX: 0000716157fff6c0 RCX: 000071624e8aafe2 RDX: 000000000000005f RSI: 0000000000000000 RDI: 0000000000000066 RBP: 0000716157ffed90 R08: 0000000000008000 R09: 0000000000000001 R10: 0000000000000000 R11: 0000000000000246 R12: ffffffffffffff00 R13: 0000000000000021 R14: 0000000000000000 R15: 00007fff89799c40 </TASK>
The TIPCDUMPALL tracepoints in tipcskenqueue() also dump skreceivequeue and can therefore dereference skbs that the socket owner has already dequeued or freed. Restrict these dumps to TIPCDUMPSKBKLGQ, which matches the queue protected by the held spinlock.
Keep the change limited to the enqueue path, where the unsafe queue dump is reachable while the socket is owned by user context.