Patch "ath10k: fix dma_mapping_error() handling" has been added to the 4.1-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ath10k: fix dma_mapping_error() handling
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ath10k-fix-dma_mapping_error-handling.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
5e55e3cbd1042cffa6249f22c10585e63f8a29bfMon Sep 17 00:00:00 2001
From: Michal Kazior <[email protected]>
Date: Wed, 19 Aug 2015 13:10:43 +0200
Subject: ath10k: fix dma_mapping_error() handling
From: Michal Kazior <[email protected]>
commit 5e55e3cbd1042cffa6249f22c10585e63f8a29bf upstream.
The function returns 1 when DMA mapping fails. The driver would return bogus values and could possibly confuse itself if DMA failed.
--- drivers/net/wireless/ath/ath10k/htc.c | 4 +++- drivers/net/wireless/ath/ath10k/htt_tx.c | 8 ++++++-- drivers/net/wireless/ath/ath10k/pci.c | 8 ++++++-- drivers/net/wireless/ath/ath10k/wmi.c | 1 + 4 files changed, 16 insertions(+), 5 deletions(-)
drivers/net/wireless/ath/ath10k/htc.c +3 -1
@@ -163,8 +163,10 @@ int ath10k_htc_send(struct ath10k_htc *h skb_cb->eid = eid; skb_cb->paddr =dma_map_single (dev, skb->data, skb->len,DMA_TO_DEVICE ); ret =dma_mapping_error (dev, skb_cb->paddr); -if (ret) +if (ret) { + ret = -EIO ; goto err_credits; + } sg_item.transfer_id = ep->eid; sg_item.transfer_context = skb;
drivers/net/wireless/ath/ath10k/htt_tx.c +6 -2
@@ -371,8 +371,10 @@ int ath10k_htt_mgmt_tx(struct ath10k_htt skb_cb->paddr =dma_map_single (dev, msdu->data, msdu->len,DMA_TO_DEVICE ); res =dma_mapping_error (dev, skb_cb->paddr); -if (res) +if (res) { + res = -EIO ; goto err_free_txdesc; + }skb_put (txdesc, len); cmd = (struct htt_cmd *)txdesc->data;
@@ -463,8 +465,10 @@ int ath10k_htt_tx(struct ath10k_htt *htt skb_cb->paddr =dma_map_single (dev, msdu->data, msdu->len,DMA_TO_DEVICE ); res =dma_mapping_error (dev, skb_cb->paddr); -if (res) +if (res) { + res = -EIO ; goto err_free_txbuf; + }if (likely (use_frags)) { frags = skb_cb->htt.txbuf->frags;
drivers/net/wireless/ath/ath10k/pci.c +6 -2
@@ -1378,8 +1378,10 @@ static int ath10k_pci_hif_exchange_bmi_m req_paddr =dma_map_single (ar->dev, treq, req_len,DMA_TO_DEVICE ); ret =dma_mapping_error (ar->dev, req_paddr); -if (ret) +if (ret) { + ret = -EIO ; goto err_dma; + }if (resp && resp_len) { tresp =kzalloc (*resp_len,GFP_KERNEL );
@@ -1391,8 +1393,10 @@ static int ath10k_pci_hif_exchange_bmi_m resp_paddr =dma_map_single (ar->dev, tresp, *resp_len,DMA_FROM_DEVICE ); ret =dma_mapping_error (ar->dev, resp_paddr); -if (ret) +if (ret) { + ret =EIO ; goto err_req; + } xfer.wait_for_resp = true; xfer.resp_len =0 ;
drivers/net/wireless/ath/ath10k/wmi.c +1 -0
@@ -2517,6 +2517,7 @@ void ath10k_wmi_event_host_swba(struct aath10k_warn (ar,"failed to map beacon: %d\n" , ret);dev_kfree_skb_any (bcn); + ret = -EIO ; goto skip; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/ath10k-fix-dma_mapping_error-handling.patch