CVE-2025-68245
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
16/12/2025
Última modificación:
16/12/2025
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: netpoll: fix incorrect refcount handling causing incorrect cleanup<br />
<br />
commit efa95b01da18 ("netpoll: fix use after free") incorrectly<br />
ignored the refcount and prematurely set dev->npinfo to NULL during<br />
netpoll cleanup, leading to improper behavior and memory leaks.<br />
<br />
Scenario causing lack of proper cleanup:<br />
<br />
1) A netpoll is associated with a NIC (e.g., eth0) and netdev->npinfo is<br />
allocated, and refcnt = 1<br />
- Keep in mind that npinfo is shared among all netpoll instances. In<br />
this case, there is just one.<br />
<br />
2) Another netpoll is also associated with the same NIC and<br />
npinfo->refcnt += 1.<br />
- Now dev->npinfo->refcnt = 2;<br />
- There is just one npinfo associated to the netdev.<br />
<br />
3) When the first netpolls goes to clean up:<br />
- The first cleanup succeeds and clears np->dev->npinfo, ignoring<br />
refcnt.<br />
- It basically calls `RCU_INIT_POINTER(np->dev->npinfo, NULL);`<br />
- Set dev->npinfo = NULL, without proper cleanup<br />
- No ->ndo_netpoll_cleanup() is either called<br />
<br />
4) Now the second target tries to clean up<br />
- The second cleanup fails because np->dev->npinfo is already NULL.<br />
* In this case, ops->ndo_netpoll_cleanup() was never called, and<br />
the skb pool is not cleaned as well (for the second netpoll<br />
instance)<br />
- This leaks npinfo and skbpool skbs, which is clearly reported by<br />
kmemleak.<br />
<br />
Revert commit efa95b01da18 ("netpoll: fix use after free") and adds<br />
clarifying comments emphasizing that npinfo cleanup should only happen<br />
once the refcount reaches zero, ensuring stable and correct netpoll<br />
behavior.
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/49c8d2c1f94cc2f4d1a108530d7ba52614b874c2
- https://git.kernel.org/stable/c/4afd4ebbad52aa146838ec23082ba393e426a2bb
- https://git.kernel.org/stable/c/890472d6fbf062e6de7fdd56642cb305ab79d669
- https://git.kernel.org/stable/c/8e6a50edad11e3e1426e4c29e7aa6201f3468ac2
- https://git.kernel.org/stable/c/9a51b5ccd1c79afec1c03a4e1e6688da52597556
- https://git.kernel.org/stable/c/9b0bb18b4b9dc017c1825a2c5e763615e34a1593
- https://git.kernel.org/stable/c/c645693180a98606c430825223d2029315d85e9d
- https://git.kernel.org/stable/c/c79a6d9da29219616b118a3adce9a14cd30f9bd0



