Analyzed
Published: 20 Apr 2026, 09:43
Last modified:11 May 2026, 22:08

Vulnerability Summary

Overall Risk (default)
low
22/100
CVSS Score
5.5 MEDIUM
v3.1 (nvd)
EPSS Score
0.26% LOW
0% probability 0.00%
KEV
Not listed
Ransomware
No reports
Public exploits
None found
Dark Web
Not detected

Timeline

20 Apr 2026, 09:43
Published
Vulnerability first disclosed
11 May 2026, 22:08
Last Modified
Vulnerability information updated

Description

In the Linux kernel, the following vulnerability has been resolved: net: skb: fix cross-cache free of KFENCE-allocated skb head SKB_SMALL_HEAD_CACHE_SIZE is intentionally set to a non-power-of-2 value (e.g. 704 on x86_64) to avoid collisions with generic kmalloc bucket sizes. This ensures that skb_kfree_head() can reliably use skb_end_offset to distinguish skb heads allocated from skb_small_head_cache vs. generic kmalloc caches. However, when KFENCE is enabled, kfence_ksize() returns the exact requested allocation size instead of the slab bucket size. If a caller (e.g. bpf_test_init) allocates skb head data via kzalloc() and the requested size happens to equal SKB_SMALL_HEAD_CACHE_SIZE, then slab_build_skb() -> ksize() returns that exact value. After subtracting skb_shared_info overhead, skb_end_offset ends up matching SKB_SMALL_HEAD_HEADROOM, causing skb_kfree_head() to incorrectly free the object to skb_small_head_cache instead of back to the original kmalloc cache, resulting in a slab cross-cache free: kmem_cache_free(skbuff_small_head): Wrong slab cache. Expected skbuff_small_head but got kmalloc-1k Fix this by always calling kfree(head) in skb_kfree_head(). This keeps the free path generic and avoids allocator-specific misclassification for KFENCE objects.

CVSS Metrics

  • v3.1MEDIUMScore: 5.5CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

EPSS Trends

Current EPSS score: 0.26% Percentile: 17%

Techniques & Countermeasures

  • CWE-401Missing Release of Memory after Effective Lifetime

    The product does not sufficiently track and release allocated memory after it has been used, making the memory unavailable for reallocation and reuse.

Affected Systems

  • linuxlinux

    ≥ bf9f1baa279f0758dc2297080360c5a616843927, < 128b03ccb2582a643983a48a37fda58df80edbde | ≥ bf9f1baa279f0758dc2297080360c5a616843927, < 60313768a8edc7094435975587c00c2d7b834083 | ≥ bf9f1baa279f0758dc2297080360c5a616843927, < 2d64618ea846d8d033477311f805ca487d6a6696 | ≥ bf9f1baa279f0758dc2297080360c5a616843927, < 474e00b935db250cac320d10c1d3cf4e44b46721 | ≥ bf9f1baa279f0758dc2297080360c5a616843927, < 0f42e3f4fe2a58394e37241d02d9ca6ab7b7d516 | 6.3

  • linuxlinux kernel

    ≥ 6.3, < 6.6.136 | ≥ 6.7, < 6.12.82 | ≥ 6.13, < 6.18.23 | ≥ 6.19, < 6.19.13 | 7.0:rc1 | 7.0:rc2 | 7.0:rc3 | 7.0:rc4 | 7.0:rc5 | 7.0:rc6 | 7.0:rc7

References (5)