2019-11-20 20:07:08

by Markus Theil

[permalink] [raw]
Subject: [PATCH] mt76: fix fix ampdu locking

The current ampdu locking code does not unlock its mutex in the early
return case. This patch fixes it.

Signed-off-by: Markus Theil <[email protected]>
---
drivers/net/wireless/mediatek/mt76/mt7603/main.c | 6 ++++--
drivers/net/wireless/mediatek/mt76/mt7615/main.c | 6 ++++--
drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 6 ++++--
3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/main.c b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
index 281387c3f4f4..962e2822d19f 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
@@ -569,6 +569,7 @@ mt7603_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
u16 ssn = params->ssn;
u8 ba_size = params->buf_size;
struct mt76_txq *mtxq;
+ int ret = 0;

if (!txq)
return -EINVAL;
@@ -597,7 +598,8 @@ mt7603_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
break;
case IEEE80211_AMPDU_TX_START:
mtxq->agg_ssn = IEEE80211_SN_TO_SEQ(ssn);
- return IEEE80211_AMPDU_TX_START_IMMEDIATE;
+ ret = IEEE80211_AMPDU_TX_START_IMMEDIATE;
+ break;
case IEEE80211_AMPDU_TX_STOP_CONT:
mtxq->aggr = false;
mt7603_mac_tx_ba_reset(dev, msta->wcid.idx, tid, -1);
@@ -606,7 +608,7 @@ mt7603_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
}
mutex_unlock(&dev->mt76.mutex);

- return 0;
+ return ret;
}

static void
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/main.c b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
index 240dab919327..070b03403894 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
@@ -484,6 +484,7 @@ mt7615_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
u16 tid = params->tid;
u16 ssn = params->ssn;
struct mt76_txq *mtxq;
+ int ret = 0;

if (!txq)
return -EINVAL;
@@ -513,7 +514,8 @@ mt7615_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
break;
case IEEE80211_AMPDU_TX_START:
mtxq->agg_ssn = IEEE80211_SN_TO_SEQ(ssn);
- return IEEE80211_AMPDU_TX_START_IMMEDIATE;
+ ret = IEEE80211_AMPDU_TX_START_IMMEDIATE;
+ break;
case IEEE80211_AMPDU_TX_STOP_CONT:
mtxq->aggr = false;
mt7615_mcu_set_tx_ba(dev, params, 0);
@@ -522,7 +524,7 @@ mt7615_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
}
mutex_unlock(&dev->mt76.mutex);

- return 0;
+ return ret;
}

const struct ieee80211_ops mt7615_ops = {
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index f58a3ebfa9d2..dac383ee8f4f 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -356,6 +356,7 @@ int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
u16 tid = params->tid;
u16 ssn = params->ssn;
struct mt76_txq *mtxq;
+ int ret = 0;

if (!txq)
return -EINVAL;
@@ -385,7 +386,8 @@ int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
break;
case IEEE80211_AMPDU_TX_START:
mtxq->agg_ssn = IEEE80211_SN_TO_SEQ(ssn);
- return IEEE80211_AMPDU_TX_START_IMMEDIATE;
+ ret = IEEE80211_AMPDU_TX_START_IMMEDIATE;
+ break;
case IEEE80211_AMPDU_TX_STOP_CONT:
mtxq->aggr = false;
ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
@@ -393,7 +395,7 @@ int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
}
mutex_unlock(&dev->mt76.mutex);

- return 0;
+ return ret;
}
EXPORT_SYMBOL_GPL(mt76x02_ampdu_action);

--
2.24.0



2019-11-20 20:14:56

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH] mt76: fix fix ampdu locking

On 2019-11-20 21:05, Markus Theil wrote:
> The current ampdu locking code does not unlock its mutex in the early
> return case. This patch fixes it.
>
> Signed-off-by: Markus Theil <[email protected]>
Acked-by: Felix Fietkau <[email protected]>

Kalle, I think this should go on top of my pull request quickly, since
it fixes a regression in a commit from that pull request (introduced via
rebase on top of Johannes' last change of that code).
Do you want me to send another pull request with just this patch, or can
you take it directly? In the latter case, feel free to also remove one
of the two "fix" words in the subject :)

Thanks,

- Felix

2019-11-20 20:36:19

by Markus Theil

[permalink] [raw]
Subject: Re: [PATCH] mt76: fix fix ampdu locking


On 11/20/19 9:14 PM, Felix Fietkau wrote:
> On 2019-11-20 21:05, Markus Theil wrote:
>> The current ampdu locking code does not unlock its mutex in the early
>> return case. This patch fixes it.
>>
>> Signed-off-by: Markus Theil <[email protected]>
> Acked-by: Felix Fietkau <[email protected]>
>
> Kalle, I think this should go on top of my pull request quickly, since
> it fixes a regression in a commit from that pull request (introduced via
> rebase on top of Johannes' last change of that code).
> Do you want me to send another pull request with just this patch, or can
> you take it directly? In the latter case, feel free to also remove one
> of the two "fix" words in the subject :)
Sry, ;)
>
> Thanks,
>
> - Felix

2019-11-21 06:54:12

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] mt76: fix fix ampdu locking

Felix Fietkau <[email protected]> writes:

> On 2019-11-20 21:05, Markus Theil wrote:
>> The current ampdu locking code does not unlock its mutex in the early
>> return case. This patch fixes it.
>>
>> Signed-off-by: Markus Theil <[email protected]>
>
> Acked-by: Felix Fietkau <[email protected]>
>
> Kalle, I think this should go on top of my pull request quickly, since
> it fixes a regression in a commit from that pull request (introduced via
> rebase on top of Johannes' last change of that code).
> Do you want me to send another pull request with just this patch, or can
> you take it directly?

A lot easier to take it directly, so let's do that. I now assigned this
patch to me on patchwork and I'll try to remember apply it later today.

> In the latter case, feel free to also remove one of the two "fix"
> words in the subject :)

Ok, will fix (no pun intended ;)

--
Kalle Valo

2019-11-21 18:37:09

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] mt76: fix ampdu locking

Markus Theil <[email protected]> wrote:

> The current ampdu locking code does not unlock its mutex in the early
> return case. This patch fixes it.
>
> Signed-off-by: Markus Theil <[email protected]>
> Acked-by: Felix Fietkau <[email protected]>

Patch applied to wireless-drivers-next.git, thanks.

3e870c205d66 mt76: fix ampdu locking

--
https://patchwork.kernel.org/patch/11254757/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2019-11-21 18:37:51

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] mt76: fix ampdu locking

Kalle Valo <[email protected]> writes:

> Markus Theil <[email protected]> wrote:
>
>> The current ampdu locking code does not unlock its mutex in the early
>> return case. This patch fixes it.
>>
>> Signed-off-by: Markus Theil <[email protected]>
>> Acked-by: Felix Fietkau <[email protected]>
>
> Patch applied to wireless-drivers-next.git, thanks.
>
> 3e870c205d66 mt76: fix ampdu locking

I made a mistake, please ignore that commit id. There will be a new id soon.

--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2019-11-21 18:43:55

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] mt76: fix fix ampdu locking

Markus Theil <[email protected]> wrote:

> The current ampdu locking code does not unlock its mutex in the early
> return case. This patch fixes it.
>
> Signed-off-by: Markus Theil <[email protected]>
> Acked-by: Felix Fietkau <[email protected]>

Patch applied to wireless-drivers-next.git, thanks.

05d6c8cfdbd6 mt76: fix fix ampdu locking

--
https://patchwork.kernel.org/patch/11254757/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches