CVE-2026-52982CWE-416

CVE-2026-52982

Critical · published June 24, 2026

CVSS v3.1
9.8
EPSS
1%
Percentile
44.4
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

net: usb: rtl8150: fix use-after-free in rtl8150_start_xmit()

syzbot reported a KASAN slab-use-after-free read in rtl8150_start_xmit()

when accessing skb->len for tx statistics after usb_submit_urb() has

been called:

BUG: KASAN: slab-use-after-free in rtl8150_start_xmit+0x71f/0x760

drivers/net/usb/rtl8150.c:712

Read of size 4 at addr ffff88810eb7a930 by task kworker/0:4/5226

The URB completion handler write_bulk_callback() frees the skb via

dev_kfree_skb_irq(dev->tx_skb). The URB may complete on another CPU

in softirq context before usb_submit_urb() returns in the submitter,

so by the time the submitter reads skb->len the skb has already been

queued to the per-CPU completion_queue and freed by net_tx_action():

CPU A (xmit) CPU B (USB completion softirq)

------------ ------------------------------

dev->tx_skb = skb;

usb_submit_urb() --+

|-------> write_bulk_callback()

| dev_kfree_skb_irq(dev->tx_skb)

| net_tx_action()

| napi_skb_cache_put() <-- free

netdev->stats.tx_bytes |

+= skb->len; <-- UAF read

Fix it by caching skb->len before submitting the URB and using the

cached value when updating the tx_bytes counter.

The pre-existing tx_bytes semantics are preserved: the counter tracks

the original frame length (skb->len), not the ETH_ZLEN/USB-alignment

padded "count" value that is handed to the device. Changing that

would be a user-visible accounting change and is out of scope for

this UAF fix.

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00536 · 44.4th percentile
Weakness
CWE-416 · Use After Free
Published
2026-06-24T21:17Z
Affected products (13)
ProductVersionsFixed in
linux/linux_kernel≥ 2.6.12.1, < 5.10.2585.10.258
linux/linux_kernel≥ 5.11, < 5.15.2095.15.209
linux/linux_kernel≥ 5.16, < 6.1.1756.1.175
linux/linux_kernel≥ 6.2, < 6.6.1416.6.141
linux/linux_kernel≥ 6.7, < 6.12.916.12.91
linux/linux_kernel≥ 6.13, < 6.18.336.18.33
linux/linux_kernel≥ 6.19, < 7.0.107.0.10
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (8)
EPSS history
Timeline
  • 24 JUN 16:28Z
    net: usb: rtl8150: fix use-after-free in rtl8150_start_xmit()
    cvelistv5