All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.