Message ID | 20221001105713.160666-1-maxtram95@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | ba0fbdb95da5ddd8db457ce6ba09d16dd979a294 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: wwan: iosm: Call mutex_init before locking it | expand |
> -----Original Message----- > From: Maxim Mikityanskiy <maxtram95@gmail.com> > Sent: Saturday, October 1, 2022 4:27 PM > To: Kumar, M Chetan <m.chetan.kumar@intel.com>; linuxwwan > <linuxwwan@intel.com> > Cc: Loic Poulain <loic.poulain@linaro.org>; Sergey Ryazanov > <ryazanov.s.a@gmail.com>; Johannes Berg <johannes@sipsolutions.net>; > David S. Miller <davem@davemloft.net>; Eric Dumazet > <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; Paolo Abeni > <pabeni@redhat.com>; netdev@vger.kernel.org; Maxim Mikityanskiy > <maxtram95@gmail.com> > Subject: [PATCH net] net: wwan: iosm: Call mutex_init before locking it > > wwan_register_ops calls wwan_create_default_link, which ends up in the > ipc_wwan_newlink callback that locks ipc_wwan->if_mutex. However, this > mutex is not yet initialized by that point. Fix it by moving mutex_init above > the wwan_register_ops call. This also makes the order of operations in > ipc_wwan_init symmetric to ipc_wwan_deinit. > > Fixes: 83068395bbfc ("net: iosm: create default link via WWAN core") > Signed-off-by: Maxim Mikityanskiy <maxtram95@gmail.com> > --- > drivers/net/wwan/iosm/iosm_ipc_wwan.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wwan/iosm/iosm_ipc_wwan.c > b/drivers/net/wwan/iosm/iosm_ipc_wwan.c > index 27151148c782..4712f01a7e33 100644 > --- a/drivers/net/wwan/iosm/iosm_ipc_wwan.c > +++ b/drivers/net/wwan/iosm/iosm_ipc_wwan.c > @@ -323,15 +323,16 @@ struct iosm_wwan *ipc_wwan_init(struct > iosm_imem *ipc_imem, struct device *dev) > ipc_wwan->dev = dev; > ipc_wwan->ipc_imem = ipc_imem; > > + mutex_init(&ipc_wwan->if_mutex); > + > /* WWAN core will create a netdev for the default IP MUX channel */ > if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, > ipc_wwan, > IP_MUX_SESSION_DEFAULT)) { > + mutex_destroy(&ipc_wwan->if_mutex); > kfree(ipc_wwan); > return NULL; > } > > - mutex_init(&ipc_wwan->if_mutex); > - > return ipc_wwan; > } Reviewed-by: M Chetan Kumar <m.chetan.kumar@intel.com>
Hello: This patch was applied to netdev/net.git (master) by David S. Miller <davem@davemloft.net>: On Sat, 1 Oct 2022 13:57:13 +0300 you wrote: > wwan_register_ops calls wwan_create_default_link, which ends up in the > ipc_wwan_newlink callback that locks ipc_wwan->if_mutex. However, this > mutex is not yet initialized by that point. Fix it by moving mutex_init > above the wwan_register_ops call. This also makes the order of > operations in ipc_wwan_init symmetric to ipc_wwan_deinit. > > Fixes: 83068395bbfc ("net: iosm: create default link via WWAN core") > Signed-off-by: Maxim Mikityanskiy <maxtram95@gmail.com> > > [...] Here is the summary with links: - [net] net: wwan: iosm: Call mutex_init before locking it https://git.kernel.org/netdev/net/c/ba0fbdb95da5 You are awesome, thank you!
diff --git a/drivers/net/wwan/iosm/iosm_ipc_wwan.c b/drivers/net/wwan/iosm/iosm_ipc_wwan.c index 27151148c782..4712f01a7e33 100644 --- a/drivers/net/wwan/iosm/iosm_ipc_wwan.c +++ b/drivers/net/wwan/iosm/iosm_ipc_wwan.c @@ -323,15 +323,16 @@ struct iosm_wwan *ipc_wwan_init(struct iosm_imem *ipc_imem, struct device *dev) ipc_wwan->dev = dev; ipc_wwan->ipc_imem = ipc_imem; + mutex_init(&ipc_wwan->if_mutex); + /* WWAN core will create a netdev for the default IP MUX channel */ if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, ipc_wwan, IP_MUX_SESSION_DEFAULT)) { + mutex_destroy(&ipc_wwan->if_mutex); kfree(ipc_wwan); return NULL; } - mutex_init(&ipc_wwan->if_mutex); - return ipc_wwan; }
wwan_register_ops calls wwan_create_default_link, which ends up in the ipc_wwan_newlink callback that locks ipc_wwan->if_mutex. However, this mutex is not yet initialized by that point. Fix it by moving mutex_init above the wwan_register_ops call. This also makes the order of operations in ipc_wwan_init symmetric to ipc_wwan_deinit. Fixes: 83068395bbfc ("net: iosm: create default link via WWAN core") Signed-off-by: Maxim Mikityanskiy <maxtram95@gmail.com> --- drivers/net/wwan/iosm/iosm_ipc_wwan.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)