Hi Johannes,
12.05.2021 13:19, Johannes Berg:
In the alx driver, all locking depended on the RTNL, but
[...]
quoted hunk ↗ jump to hunk
@@ -232,7 +240,7 @@ static int alx_set_pauseparam(struct net_device *netdev,
if (pause->autoneg)
fc |= ALX_FC_ANEG;
- ASSERT_RTNL();
+ mutex_lock(&alx->mtx);
/* restart auto-neg for auto-mode */
if (hw->adv_cfg& ADVERTISED_Autoneg) {@@ -254,6 +262,7 @@ static int alx_set_pauseparam(struct net_device *netdev,
alx_cfg_mac_flowcontrol(hw, fc);
hw->flowctrl = fc;
+ mutex_unlock(&alx->mtx);
return 0;
}
Isn't this fragment missing a mutex_unlock(&alx->mtx) for the "return
err" codepath in the middle? I'm not sure, its like very suspicious,
please have a look.
Thank you,
Regards,
Nikolai