Message ID | 20181019200842.7qclbjs547sm7mbn@kili.mountain (mailing list archive) |
---|---|
State | Accepted |
Commit | 461cf036057477805a8a391e5fd0f5264a5e56a8 |
Delegated to: | Kalle Valo |
Headers | show |
Series | ath9k: Fix a locking bug in ath9k_add_interface() | expand |
Dan Carpenter <dan.carpenter@oracle.com> writes: > We tried to revert commit d9c52fd17cb4 ("ath9k: fix tx99 with monitor > mode interface") but accidentally missed part of the locking change. > > The lock has to be held earlier so that we're holding it when we do > "sc->tx99_vif = vif;" and also there in the current code there is a > stray unlock before we have taken the lock. > > Fixes: 6df0580be8bc ("ath9k: add back support for using active monitor interfaces for tx99") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> commit 6df0580be8bc is on it's way to v4.20 so should I also queue this to v4.20?
On Wed, Oct 24, 2018 at 08:50:52AM +0300, Kalle Valo wrote: > Dan Carpenter <dan.carpenter@oracle.com> writes: > > > We tried to revert commit d9c52fd17cb4 ("ath9k: fix tx99 with monitor > > mode interface") but accidentally missed part of the locking change. > > > > The lock has to be held earlier so that we're holding it when we do > > "sc->tx99_vif = vif;" and also there in the current code there is a > > stray unlock before we have taken the lock. > > > > Fixes: 6df0580be8bc ("ath9k: add back support for using active monitor interfaces for tx99") > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > > commit 6df0580be8bc is on it's way to v4.20 so should I also queue this > to v4.20? Yeah. Obviously this is a static checker thing and I haven't tested it. I don't know if add_interface() is ever called in parallel, but I can imagine that it might be. In that case the race condition is something that would affect real life. Anyway, it's a small obvious fix. regards, dan carpenter
Dan Carpenter <dan.carpenter@oracle.com> writes: > On Wed, Oct 24, 2018 at 08:50:52AM +0300, Kalle Valo wrote: >> Dan Carpenter <dan.carpenter@oracle.com> writes: >> >> > We tried to revert commit d9c52fd17cb4 ("ath9k: fix tx99 with monitor >> > mode interface") but accidentally missed part of the locking change. >> > >> > The lock has to be held earlier so that we're holding it when we do >> > "sc->tx99_vif = vif;" and also there in the current code there is a >> > stray unlock before we have taken the lock. >> > >> > Fixes: 6df0580be8bc ("ath9k: add back support for using active >> > monitor interfaces for tx99") >> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> >> >> commit 6df0580be8bc is on it's way to v4.20 so should I also queue this >> to v4.20? > > Yeah. Obviously this is a static checker thing and I haven't tested it. > > I don't know if add_interface() is ever called in parallel, but I can > imagine that it might be. In that case the race condition is something > that would affect real life. > > Anyway, it's a small obvious fix. Ok, I'll then queue this to v4.20. But I would appreciate if others could test or review this.
Dan Carpenter <dan.carpenter@oracle.com> wrote: > We tried to revert commit d9c52fd17cb4 ("ath9k: fix tx99 with monitor > mode interface") but accidentally missed part of the locking change. > > The lock has to be held earlier so that we're holding it when we do > "sc->tx99_vif = vif;" and also there in the current code there is a > stray unlock before we have taken the lock. > > Fixes: 6df0580be8bc ("ath9k: add back support for using active monitor interfaces for tx99") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Patch applied to wireless-drivers.git, thanks. 461cf0360574 ath9k: Fix a locking bug in ath9k_add_interface()
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 1e3b5f4a4cf9..f23cb2f3d296 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -1251,6 +1251,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw, struct ath_vif *avp = (void *)vif->drv_priv; struct ath_node *an = &avp->mcast_node; + mutex_lock(&sc->mutex); if (IS_ENABLED(CONFIG_ATH9K_TX99)) { if (sc->cur_chan->nvifs >= 1) { mutex_unlock(&sc->mutex); @@ -1259,8 +1260,6 @@ static int ath9k_add_interface(struct ieee80211_hw *hw, sc->tx99_vif = vif; } - mutex_lock(&sc->mutex); - ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type); sc->cur_chan->nvifs++;
We tried to revert commit d9c52fd17cb4 ("ath9k: fix tx99 with monitor mode interface") but accidentally missed part of the locking change. The lock has to be held earlier so that we're holding it when we do "sc->tx99_vif = vif;" and also there in the current code there is a stray unlock before we have taken the lock. Fixes: 6df0580be8bc ("ath9k: add back support for using active monitor interfaces for tx99") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> --- drivers/net/wireless/ath/ath9k/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)