CVE-2025-21925: llc: do not use skb_get() before dev_queue_xmit()

Published Apr 1, 2025
·
Updated

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

18 affected components
Linux Kernel
Linux Linux kernel>=2.6.13<5.4.291
Linux Linux kernel>=5.5<5.10.235
Linux Linux kernel>=5.11<5.15.179
Linux Linux kernel>=5.16<6.1.131
Linux Linux kernel>=6.2<6.6.83
Linux Linux kernel>=6.7<6.12.19
Linux Linux kernel>=6.13<6.13.7
Linux Linux kernel=2.6.12
Linux Linux kernel=2.6.12-rc2
Linux Linux kernel=2.6.12-rc3
Linux Linux kernel=2.6.12-rc4
Linux Linux kernel=2.6.12-rc5
Linux Linux kernel=6.14-rc1
Linux Linux kernel=6.14-rc2
Linux Linux kernel=6.14-rc3
Linux Linux kernel=6.14-rc4
Linux Linux kernel=6.14-rc5

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. 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
  2. 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

Apr 1, 2025
CVE Published
via MITRE·03:40 PM
Data Sourced
via MITRE·03:40 PM
Description
Data Sourced
via NVD·04:15 PM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2025-21925?

CVE-2025-21925 is considered a medium severity vulnerability in the Linux kernel.

2

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.

3

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.

4

Which devices are affected by CVE-2025-21925?

Devices not supporting IFF_TX_SKB_SHARING are vulnerable to CVE-2025-21925.

5

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.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203