Message ID | 20220310161313.43595-1-dossche.niels@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | alx: acquire mutex for alx_reinit in alx_change_mtu | expand |
On Thu, 10 Mar 2022 17:13:16 +0100 Niels Dossche wrote: > alx_reinit has a lockdep assertion that the alx->mtx mutex must be held. > alx_reinit is called from two places: alx_reset and alx_change_mtu. > alx_reset does acquire alx->mtx before calling alx_reinit. > alx_change_mtu does not acquire this mutex, nor do its callers or any > path towards alx_change_mtu. > Acquire the mutex in alx_change_mtu. > > Signed-off-by: Niels Dossche <dossche.niels@gmail.com> What's the Fixes tag?
On 11/03/2022 00:05, Jakub Kicinski wrote: > On Thu, 10 Mar 2022 17:13:16 +0100 Niels Dossche wrote: >> alx_reinit has a lockdep assertion that the alx->mtx mutex must be held. >> alx_reinit is called from two places: alx_reset and alx_change_mtu. >> alx_reset does acquire alx->mtx before calling alx_reinit. >> alx_change_mtu does not acquire this mutex, nor do its callers or any >> path towards alx_change_mtu. >> Acquire the mutex in alx_change_mtu. >> >> Signed-off-by: Niels Dossche <dossche.niels@gmail.com> > > What's the Fixes tag? Commit 4a5fe57e7751 ("alx: use fine-grained locking instead of RTNL") introduced fine-grained locking and introduced the assertion. I can resend the patch with the Fixes tag if you want me to.
On Fri, 11 Mar 2022 00:14:55 +0100 Niels Dossche wrote: > On 11/03/2022 00:05, Jakub Kicinski wrote: > > On Thu, 10 Mar 2022 17:13:16 +0100 Niels Dossche wrote: > >> alx_reinit has a lockdep assertion that the alx->mtx mutex must be held. > >> alx_reinit is called from two places: alx_reset and alx_change_mtu. > >> alx_reset does acquire alx->mtx before calling alx_reinit. > >> alx_change_mtu does not acquire this mutex, nor do its callers or any > >> path towards alx_change_mtu. > >> Acquire the mutex in alx_change_mtu. > >> > >> Signed-off-by: Niels Dossche <dossche.niels@gmail.com> > > > > What's the Fixes tag? > > Commit 4a5fe57e7751 ("alx: use fine-grained locking instead of RTNL") > introduced fine-grained locking and introduced the assertion. > I can resend the patch with the Fixes tag if you want me to. If you don't mind resend would be helpful, thanks!
diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c index 4ad3fc72e74e..a89b93cb4e26 100644 --- a/drivers/net/ethernet/atheros/alx/main.c +++ b/drivers/net/ethernet/atheros/alx/main.c @@ -1181,8 +1181,11 @@ static int alx_change_mtu(struct net_device *netdev, int mtu) alx->hw.mtu = mtu; alx->rxbuf_size = max(max_frame, ALX_DEF_RXBUF_SIZE); netdev_update_features(netdev); - if (netif_running(netdev)) + if (netif_running(netdev)) { + mutex_lock(&alx->mtx); alx_reinit(alx); + mutex_unlock(&alx->mtx); + } return 0; }
alx_reinit has a lockdep assertion that the alx->mtx mutex must be held. alx_reinit is called from two places: alx_reset and alx_change_mtu. alx_reset does acquire alx->mtx before calling alx_reinit. alx_change_mtu does not acquire this mutex, nor do its callers or any path towards alx_change_mtu. Acquire the mutex in alx_change_mtu. Signed-off-by: Niels Dossche <dossche.niels@gmail.com> --- drivers/net/ethernet/atheros/alx/main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)