CVE-2026-72112: io_uring/bpf-ops: reject re-registration of an already-bound ops
In the Linux kernel, the following vulnerability has been resolved:
iouring/bpf-ops: reject re-registration of an already-bound ops
ioinstallbpf() only rejects a second registration on the ctx side (ctx->bpfops) and sets the per-map back-pointer ops->priv unconditionally. The structops link path never advances a map past BPFSTRUCTOPSSTATEREADY, so the same iouringbpfops map can be registered more than once, and bpfioreg() re-resolves the target ring via fget(ops->ringfd) on every call. A caller can therefore point the same ringfd at a different ioringctx between two BPFLINKCREATE calls.
The second registration passes the ctx->bpfops check (the new ctx has none) and overwrites ops->priv, orphaning the first ctx. Teardown (ioejectbpf()/bpfiounreg()) only reaches a ctx through ops->priv, so the orphaned ctx is never torn down: its ctx->loopstep keeps pointing into the structops trampoline, which is freed once the map is gone. A later iouringenter() on the orphaned ring then calls the dangling ctx->loopstep from iorunloop() -- a use-after-free of freed executable memory, reachable by a task with CAPBPF + CAPPERFMON.
Reject registration when ops->priv is already set, as hidbpfreg() does for its structops.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-72112?
CVE-2026-72112 has a risk rating of 52, indicating a moderate level of severity.
How do I fix CVE-2026-72112?
To resolve CVE-2026-72112, ensure you apply the latest updates for the Linux kernel that address this vulnerability.
What are the consequences of CVE-2026-72112?
CVE-2026-72112 may lead to potential use-after-free vulnerabilities that can be exploited to compromise system integrity.
Which systems are affected by CVE-2026-72112?
CVE-2026-72112 affects systems running specific versions of the Linux kernel that utilize io_uring and bpf-ops.
When was CVE-2026-72112 published?
CVE-2026-72112 was published on August 15, 2026.