diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 225ac33ac1963432d9543b52120f0d7398e3acbb..9591db630051e0c2f9ce420f70060acac94c1135 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -2336,11 +2336,12 @@ static int __maybe_unused ravb_suspend(struct device *dev) netif_device_detach(ndev); + rtnl_lock(); if (priv->wol_enabled) ret = ravb_wol_setup(ndev); else ret = ravb_close(ndev); - + rtnl_unlock(); return ret; } @@ -2377,15 +2378,18 @@ static int __maybe_unused ravb_resume(struct device *dev) ravb_write(ndev, priv->desc_bat_dma, DBAT); if (netif_running(ndev)) { + rtnl_lock(); if (priv->wol_enabled) { ret = ravb_wol_restore(ndev); - if (ret) + if (ret) { + rtnl_unlock(); return ret; + } } ret = ravb_open(ndev); + rtnl_unlock(); if (ret < 0) return ret; - ravb_set_rx_mode(ndev); netif_device_attach(ndev); }