From: Vladimir Oltean Date: Tue, 12 Oct 2021 12:37:35 +0000 (+0300) Subject: net: dsa: unregister cross-chip notifier after ds->ops->teardown X-Git-Tag: v6.1-rc5~2768^2~209 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=39e222bfd7f37e7a98069869375b903d7096c113;p=platform%2Fkernel%2Flinux-starfive.git net: dsa: unregister cross-chip notifier after ds->ops->teardown To be symmetric with the error unwind path of dsa_switch_setup(), call dsa_switch_unregister_notifier() after ds->ops->teardown. The implication is that ds->ops->teardown cannot emit cross-chip notifiers. For example, currently the dsa_tag_8021q_unregister() call from sja1105_teardown() does not propagate to the entire tree due to this reason. However I cannot find an actual issue caused by this, observed using code inspection. Signed-off-by: Vladimir Oltean Link: https://lore.kernel.org/r/20211012123735.2545742-1-vladimir.oltean@nxp.com Signed-off-by: Jakub Kicinski --- diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 8ca6a11..42d9fcd 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -924,11 +924,11 @@ static void dsa_switch_teardown(struct dsa_switch *ds) ds->slave_mii_bus = NULL; } - dsa_switch_unregister_notifier(ds); - if (ds->ops->teardown) ds->ops->teardown(ds); + dsa_switch_unregister_notifier(ds); + if (ds->devlink) { list_for_each_entry(dp, &ds->dst->ports, list) if (dp->ds == ds)