diff options
| -rw-r--r-- | drivers/net/wireless/mediatek/mt76/sdio.c | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/drivers/net/wireless/mediatek/mt76/sdio.c b/drivers/net/wireless/mediatek/mt76/sdio.c index 1ca5438b6958..8e9576747052 100644 --- a/drivers/net/wireless/mediatek/mt76/sdio.c +++ b/drivers/net/wireless/mediatek/mt76/sdio.c @@ -550,10 +550,7 @@ static int  mt76s_tx_queue_skb_raw(struct mt76_dev *dev, struct mt76_queue *q,  		       struct sk_buff *skb, u32 tx_info)  { -	int ret = -ENOSPC, len = skb->len, pad; - -	if (q->queued == q->ndesc) -		goto error; +	int ret, len = skb->len, pad;  	pad = round_up(skb->len, 4) - skb->len;  	ret = mt76_skb_adjust_pad(skb, pad); @@ -562,6 +559,12 @@ mt76s_tx_queue_skb_raw(struct mt76_dev *dev, struct mt76_queue *q,  	spin_lock_bh(&q->lock); +	if (q->queued == q->ndesc) { +		ret = -ENOSPC; +		spin_unlock_bh(&q->lock); +		goto error; +	} +  	q->entry[q->head].buf_sz = len;  	q->entry[q->head].skb = skb; | 
