hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/wireless/ath/ath11k/dp_rx.c
....@@ -324,10 +324,10 @@
324324 goto fail_free_skb;
325325
326326 spin_lock_bh(&rx_ring->idr_lock);
327
- buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 0,
328
- rx_ring->bufs_max * 3, GFP_ATOMIC);
327
+ buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 1,
328
+ (rx_ring->bufs_max * 3) + 1, GFP_ATOMIC);
329329 spin_unlock_bh(&rx_ring->idr_lock);
330
- if (buf_id < 0)
330
+ if (buf_id <= 0)
331331 goto fail_dma_unmap;
332332
333333 desc = ath11k_hal_srng_src_get_next_entry(ab, srng);
....@@ -2564,6 +2564,9 @@
25642564 cookie);
25652565 mac_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_PDEV_ID, cookie);
25662566
2567
+ if (unlikely(buf_id == 0))
2568
+ continue;
2569
+
25672570 ar = ab->pdevs[mac_id].ar;
25682571 rx_ring = &ar->dp.rx_refill_buf_ring;
25692572 spin_lock_bh(&rx_ring->idr_lock);
....@@ -3022,6 +3025,7 @@
30223025 if (!peer) {
30233026 ath11k_warn(ab, "failed to find the peer to set up fragment info\n");
30243027 spin_unlock_bh(&ab->base_lock);
3028
+ crypto_free_shash(tfm);
30253029 return -ENOENT;
30263030 }
30273031