Skip to content

Commit 645a1aa

Browse files
committed
net: mediatek: Fix potential NULL pointer dereference in dummy net_device handling
JIRA: https://issues.redhat.com/browse/RHEL-87382 Conflicts: - small unrealted code diff. commit 16f3a28 Author: Breno Leitao <leitao@debian.org> Date: Wed Jul 24 01:05:23 2024 -0700 net: mediatek: Fix potential NULL pointer dereference in dummy net_device handling Move the freeing of the dummy net_device from mtk_free_dev() to mtk_remove(). Previously, if alloc_netdev_dummy() failed in mtk_probe(), eth->dummy_dev would be NULL. The error path would then call mtk_free_dev(), which in turn called free_netdev() assuming dummy_dev was allocated (but it was not), potentially causing a NULL pointer dereference. By moving free_netdev() to mtk_remove(), we ensure it's only called when mtk_probe() has succeeded and dummy_dev is fully allocated. This addresses a potential NULL pointer dereference detected by Smatch[1]. Fixes: b209bd6 ("net: mediatek: mtk_eth_sock: allocate dummy net_device dynamically") Reported-by: Dan Carpenter <dan.carpenter@linaro.org> Closes: https://lore.kernel.org/all/4160f4e0-cbef-4a22-8b5d-42c4d399e1f7@stanley.mountain/ [1] Suggested-by: Dan Carpenter <dan.carpenter@linaro.org> Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org> Signed-off-by: Breno Leitao <leitao@debian.org> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20240724080524.2734499-1-leitao@debian.org Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Mohammad Heib <mheib@redhat.com>
1 parent cee6c9e commit 645a1aa

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

drivers/net/ethernet/mediatek/mtk_eth_soc.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2730,8 +2730,6 @@ static int mtk_free_dev(struct mtk_eth *eth)
27302730
free_netdev(eth->netdev[i]);
27312731
}
27322732

2733-
free_netdev(eth->dummy_dev);
2734-
27352733
return 0;
27362734
}
27372735

@@ -3352,6 +3350,7 @@ static int mtk_remove(struct platform_device *pdev)
33523350
netif_napi_del(&eth->tx_napi);
33533351
netif_napi_del(&eth->rx_napi);
33543352
mtk_cleanup(eth);
3353+
free_netdev(eth->dummy_dev);
33553354
mtk_mdio_cleanup(eth);
33563355

33573356
return 0;

0 commit comments

Comments
 (0)