CVE-2025-22111
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
16/04/2025
Last modified:
19/01/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: Remove RTNL dance for SIOCBRADDIF and SIOCBRDELIF.<br />
<br />
SIOCBRDELIF is passed to dev_ioctl() first and later forwarded to<br />
br_ioctl_call(), which causes unnecessary RTNL dance and the splat<br />
below [0] under RTNL pressure.<br />
<br />
Let&#39;s say Thread A is trying to detach a device from a bridge and<br />
Thread B is trying to remove the bridge.<br />
<br />
In dev_ioctl(), Thread A bumps the bridge device&#39;s refcnt by<br />
netdev_hold() and releases RTNL because the following br_ioctl_call()<br />
also re-acquires RTNL.<br />
<br />
In the race window, Thread B could acquire RTNL and try to remove<br />
the bridge device. Then, rtnl_unlock() by Thread B will release RTNL<br />
and wait for netdev_put() by Thread A.<br />
<br />
Thread A, however, must hold RTNL after the unlock in dev_ifsioc(),<br />
which may take long under RTNL pressure, resulting in the splat by<br />
Thread B.<br />
<br />
Thread A (SIOCBRDELIF) Thread B (SIOCBRDELBR)<br />
---------------------- ----------------------<br />
sock_ioctl sock_ioctl<br />
`- sock_do_ioctl `- br_ioctl_call<br />
`- dev_ioctl `- br_ioctl_stub<br />
|- rtnl_lock |<br />
|- dev_ifsioc &#39;<br />
&#39; |- dev = __dev_get_by_name(...)<br />
|- netdev_hold(dev, ...) .<br />
/ |- rtnl_unlock ------. |<br />
| |- br_ioctl_call `---> |- rtnl_lock<br />
Race | | `- br_ioctl_stub |- br_del_bridge<br />
Window | | | |- dev = __dev_get_by_name(...)<br />
| | | May take long | `- br_dev_delete(dev, ...)<br />
| | | under RTNL pressure | `- unregister_netdevice_queue(dev, ...)<br />
| | | | `- rtnl_unlock<br />
\ | |- rtnl_lock
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15 (including) | 6.14.2 (excluding) |
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/00fe0ac64efd1f5373b3dd9f1f84b19235371e39
- https://git.kernel.org/stable/c/338a0f3c66aef4ee13052880d02200aae8f2d8a8
- https://git.kernel.org/stable/c/4888e1dcc341e9a132ef7b8516234b3c3296de56
- https://git.kernel.org/stable/c/d767ce15045df510f55cdd2af5df0eee71f928d0
- https://git.kernel.org/stable/c/ed3ba9b6e280e14cc3148c1b226ba453f02fa76c
- https://git.kernel.org/stable/c/f51e471cb1577d510c3096e126678e1ea20d2efd



