CVE-2026-74310

Source
https://cve.org/CVERecord?id=CVE-2026-74310
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74310.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-74310
Downstream
Published
2026-08-15T05:58:10.043Z
Modified
2026-08-16T03:48:27.984639491Z
Summary
vhost/net: complete zerocopy ubufs only once
Details

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

vhost/net: complete zerocopy ubufs only once

vhost-net initializes one ubufinfo per outstanding zerocopy TX descriptor and hands it to the backend socket. The networking stack may then clone a zerocopy skb before all skb references are released. For example, batman-adv fragmentation reaches skbsplit(), which calls skbzerocopyclone() and increments the same ubuf_info refcount.

vhostzerocopycomplete() currently treats every ubuf callback as a completed vhost descriptor. It dereferences ubuf->ctx, writes the descriptor completion state, and drops the vhostnetubufref even when the callback only releases a cloned skb reference. A backend reset can therefore wait for and free the vhostnetubufref while another cloned skb still carries the same ubuf_info. A later completion then dereferences the freed ubufs pointer.

KASAN reports the stale completion as:

BUG: KASAN: slab-use-after-free in vhostzerocopycomplete+0x1d7/0x1f0 BUG: KASAN: slab-use-after-free in vhostzerocopycomplete+0x101/0x1f0 vhostzerocopycomplete skbcopyubufs _devforwardskb2 vethxmit

The freed object was allocated from vhostnetioctl() while setting the backend and freed through kfreercu()/kvfreercubulk after backend removal, while delayed skb completion still reached vhostzerocopy_complete().

Honor the generic ubufinfo refcount before touching vhost state, and run the vhost descriptor completion only for the final ubuf reference. This matches the msgzerocopy_complete() ownership rule for cloned zerocopy skbs.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/74xxx/CVE-2026-74310.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
bab632d69ee48a106e779b60cc01adfe80a72807
Fixed
ea71f873423fb73e66ad88936d6759ac0ad4aa53
Fixed
6445b945024f4c7675ae5352b2d5885cb1deea71
Fixed
a9f8a1d2e3ff511eafd4c5462481950c2f4d2b5d
Fixed
321c73baf54d971ce3771fea275c98a247f7ee35
Fixed
c069437924663539a93a1e5afe90838d9ccee284
Fixed
8f6898fe80794f2d7c3d38c1158c806e4074a1c4

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74310.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
3.1.0
Fixed
6.1.178
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.145
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.97
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.40
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.5

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74310.json"