Blob Blame History Raw
From 952de419b6179ad1424f512d52ec7122662fdf63 Mon Sep 17 00:00:00 2001
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: Thu, 14 Jan 2021 18:26:47 +0100
Subject: [PATCH] mt76: mt7663s: fix rx buffer refcounting
Git-commit: 952de419b6179ad1424f512d52ec7122662fdf63
References: git-fixes
Patch-mainline: v5.11-rc6

Similar to mt7601u driver, fix erroneous rx page refcounting

Fixes: a66cbdd6573d ("mt76: mt7615: introduce mt7663s support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/dca19c9d445156201bc41f7cbb6e894bbc9a678c.1610644945.git.lorenzo@kernel.org
Signed-off-by: Oliver Neukum <oneukum@suse.com>
---
 drivers/net/wireless/mediatek/mt76/mt7615/sdio_txrx.c |    9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

--- a/drivers/net/wireless/mediatek/mt76/mt7615/sdio_txrx.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/sdio_txrx.c
@@ -66,7 +66,7 @@ static int mt7663s_rx_run_queue(struct m
 {
 	struct mt76_queue *q = &dev->mt76.q_rx[qid];
 	struct mt76_sdio *sdio = &dev->mt76.sdio;
-	int len = 0, err, i, order;
+	int len = 0, err, i;
 	struct page *page;
 	u8 *buf;
 
@@ -79,8 +79,7 @@ static int mt7663s_rx_run_queue(struct m
 	if (len > sdio->func->cur_blksize)
 		len = roundup(len, sdio->func->cur_blksize);
 
-	order = get_order(len);
-	page = __dev_alloc_pages(GFP_KERNEL, order);
+	page = __dev_alloc_pages(GFP_KERNEL, get_order(len));
 	if (!page)
 		return -ENOMEM;
 
@@ -89,7 +88,7 @@ static int mt7663s_rx_run_queue(struct m
 	err = sdio_readsb(sdio->func, buf, MCR_WRDR(qid), len);
 	if (err < 0) {
 		dev_err(dev->mt76.dev, "sdio read data failed:%d\n", err);
-		__free_pages(page, order);
+		put_page(page);
 		return err;
 	}
 
@@ -106,7 +105,7 @@ static int mt7663s_rx_run_queue(struct m
 		if (q->queued + i + 1 == q->ndesc)
 			break;
 	}
-	__free_pages(page, order);
+	put_page(page);
 
 	spin_lock_bh(&q->lock);
 	q->tail = (q->tail + i) % q->ndesc;