Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 343ff3c9 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: Fix to free up all pending EOB pages"

parents 85866d27 8a0e3875
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -3500,17 +3500,21 @@ static struct sk_buff *handle_page_completion(struct gsi_chan_xfer_notify
		sys->ep->client == IPA_CLIENT_APPS_LAN_CONS) {
		rx_skb = alloc_skb(0, GFP_ATOMIC);
		if (unlikely(!rx_skb)) {
			IPAERR("skb alloc failure\n");
			list_del(&rx_pkt->link);
			IPAERR("skb alloc failure, free all pending pages\n");
			list_for_each_entry_safe(rx_pkt, tmp, head, link) {
				rx_page = rx_pkt->page_data;
				list_del_init(&rx_pkt->link);
				if (!rx_page.is_tmp_alloc) {
					init_page_count(rx_page.page);
				} else {
				dma_unmap_page(ipa3_ctx->pdev, rx_page.dma_addr,
					dma_unmap_page(ipa3_ctx->pdev,
						rx_page.dma_addr,
						rx_pkt->len, DMA_FROM_DEVICE);
					__free_pages(rx_pkt->page_data.page,
							IPA_WAN_PAGE_ORDER);
				}
				rx_pkt->sys->free_rx_wrapper(rx_pkt);
			}
			IPA_STATS_INC_CNT(ipa3_ctx->stats.rx_page_drop_cnt);
			return NULL;
		}