Message ID | b9d8fbfc19360bfe60b9cea1cb0f735ab3b4bc26.1727639596.git.christophe.jaillet@wanadoo.fr |
---|---|
State | New |
Headers | show |
Series | wifi: mt76: mt7915: Fix an error handling path in mt7915_add_interface() | expand |
> If mt76_wcid_alloc() fails, the "mt76.mutex" mutex needs to be released as > done in the other error handling path of mt7915_add_interface(). paths? … > +++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c > @@ -246,8 +246,10 @@ static int mt7915_add_interface(struct ieee80211_hw *hw, > phy->omac_mask |= BIT_ULL(mvif->mt76.omac_idx); > > idx = mt76_wcid_alloc(dev->mt76.wcid_mask, mt7915_wtbl_size(dev)); > - if (idx < 0) > - return -ENOSPC; > + if (idx < 0) { > + ret = -ENOSPC; > + goto out; > + } … Would you dare to support another jump target for this assignment statement? Regards, Markus
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/main.c b/drivers/net/wireless/mediatek/mt76/mt7915/main.c index d75e8dea1fbd..bea8b77b1b92 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c @@ -246,8 +246,10 @@ static int mt7915_add_interface(struct ieee80211_hw *hw, phy->omac_mask |= BIT_ULL(mvif->mt76.omac_idx); idx = mt76_wcid_alloc(dev->mt76.wcid_mask, mt7915_wtbl_size(dev)); - if (idx < 0) - return -ENOSPC; + if (idx < 0) { + ret = -ENOSPC; + goto out; + } INIT_LIST_HEAD(&mvif->sta.rc_list); INIT_LIST_HEAD(&mvif->sta.wcid.poll_list);
If mt76_wcid_alloc() fails, the "mt76.mutex" mutex needs to be released as done in the other error handling path of mt7915_add_interface(). Fixes: f3049b88b2b3 ("wifi: mt76: mt7915: allocate vif wcid in the same range as stations") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- Compile tested only --- drivers/net/wireless/mediatek/mt76/mt7915/main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)