CVE-2025-21925: llc: do not use skb_get() before dev_queue_xmit()
In the Linux kernel, the following vulnerability has been resolved:
llc: do not use skbget() before devqueuexmit()
syzbot is able to crash hosts [1], using llc and devices not supporting IFFTXSKBSHARING.
In this case, e1000 driver calls ethskbpad(), while the skb is shared.
Simply replace skbget() by skbclone() in net/llc/llcsac.c
Note that e1000 driver might have an issue with pktgen, because it does not clear IFFTXSKBSHARING, this is an orthogonal change.
We need to audit other skbget() uses in net/llc.
[1]
kernel BUG at net/core/skbuff.c:2178 ! Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI CPU: 0 UID: 0 PID: 16371 Comm: syz.2.2764 Not tainted 6.14.0-rc4-syzkaller-00052-gac9c34d1e45a #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 RIP: 0010:pskbexpandhead+0x6ce/0x1240 net/core/skbuff.c:2178 Call Trace: <TASK> skbpad+0x18a/0x610 net/core/skbuff.c:2466 skbputpadto include/linux/skbuff.h:3843 [inline] skbputpadto include/linux/skbuff.h:3862 [inline] ethskbpad include/linux/etherdevice.h:656 [inline] e1000xmitframe+0x2d99/0x5800 drivers/net/ethernet/intel/e1000/e1000main.c:3128 netdevstartxmit include/linux/netdevice.h:5151 [inline] netdevstartxmit include/linux/netdevice.h:5160 [inline] xmitone net/core/dev.c:3806 [inline] devhardstartxmit+0x9a/0x7b0 net/core/dev.c:3822 schdirectxmit+0x1ae/0xc30 net/sched/schgeneric.c:343 devxmitskb net/core/dev.c:4045 [inline] devqueuexmit+0x13d4/0x43e0 net/core/dev.c:4621 devqueuexmit include/linux/netdevice.h:3313 [inline] llcsapactionsendtestc+0x268/0x320 net/llc/llcsac.c:144 llcexecsaptransactions net/llc/llcsap.c:153 [inline] llcsapnextstate net/llc/llcsap.c:182 [inline] llcsapstateprocess+0x239/0x510 net/llc/llcsap.c:209 llcuisendmsg+0xd0d/0x14e0 net/llc/afllc.c:993 socksendmsgnosec net/socket.c:718 [inline]
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
In net/llc, audit and ensure llc code does not call skb_get() before dev_queue_xmit(); the text explicitly states: "llc: do not use skb_get() before dev_queue_xmit()".
Linux kernel net/llc skb_get() usage before dev_queue_xmit() = disallowed - Configuration
Simply replace skb_get() by skb_clone() in net/llc/llc_s_ac.c, as described in the resolution for pskb_expand_head crash.
Linux kernel net/llc/llc_s_ac.c skb_get() vs skb_clone() in llc_s_ac.c = replace skb_get() with skb_clone()
Event History
Frequently Asked Questions
What is the severity of CVE-2025-21925?
CVE-2025-21925 is considered a medium severity vulnerability in the Linux kernel.
How do I fix CVE-2025-21925?
To fix CVE-2025-21925, update your Linux kernel to the latest version that includes the patch for this vulnerability.
What causes CVE-2025-21925?
CVE-2025-21925 is caused by improper handling of shared socket buffers in the llc layer before the transmission queue.
Which devices are affected by CVE-2025-21925?
Devices not supporting IFF_TX_SKB_SHARING are vulnerable to CVE-2025-21925.
Is my Linux system vulnerable to CVE-2025-21925?
To determine if your Linux system is vulnerable to CVE-2025-21925, check if you are running an affected version of the Linux kernel.