ravb: Fix up dma_free_coherent() call in ravb_remove()
[ Upstream commit e6864af61493113558c502b5cd0d754c19b93277 ]
In ravb_remove(), dma_free_coherent() should be call after
unregister_netdev(). Otherwise, this controller is possible to use
the freed buffer.
Fixes: c156633f13
("Renesas Ethernet AVB driver proper")
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Link: https://lore.kernel.org/r/20231005011201.14368-2-yoshihiro.shimoda.uh@renesas.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
1673841da0
commit
ef7a0d51bf
@@ -2249,14 +2249,14 @@ static int ravb_remove(struct platform_device *pdev)
|
|||||||
if (priv->chip_id != RCAR_GEN2)
|
if (priv->chip_id != RCAR_GEN2)
|
||||||
ravb_ptp_stop(ndev);
|
ravb_ptp_stop(ndev);
|
||||||
|
|
||||||
dma_free_coherent(ndev->dev.parent, priv->desc_bat_size, priv->desc_bat,
|
|
||||||
priv->desc_bat_dma);
|
|
||||||
/* Set reset mode */
|
/* Set reset mode */
|
||||||
ravb_write(ndev, CCC_OPC_RESET, CCC);
|
ravb_write(ndev, CCC_OPC_RESET, CCC);
|
||||||
unregister_netdev(ndev);
|
unregister_netdev(ndev);
|
||||||
netif_napi_del(&priv->napi[RAVB_NC]);
|
netif_napi_del(&priv->napi[RAVB_NC]);
|
||||||
netif_napi_del(&priv->napi[RAVB_BE]);
|
netif_napi_del(&priv->napi[RAVB_BE]);
|
||||||
ravb_mdio_release(priv);
|
ravb_mdio_release(priv);
|
||||||
|
dma_free_coherent(ndev->dev.parent, priv->desc_bat_size, priv->desc_bat,
|
||||||
|
priv->desc_bat_dma);
|
||||||
pm_runtime_put_sync(&pdev->dev);
|
pm_runtime_put_sync(&pdev->dev);
|
||||||
pm_runtime_disable(&pdev->dev);
|
pm_runtime_disable(&pdev->dev);
|
||||||
free_netdev(ndev);
|
free_netdev(ndev);
|
||||||
|
Reference in New Issue
Block a user