Commit f656661e authored by Chenyuan Yang's avatar Chenyuan Yang Committed by Lin Yujun
Browse files

net: davicom: fix UAF in dm9000_drv_remove

stable inclusion
from stable-v6.6.76
commit c411f9a5fdc9158e8f7c57eac961d3df3eb4d8ca
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBPBGP
CVE: CVE-2025-21715

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c411f9a5fdc9158e8f7c57eac961d3df3eb4d8ca



--------------------------------

[ 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 commit
ad297cd2 ("net: qcom/emac: fix UAF in emac_remove").

This bug is detected by our static analysis tool.

Fixes: cf9e60aa ("net: davicom: Fix regulator not turned off on driver removal")
Signed-off-by: default avatarChenyuan 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: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarLin Yujun <linyujun809@huawei.com>
parent 9d22d5b7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1778,10 +1778,11 @@ 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");
	return 0;
}