On 23.01.2025 16:08, Kory Maincent wrote: > On Thu, 23 Jan 2025 13:33:30 +0200 > Claudiu Beznea <claudiu.beznea@xxxxxxxxx> wrote: > >> Hi, Kory, >> >> On 22.01.2025 18:19, Kory Maincent wrote: >>> Fix the suspend path by ensuring the rtnl lock is held where required. >>> Calls to ravb_open, ravb_close and wol operations must be performed under >>> the rtnl lock to prevent conflicts with ongoing ndo operations. > >> >> I've test it. Looks good. >> >> Thank you for your patch. However, I think this could be simplified. The >> locking scheme looks complicated to me. E.g., this one works too: >> >> diff --git a/drivers/net/ethernet/renesas/ravb_main.c >> b/drivers/net/ethernet/renesas/ravb_main.c >> index bc395294a32d..cfe4f0f364f3 100644 >> --- a/drivers/net/ethernet/renesas/ravb_main.c >> +++ b/drivers/net/ethernet/renesas/ravb_main.c >> @@ -3217,10 +3217,16 @@ static int ravb_suspend(struct device *dev) >> >> netif_device_detach(ndev); >> >> - if (priv->wol_enabled) >> - return ravb_wol_setup(ndev); >> + if (priv->wol_enabled) { >> + rtnl_lock(); >> + ret = ravb_wol_setup(ndev); >> + rtnl_unlock(); >> + return ret; >> + } > > What happen if wol_enabled flag changes it state between the rtnl_lock and the > if condition? We will be in the wrong path. wol_enabled flag can't change in this suspend phase. The user space tasks are fronzen when ravb_suspend() is called. Thank you, Claudiu > > Regards,