CVE-2026-64579

Source
https://cve.org/CVERecord?id=CVE-2026-64579
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64579.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-64579
Downstream
Published
2026-08-05T08:09:34.346Z
Modified
2026-08-07T03:30:46.829315907Z
Summary
xfrm: policy: preallocate inexact bins before xfrm_hash_rebuild reinsert
Details

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

xfrm: policy: preallocate inexact bins before xfrmhashrebuild reinsert

xfrmhashrebuild()'s first loop preallocates the bins/chains the reinsert loop needs, so the reinsert (after hlistdelrcu()) cannot allocate or fail. But its guard is inverted: it skips policies with prefixlen < threshold and preallocates for the rest.

prefixlen < threshold is exactly when policyhashbysel() returns NULL and the reinsert takes the allocating xfrmpolicyinexactinsert() path. So the loop preallocates for the exact policies (which never allocate) and skips the inexact ones, whose bin/node is then allocated GFPATOMIC during reinsert. On failure the error path only WARNONCE()s and continues, leaving a poisoned bydst node; the next rebuild's hlistdelrcu() dereferences LISTPOISON2 and takes a GPF. Reachable under memory pressure, deterministic via failslab.

Invert the guard so preallocation covers exactly the reinserted policies; the reinsert then allocates nothing and cannot fail.

Crash: Oops: general protection fault, probably for non-canonical address 0xfbd59c0000000024: 0000 [#1] SMP KASAN NOPTI KASAN: maybe wild-memory-access in range [0xdead...] ... Workqueue: events xfrmhashrebuild RIP: 0010:xfrmhashrebuild+0x5b3/0x1190 RAX: dead000000000122 (LISTPOISON2 + offset) ... Call Trace: hlistdelrcu (include/linux/rculist.h:599) xfrmhashrebuild (net/xfrm/xfrmpolicy.c:1365) processonework (kernel/workqueue.c:3322) workerthread (kernel/workqueue.c:3486) kthread (kernel/kthread.c:436) retfromfork (arch/x86/kernel/process.c:158) retfromforkasm (arch/x86/entry/entry_64.S:245) ... Kernel panic - not syncing: Fatal exception in interrupt

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64579.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
24969facd704a5f0dd8e08da86bf32a9ce972bee
Fixed
d9d9cc21cc90014724a14c447e3d587be9447107
Fixed
94c00391a5117530188334f740ce26d3f1256190
Fixed
7acc5ed2f33608a3d83b64f50a5766843b6e2485
Fixed
6aa3796d18a9fda953ad76a62b57bf6c145cb9ef
Fixed
f38f8cce2f7e79775b3db7e8a5eacda04ac908e4

Database specific

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

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.0.0
Fixed
6.6.148
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.101
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.42
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.6

Database specific

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