CVE-2026-80519: ovpn: finish crypto callback cleanup before peer release
In the Linux kernel, the following vulnerability has been resolved:
ovpn: finish crypto callback cleanup before peer release
Crypto completion callbacks hold both key-slot and peer references. The peer reference pins the netdev, and dropping the last peer reference can let netdev unregistration and module removal make progress.
Do not release that peer reference before the callback has finished its own cleanup. If ovpncryptokeyslotput runs after ovpnpeerput, it can schedule an RCU callback backed by module text after ovpncleanup rcubarrier has already run. The TX error path also freed the remaining skb after ovpnpeerput, leaving callback cleanup outside the peer/netdev lifetime window.
Release the key slot and free any remaining skb first, then drop the peer reference as the last callback action.
Event History
Frequently Asked Questions
What conditions are needed to trigger the issue?
The issue is tied to ovpn crypto completion callbacks that hold key-slot and peer references. It can occur when the peer reference is released before callback cleanup, including the TX error path where an skb may be freed after ovpn_peer_put.
What is the practical impact of the incorrect cleanup order?
Dropping the last peer reference can allow netdev unregistration and module removal to proceed while callback cleanup remains pending. A later key-slot release can schedule an RCU callback backed by module text after ovpn_cleanup has already completed its rcu_barrier.
What does the fix change?
The fix completes key-slot release and frees any remaining skb before dropping the peer reference. The peer reference is made the final action in the callback so the peer and netdev remain alive through callback cleanup.