CVE-2026-53199
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
25/06/2026
Last modified:
06/07/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
hv_netvsc: use kmap_local_page in netvsc_copy_to_send_buf<br />
<br />
netvsc_copy_to_send_buf() copies page buffer entries into the VMBus<br />
send buffer using phys_to_virt() on the entry PFN. Entries for the<br />
RNDIS header and the skb linear data come from kmalloc&#39;d memory and<br />
are always in the kernel direct map, but entries for skb fragments<br />
reference page cache or user pages, which on 32-bit x86 with<br />
CONFIG_HIGHMEM=y can live above the LOWMEM boundary. For such a page<br />
phys_to_virt() returns an address outside the direct map and the<br />
subsequent memcpy() faults on the transmit softirq path, which is<br />
fatal.<br />
<br />
Map the pages with kmap_local_page() instead, handling two properties<br />
of the page buffer entries:<br />
<br />
- pb[i].pfn is a Hyper-V PFN at HV_HYP_PAGE_SIZE (4K) granularity,<br />
not a native PFN. Reconstruct the physical address first and derive<br />
the native page from it, so the mapping stays correct where<br />
PAGE_SIZE > HV_HYP_PAGE_SIZE (e.g. arm64 with 64K pages).<br />
<br />
- Since commit 41a6328b2c55 ("hv_netvsc: Preserve contiguous PFN<br />
grouping in the page buffer array"), an entry describes a full<br />
physically contiguous fragment and pb[i].len can exceed PAGE_SIZE,<br />
while kmap_local_page() maps a single page. Copy page by page,<br />
splitting at native page boundaries.<br />
<br />
The copy path only handles packets smaller than the send section size<br />
(6144 bytes by default); larger packets take the cp_partial path where<br />
only the RNDIS header is copied. So entries here are bounded by the<br />
section size and a copy is split at most once on 4K-page systems. On<br />
!CONFIG_HIGHMEM configs kmap_local_page() folds to page_address() and<br />
no mapping work is added.
Impact
Base Score 3.x
7.50
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.16 (including) | 5.10.259 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.210 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.176 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.143 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.94 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.36 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 7.0.13 (excluding) |
| cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc7:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/004e9ecfe6c5384f9e0b2f6f6389d42ec22789af
- https://git.kernel.org/stable/c/09b8a7aa5a341bb345dc492aac139525efa13515
- https://git.kernel.org/stable/c/0b38870d81ab3a04c1ab0598d9d3285f5d9d0584
- https://git.kernel.org/stable/c/16514afeb7d3d121072ba9a0b640d6c1c5507db0
- https://git.kernel.org/stable/c/695c59cf7bf707e6ff8cea01916ee50e86616933
- https://git.kernel.org/stable/c/918c0c988239aa5ab96b254e504d191af6191061
- https://git.kernel.org/stable/c/a82d4251918f37d9c5aab7b365157669fb885ec3
- https://git.kernel.org/stable/c/fe7221b4346418d27ec2daccfc09df6692b76f0b



