* [PATCH 0/3] mt76 testmode fixes
@ 2021-05-27 11:35 Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 1/3] mt76: testmode: fix memory leak in mt76_testmode_alloc_skb Lorenzo Bianconi
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Lorenzo Bianconi @ 2021-05-27 11:35 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, shayne.chen, ryder.lee
Fix an undefined behaviour and a memory leak in mt76 testmode code
Lorenzo Bianconi (3):
mt76: testmode: fix memory leak in mt76_testmode_alloc_skb
mt76: testmode: remove unnecessary function calls in
mt76_testmode_free_skb
mt76: testmode: remove undefined behaviour in mt76_testmode_alloc_skb
drivers/net/wireless/mediatek/mt76/testmode.c | 24 ++++++-------------
1 file changed, 7 insertions(+), 17 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] mt76: testmode: fix memory leak in mt76_testmode_alloc_skb
2021-05-27 11:35 [PATCH 0/3] mt76 testmode fixes Lorenzo Bianconi
@ 2021-05-27 11:35 ` Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 2/3] mt76: testmode: remove unnecessary function calls in mt76_testmode_free_skb Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 3/3] mt76: testmode: remove undefined behaviour in mt76_testmode_alloc_skb Lorenzo Bianconi
2 siblings, 0 replies; 4+ messages in thread
From: Lorenzo Bianconi @ 2021-05-27 11:35 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, shayne.chen, ryder.lee
Free all pending frames in case of failure in mt76_testmode_alloc_skb
routine
Fixes: 2601dda8faa76 ("mt76: testmode: add support to send larger packet")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/wireless/mediatek/mt76/testmode.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/testmode.c b/drivers/net/wireless/mediatek/mt76/testmode.c
index 001d0ba5f73e..f40387a866ee 100644
--- a/drivers/net/wireless/mediatek/mt76/testmode.c
+++ b/drivers/net/wireless/mediatek/mt76/testmode.c
@@ -158,8 +158,11 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
frag_len = MT_TXP_MAX_LEN;
frag = alloc_skb(frag_len, GFP_KERNEL);
- if (!frag)
+ if (!frag) {
+ mt76_testmode_free_skb(phy);
+ dev_kfree_skb(head);
return -ENOMEM;
+ }
__skb_put_zero(frag, frag_len);
head->len += frag->len;
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] mt76: testmode: remove unnecessary function calls in mt76_testmode_free_skb
2021-05-27 11:35 [PATCH 0/3] mt76 testmode fixes Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 1/3] mt76: testmode: fix memory leak in mt76_testmode_alloc_skb Lorenzo Bianconi
@ 2021-05-27 11:35 ` Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 3/3] mt76: testmode: remove undefined behaviour in mt76_testmode_alloc_skb Lorenzo Bianconi
2 siblings, 0 replies; 4+ messages in thread
From: Lorenzo Bianconi @ 2021-05-27 11:35 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, shayne.chen, ryder.lee
Get rid of unnecessary function calls in mt76_testmode_free_skb routine
since they are already managed by dev_kfree_skb
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/wireless/mediatek/mt76/testmode.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/testmode.c b/drivers/net/wireless/mediatek/mt76/testmode.c
index f40387a866ee..c516469278a4 100644
--- a/drivers/net/wireless/mediatek/mt76/testmode.c
+++ b/drivers/net/wireless/mediatek/mt76/testmode.c
@@ -88,17 +88,8 @@ static void
mt76_testmode_free_skb(struct mt76_phy *phy)
{
struct mt76_testmode_data *td = &phy->test;
- struct sk_buff *skb = td->tx_skb;
-
- if (!skb)
- return;
-
- if (skb_has_frag_list(skb)) {
- kfree_skb_list(skb_shinfo(skb)->frag_list);
- skb_shinfo(skb)->frag_list = NULL;
- }
- dev_kfree_skb(skb);
+ dev_kfree_skb(td->tx_skb);
td->tx_skb = NULL;
}
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] mt76: testmode: remove undefined behaviour in mt76_testmode_alloc_skb
2021-05-27 11:35 [PATCH 0/3] mt76 testmode fixes Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 1/3] mt76: testmode: fix memory leak in mt76_testmode_alloc_skb Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 2/3] mt76: testmode: remove unnecessary function calls in mt76_testmode_free_skb Lorenzo Bianconi
@ 2021-05-27 11:35 ` Lorenzo Bianconi
2 siblings, 0 replies; 4+ messages in thread
From: Lorenzo Bianconi @ 2021-05-27 11:35 UTC (permalink / raw)
To: nbd; +Cc: lorenzo.bianconi, linux-wireless, shayne.chen, ryder.lee
Get rif of an undefined behaviour in mt76_testmode_alloc_skb routine
allocating skb frames
Fixes: 2601dda8faa76 ("mt76: testmode: add support to send larger packet")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/wireless/mediatek/mt76/testmode.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/testmode.c b/drivers/net/wireless/mediatek/mt76/testmode.c
index c516469278a4..c6a85a0cfc89 100644
--- a/drivers/net/wireless/mediatek/mt76/testmode.c
+++ b/drivers/net/wireless/mediatek/mt76/testmode.c
@@ -159,12 +159,8 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
head->len += frag->len;
head->data_len += frag->len;
- if (*frag_tail) {
- (*frag_tail)->next = frag;
- frag_tail = &frag;
- } else {
- *frag_tail = frag;
- }
+ *frag_tail = frag;
+ frag_tail = &(*frag_tail)->next;
}
mt76_testmode_free_skb(phy);
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-05-27 11:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-27 11:35 [PATCH 0/3] mt76 testmode fixes Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 1/3] mt76: testmode: fix memory leak in mt76_testmode_alloc_skb Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 2/3] mt76: testmode: remove unnecessary function calls in mt76_testmode_free_skb Lorenzo Bianconi
2021-05-27 11:35 ` [PATCH 3/3] mt76: testmode: remove undefined behaviour in mt76_testmode_alloc_skb Lorenzo Bianconi
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.