net: dsa: sja1105: Really fix panic on unregistering PTP clock
authorVladimir Oltean <olteanv@gmail.com>
Sun, 4 Aug 2019 22:38:46 +0000 (01:38 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 6 Aug 2019 21:37:02 +0000 (14:37 -0700)
commit6cb0abbdf90c180e1310976c47399f57477e0e53
treeb85bb0da5c7eb10794feeb1fe9ed74da472ba986
parent4b7da3d808f91cdad3e34059cd68ba3dfe4c3695
net: dsa: sja1105: Really fix panic on unregistering PTP clock

The IS_ERR_OR_NULL(priv->clock) check inside
sja1105_ptp_clock_unregister() is preventing cancel_delayed_work_sync
from actually being run.

Additionally, sja1105_ptp_clock_unregister() does not actually get run,
when placed in sja1105_remove(). The DSA switch gets torn down, but the
sja1105 module does not get unregistered. So sja1105_ptp_clock_unregister
needs to be moved to sja1105_teardown, to be symmetrical with
sja1105_ptp_clock_register which is called from the DSA sja1105_setup.

It is strange to fix a "fixes" patch, but the probe failure can only be
seen when the attached PHY does not respond to MDIO (issue which I can't
pinpoint the reason to) and it goes away after I power-cycle the board.
This time the patch was validated on a failing board, and the kernel
panic from the fixed commit's message can no longer be seen.

Fixes: 29dd908d355f ("net: dsa: sja1105: Cancel PTP delayed work on unregister")
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/sja1105/sja1105_main.c
drivers/net/dsa/sja1105/sja1105_ptp.c