From: Greg Kroah-Hartman Date: Fri, 13 Apr 2012 18:39:41 +0000 (-0700) Subject: 3.2-stable patches X-Git-Tag: v3.2.16~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6f8b9c2b5026c7ba4b4754fdc4d494109e23dc7f;p=thirdparty%2Fkernel%2Fstable-queue.git 3.2-stable patches added patches: rtlwifi-add-missing-dma-buffer-unmapping-for-pci-drivers.patch --- diff --git a/queue-3.2/rtlwifi-add-missing-dma-buffer-unmapping-for-pci-drivers.patch b/queue-3.2/rtlwifi-add-missing-dma-buffer-unmapping-for-pci-drivers.patch new file mode 100644 index 00000000000..dc413851277 --- /dev/null +++ b/queue-3.2/rtlwifi-add-missing-dma-buffer-unmapping-for-pci-drivers.patch @@ -0,0 +1,42 @@ +From 673f7786e205c87b5d978c62827b9a66d097bebb Mon Sep 17 00:00:00 2001 +From: Larry Finger +Date: Mon, 26 Mar 2012 10:48:20 -0500 +Subject: rtlwifi: Add missing DMA buffer unmapping for PCI drivers + +From: Larry Finger + +commit 673f7786e205c87b5d978c62827b9a66d097bebb upstream. + +In https://bugzilla.kernel.org/show_bug.cgi?id=42976, a system with driver +rtl8192se used as an AP suffers from "Out of SW-IOMMU space" errors. These +are caused by the DMA buffers used for beacons never being unmapped. + +This bug was also reported at +https://bugs.launchpad.net/ubuntu/+source/linux/+bug/961618 + +Reported-and-Tested-by: Da Xue +Signed-off-by: Larry Finger +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/rtlwifi/pci.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/rtlwifi/pci.c ++++ b/drivers/net/wireless/rtlwifi/pci.c +@@ -926,8 +926,13 @@ static void _rtl_pci_prepare_bcn_tasklet + memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); + ring = &rtlpci->tx_ring[BEACON_QUEUE]; + pskb = __skb_dequeue(&ring->queue); +- if (pskb) ++ if (pskb) { ++ struct rtl_tx_desc *entry = &ring->desc[ring->idx]; ++ pci_unmap_single(rtlpci->pdev, rtlpriv->cfg->ops->get_desc( ++ (u8 *) entry, true, HW_DESC_TXBUFF_ADDR), ++ pskb->len, PCI_DMA_TODEVICE); + kfree_skb(pskb); ++ } + + /*NB: the beacon data buffer must be 32-bit aligned. */ + pskb = ieee80211_beacon_get(hw, mac->vif); diff --git a/queue-3.2/series b/queue-3.2/series index 9a7862d4623..cc04531a641 100644 --- a/queue-3.2/series +++ b/queue-3.2/series @@ -4,3 +4,4 @@ drm-i915-ringbuffer-exclude-last-2-cachlines-of-ring-on-845g.patch drm-radeon-only-add-the-mm-i2c-bus-if-the-hw_i2c-module-param-is-set.patch drm-i915-properly-compute-dp-dithering-for-user-created-modes.patch drm-i915-make-rc6-module-parameter-read-only.patch +rtlwifi-add-missing-dma-buffer-unmapping-for-pci-drivers.patch