mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
net: dpaa2-switch: phylink_disconnect_phy needs rtnl_lock
There is an ASSERT_RTNL in phylink_disconnect_phy which triggers
whenever dpaa2_switch_port_disconnect_mac is called.
To follow the pattern established by dpaa2_eth_disconnect_mac, take the
rtnl_mutex every time we call dpaa2_switch_port_disconnect_mac.
Fixes: 84cba72956 ("dpaa2-switch: integrate the MAC endpoint support")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6985157ce8
commit
d52ef12f7d
|
|
@ -1508,10 +1508,12 @@ static irqreturn_t dpaa2_switch_irq0_handler_thread(int irq_num, void *arg)
|
|||
}
|
||||
|
||||
if (status & DPSW_IRQ_EVENT_ENDPOINT_CHANGED) {
|
||||
rtnl_lock();
|
||||
if (dpaa2_switch_port_has_mac(port_priv))
|
||||
dpaa2_switch_port_disconnect_mac(port_priv);
|
||||
else
|
||||
dpaa2_switch_port_connect_mac(port_priv);
|
||||
rtnl_unlock();
|
||||
}
|
||||
|
||||
out:
|
||||
|
|
@ -3201,7 +3203,9 @@ static int dpaa2_switch_remove(struct fsl_mc_device *sw_dev)
|
|||
for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
|
||||
port_priv = ethsw->ports[i];
|
||||
unregister_netdev(port_priv->netdev);
|
||||
rtnl_lock();
|
||||
dpaa2_switch_port_disconnect_mac(port_priv);
|
||||
rtnl_unlock();
|
||||
free_netdev(port_priv->netdev);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user