net: davicom: fix UAF in dm9000_drv_remove
BugLink: https://bugs.launchpad.net/bugs/2111953 [ Upstream commit 19e65c45a1507a1a2926649d2db3583ed9d55fd9 ] dm is netdev private data and it cannot be used after free_netdev() call. Using dm after free_netdev() can cause UAF bug. Fix it by moving free_netdev() at the end of the function. This is similar to the issue fixed in commitad297cd2db("net: qcom/emac: fix UAF in emac_remove"). This bug is detected by our static analysis tool. Fixes:cf9e60aa69("net: davicom: Fix regulator not turned off on driver removal") Signed-off-by: Chenyuan Yang <chenyuan0y@gmail.com> CC: Uwe Kleine-König <u.kleine-koenig@baylibre.com> Link: https://patch.msgid.link/20250123214213.623518-1-chenyuan0y@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> CVE-2025-21715 Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com> Signed-off-by: Mehmet Basaran <mehmet.basaran@canonical.com>
This commit is contained in:
committed by
Mehmet Basaran
parent
80c9fb54fb
commit
3b1f01e809
@@ -1777,10 +1777,11 @@ static void dm9000_drv_remove(struct platform_device *pdev)
|
||||
|
||||
unregister_netdev(ndev);
|
||||
dm9000_release_board(pdev, dm);
|
||||
free_netdev(ndev); /* free device structure */
|
||||
if (dm->power_supply)
|
||||
regulator_disable(dm->power_supply);
|
||||
|
||||
free_netdev(ndev); /* free device structure */
|
||||
|
||||
dev_dbg(&pdev->dev, "released and freed device\n");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user