mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
mt76: mt7663s: fix rx buffer refcounting
Similar to mt7601u driver, fix erroneous rx page refcounting
Fixes: a66cbdd657 ("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
This commit is contained in:
parent
d24c790577
commit
952de419b6
|
|
@ -83,7 +83,7 @@ static int mt7663s_rx_run_queue(struct mt76_dev *dev, enum mt76_rxq_id qid,
|
|||
{
|
||||
struct mt76_queue *q = &dev->q_rx[qid];
|
||||
struct mt76_sdio *sdio = &dev->sdio;
|
||||
int len = 0, err, i, order;
|
||||
int len = 0, err, i;
|
||||
struct page *page;
|
||||
u8 *buf;
|
||||
|
||||
|
|
@ -96,8 +96,7 @@ static int mt7663s_rx_run_queue(struct mt76_dev *dev, enum mt76_rxq_id qid,
|
|||
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;
|
||||
|
||||
|
|
@ -106,7 +105,7 @@ static int mt7663s_rx_run_queue(struct mt76_dev *dev, enum mt76_rxq_id qid,
|
|||
err = sdio_readsb(sdio->func, buf, MCR_WRDR(qid), len);
|
||||
if (err < 0) {
|
||||
dev_err(dev->dev, "sdio read data failed:%d\n", err);
|
||||
__free_pages(page, order);
|
||||
put_page(page);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
@ -123,7 +122,7 @@ static int mt7663s_rx_run_queue(struct mt76_dev *dev, enum mt76_rxq_id qid,
|
|||
if (q->queued + i + 1 == q->ndesc)
|
||||
break;
|
||||
}
|
||||
__free_pages(page, order);
|
||||
put_page(page);
|
||||
|
||||
spin_lock_bh(&q->lock);
|
||||
q->head = (q->head + i) % q->ndesc;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user