| From bippy-1.2.0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@kernel.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2025-37989: net: phy: leds: fix memory leak |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| net: phy: leds: fix memory leak |
| |
| A network restart test on a router led to an out-of-memory condition, |
| which was traced to a memory leak in the PHY LED trigger code. |
| |
| The root cause is misuse of the devm API. The registration function |
| (phy_led_triggers_register) is called from phy_attach_direct, not |
| phy_probe, and the unregister function (phy_led_triggers_unregister) |
| is called from phy_detach, not phy_remove. This means the register and |
| unregister functions can be called multiple times for the same PHY |
| device, but devm-allocated memory is not freed until the driver is |
| unbound. |
| |
| This also prevents kmemleak from detecting the leak, as the devm API |
| internally stores the allocated pointer. |
| |
| Fix this by replacing devm_kzalloc/devm_kcalloc with standard |
| kzalloc/kcalloc, and add the corresponding kfree calls in the unregister |
| path. |
| |
| The Linux kernel CVE team has assigned CVE-2025-37989 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 5.4.293 with commit 966d6494e2ed9be9052fcd9815afba830896aaf8 |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 5.10.237 with commit 95bed65cc0eb2a610550abf849a8b94374da80a7 |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 5.15.181 with commit 663c3da86e807c6c07ed48f911c7526fad6fe1ff |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 6.1.136 with commit f41f097f68a33d392579885426d0734a81219501 |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 6.6.89 with commit 618541a6cc1511064dfa58c89b3445e21844092f |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 6.12.26 with commit 41143e71052a00d654c15dc924fda50c1e7357d0 |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 6.14.5 with commit 7f3d5880800f962c347777c4f8358f29f5fc403c |
| Issue introduced in 4.10 with commit 2e0bc452f4721520502575362a9cd3c1248d2337 and fixed in 6.15 with commit b7f0ee992adf601aa00c252418266177eb7ac2bc |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2025-37989 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/net/phy/phy_led_triggers.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/966d6494e2ed9be9052fcd9815afba830896aaf8 |
| https://git.kernel.org/stable/c/95bed65cc0eb2a610550abf849a8b94374da80a7 |
| https://git.kernel.org/stable/c/663c3da86e807c6c07ed48f911c7526fad6fe1ff |
| https://git.kernel.org/stable/c/f41f097f68a33d392579885426d0734a81219501 |
| https://git.kernel.org/stable/c/618541a6cc1511064dfa58c89b3445e21844092f |
| https://git.kernel.org/stable/c/41143e71052a00d654c15dc924fda50c1e7357d0 |
| https://git.kernel.org/stable/c/7f3d5880800f962c347777c4f8358f29f5fc403c |
| https://git.kernel.org/stable/c/b7f0ee992adf601aa00c252418266177eb7ac2bc |