[kernel/f19] Fix broken skge driver (rhbz 1008328)
Josh Boyer
jwboyer at fedoraproject.org
Fri Sep 20 14:36:31 UTC 2013
commit 2f00632219515781ea4a23369cd498abe3a0535b
Author: Josh Boyer <jwboyer at fedoraproject.org>
Date: Fri Sep 20 10:36:00 2013 -0400
Fix broken skge driver (rhbz 1008328)
0001-skge-fix-broken-driver.patch | 62 +++++++++++++++++++++++++++++++++++++
kernel.spec | 7 ++++
2 files changed, 69 insertions(+), 0 deletions(-)
---
diff --git a/0001-skge-fix-broken-driver.patch b/0001-skge-fix-broken-driver.patch
new file mode 100644
index 0000000..7ca3dec
--- /dev/null
+++ b/0001-skge-fix-broken-driver.patch
@@ -0,0 +1,62 @@
+From c194992cbe71c20bb3623a566af8d11b0bfaa721 Mon Sep 17 00:00:00 2001
+From: Mikulas Patocka <mpatocka at redhat.com>
+Date: Thu, 19 Sep 2013 14:13:17 -0400
+Subject: [PATCH] skge: fix broken driver
+
+The patch 136d8f377e1575463b47840bc5f1b22d94bf8f63 broke the skge driver.
+Note this part of the patch:
++ if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {
++ dev_kfree_skb(nskb);
++ goto resubmit;
++ }
++
+ pci_unmap_single(skge->hw->pdev,
+ dma_unmap_addr(e, mapaddr),
+ dma_unmap_len(e, maplen),
+ PCI_DMA_FROMDEVICE);
+ skb = e->skb;
+ prefetch(skb->data);
+- skge_rx_setup(skge, e, nskb, skge->rx_buf_size);
+
+The function skge_rx_setup modifies e->skb to point to the new skb. Thus,
+after this change, the new buffer, not the old, is returned to the
+networking stack.
+
+This bug is present in kernels 3.11, 3.11.1 and 3.12-rc1. The patch should
+be queued for 3.11-stable.
+
+Signed-off-by: Mikulas Patocka <mpatocka at redhat.com>
+Reported-by: Mikulas Patocka <mpatocka at redhat.com>
+Reported-by: Vasiliy Glazov <vascom2 at gmail.com>
+Tested-by: Mikulas Patocka <mpatocka at redhat.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/ethernet/marvell/skge.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
+index ef94a59..1a9c4f6 100644
+--- a/drivers/net/ethernet/marvell/skge.c
++++ b/drivers/net/ethernet/marvell/skge.c
+@@ -3092,6 +3092,9 @@ static struct sk_buff *skge_rx_get(struct net_device *dev,
+ if (!nskb)
+ goto resubmit;
+
++ skb = e->skb;
++ prefetch(skb->data);
++
+ if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {
+ dev_kfree_skb(nskb);
+ goto resubmit;
+@@ -3101,8 +3104,6 @@ static struct sk_buff *skge_rx_get(struct net_device *dev,
+ dma_unmap_addr(e, mapaddr),
+ dma_unmap_len(e, maplen),
+ PCI_DMA_FROMDEVICE);
+- skb = e->skb;
+- prefetch(skb->data);
+ }
+
+ skb_put(skb, len);
+--
+1.8.3.1
+
diff --git a/kernel.spec b/kernel.spec
index 2383966..58511a4 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -763,6 +763,9 @@ Patch25104: ansi_cprng-Fix-off-by-one-error-in-non-block-size-request.patch
#rhbz 928561
Patch25105: 0001-HID-kye-Add-report-fixup-for-Genius-Gx-Imperator-Key.patch
+#rhbz 1008323
+Patch25106: 0001-skge-fix-broken-driver.patch
+
#rhbz 997705
Patch25110: rpc-clean-up-decoding-of-gssproxy-linux-creds.patch
Patch25111: rpc-comment-on-linux_cred-encoding-treat-all-as-unsigned.patch
@@ -1486,6 +1489,9 @@ ApplyPatch rpc-comment-on-linux_cred-encoding-treat-all-as-unsigned.patch
ApplyPatch rpc-fix-huge-kmallocs-in-gss-proxy.patch
ApplyPatch rpc-let-xdr-layer-allocate-gssproxy-receieve-pages.patch
+#rhbz 1008323
+ApplyPatch 0001-skge-fix-broken-driver.patch
+
# END OF PATCH APPLICATIONS
%endif
@@ -2299,6 +2305,7 @@ fi
%changelog
* Fri Sep 20 2013 Josh Boyer <jwboyer at fedoraproject.org>
+- Fix broken skge driver (rhbz 1008328)
- Fix large order rpc allocations (rhbz 997705)
- Fix multimedia keys on Genius GX keyboard (rhbz 928561)
More information about the scm-commits
mailing list