High · published September 15, 2025
In the Linux kernel, the following vulnerability has been resolved:
ipv6/addrconf: fix a potential refcount underflow for idev
Now in addrconf_mod_rs_timer(), reference idev depends on whether
rs_timer is not pending. Then modify rs_timer timeout.
There is a time gap in [1], during which if the pending rs_timer
becomes not pending. It will miss to hold idev, but the rs_timer
is activated. Thus rs_timer callback function addrconf_rs_timer()
will be executed and put idev later without holding idev. A refcount
underflow issue for idev can be caused by this.
if (!timer_pending(&idev->rs_timer))
in6_dev_hold(idev);
<--------------[1]
mod_timer(&idev->rs_timer, jiffies + when);
To fix the issue, hold idev if mod_timer() return 0.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 3.10.105, < 4.14.322 | 4.14.322 |
| linux/linux_kernel | ≥ 4.15, < 4.19.291 | 4.19.291 |
| linux/linux_kernel | ≥ 4.20, < 5.4.251 | 5.4.251 |
| linux/linux_kernel | ≥ 5.5, < 5.10.188 | 5.10.188 |
| linux/linux_kernel | ≥ 5.11, < 5.15.121 | 5.15.121 |
| linux/linux_kernel | ≥ 5.16, < 6.1.40 | 6.1.40 |
| linux/linux_kernel | ≥ 6.2, < 6.4.5 | 6.4.5 |
| linux/linux_kernel | all versions | — |