Re: [PATCH] net: stmmac: synchronize stmmac_open and stmmac_dvr_probe

From: David Miller
Date: Mon Dec 26 2016 - 23:55:26 EST


From: "Kweh, Hock Leong" <hock.leong.kweh@xxxxxxxxx>
Date: Tue, 27 Dec 2016 19:44:59 +0800

> From: "Kweh, Hock Leong" <hock.leong.kweh@xxxxxxxxx>
>
> If kernel module stmmac driver being loaded after OS booted, there is a
> race condition between stmmac_open() and stmmac_mdio_register(), which is
> invoked inside stmmac_dvr_probe(), and the error is showed in dmesg log as
> PHY not found and stmmac_open() failed:
...
> The resolution used wait_for_completion_interruptible() to synchronize
> stmmac_open() and stmmac_dvr_probe() to prevent the race condition
> happening.
>
> Signed-off-by: Kweh, Hock Leong <hock.leong.kweh@xxxxxxxxx>

The proper thing to do is to make sure register_netdevice() is not
invoked until it is %100 safe to call stmmac_open().