Description
In the Linux kernel, the following vulnerability has been resolved: net: sungem: fix probe error cleanup gem_init_one() calls gem_remove_one() when register_netdev() fails. gem_remove_one() unregisters and frees resources owned by the net_device, including the DMA block, MMIO mapping, PCI regions, and the net_device itself. gem_init_one() then falls through to its own cleanup labels and frees the same resources again. Keep the register_netdev() error path in gem_init_one(): clear drvdata so PM/remove paths do not see a half-registered device, remove the NAPI instance added during probe, and let the existing cleanup labels release the resources once. The issue was found by a local static-analysis checker for probe error paths. The reported path was manually inspected before sending this fix. Compile-tested with CONFIG_SUNGEM=y. Runtime testing was not performed because no sungem hardware is available.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < f3bd60b26814b7c3c57c629abb0857dfc76d214aaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < f1d04fefb0c2a2de32d9cee22cdc2088be3758d1affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 331c99029a1cee1111f82f63d15b3cdebefbd341affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < a63eaf7605d1579cf3f551792e478cfaf5ac37d1affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < fb73cdc50b6755e5c3a80a195b2708a39ada0230affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < b15a3cc68e2450aa0edd94a74a7bdd45fcc17dd9affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < bc49e8746584564dba47d963d1916cc876fc6f6baffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 36dea2f639249460d13f6ca66b2a9064187cd34daffected
Linux Linux
Default version status: affected
2.6.12affected0 to < 2.6.12unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/f3bd60b26814b7c3c57c629abb0857dfc76d214a ↗
- https://git.kernel.org/stable/c/f1d04fefb0c2a2de32d9cee22cdc2088be3758d1 ↗
- https://git.kernel.org/stable/c/331c99029a1cee1111f82f63d15b3cdebefbd341 ↗
- https://git.kernel.org/stable/c/a63eaf7605d1579cf3f551792e478cfaf5ac37d1 ↗
- https://git.kernel.org/stable/c/fb73cdc50b6755e5c3a80a195b2708a39ada0230 ↗
- https://git.kernel.org/stable/c/b15a3cc68e2450aa0edd94a74a7bdd45fcc17dd9 ↗
- https://git.kernel.org/stable/c/bc49e8746584564dba47d963d1916cc876fc6f6b ↗
- https://git.kernel.org/stable/c/36dea2f639249460d13f6ca66b2a9064187cd34d ↗