rpms/kernel/devel linux-2.6-net-fix-gro-bug.patch, NONE, 1.1 linux-2.6-net-xfrm-fix-spin-unlock.patch, NONE, 1.1 kernel.spec, 1.1477, 1.1478
Chuck Ebbert
cebbert at fedoraproject.org
Sat Mar 28 00:58:53 UTC 2009
Author: cebbert
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv1049
Modified Files:
kernel.spec
Added Files:
linux-2.6-net-fix-gro-bug.patch
linux-2.6-net-xfrm-fix-spin-unlock.patch
Log Message:
Fix 2.6.29 networking lockups.
Fix locking in net/xfrm/xfrm_state.c (#489764)
linux-2.6-net-fix-gro-bug.patch:
--- NEW FILE linux-2.6-net-fix-gro-bug.patch ---
http://marc.info/?l=linux-kernel&m=123819452727313&w=4
It's a known problem, the following fix will be submitted
to 2.6.29.1 over the weekend.
GRO: Disable GRO on legacy netif_rx path
When I fixed the GRO crash in the legacy receive path I used
napi_complete to replace __napi_complete. Unfortunately they're
not the same when NETPOLL is enabled, which may result in us
not calling __napi_complete at all.
What's more, we really do need to keep the __napi_complete call
within the IRQ-off section since in theory an IRQ can occur in
between and fill up the backlog to the maximum, causing us to
lock up.
Since we can't seem to find a fix that works properly right now,
this patch reverts all the GRO support from the netif_rx path.
Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
net/core/dev.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 052dd47..63ec4bf 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2627,18 +2627,15 @@ static int process_backlog(struct napi_struct *napi, int quota)
local_irq_disable();
skb = __skb_dequeue(&queue->input_pkt_queue);
if (!skb) {
+ __napi_complete(napi);
local_irq_enable();
- napi_complete(napi);
- goto out;
+ break;
}
local_irq_enable();
- napi_gro_receive(napi, skb);
+ netif_receive_skb(skb);
} while (++work < quota && jiffies == start_time);
- napi_gro_flush(napi);
-
-out:
return work;
}
linux-2.6-net-xfrm-fix-spin-unlock.patch:
--- NEW FILE linux-2.6-net-xfrm-fix-spin-unlock.patch ---
xfrm: spin_lock() should be spin_unlock()
spin_lock() should be spin_unlock() in xfrm_state_walk_done().
caused by:
commit 12a169e7d8f4b1c95252d8b04ed0f1033ed7cfe2
"ipsec: Put dumpers on the dump list"
Reported-by: Marc Milgram <mmilgram at redhat.com>
Signed-off-by: Chuck Ebbert <cebbert at redhat.com>
---
rh bug 489764
--- linux-2.6.29.noarch.orig/net/xfrm/xfrm_state.c
+++ linux-2.6.29.noarch/net/xfrm/xfrm_state.c
@@ -1615,7 +1615,7 @@ void xfrm_state_walk_done(struct xfrm_st
spin_lock_bh(&xfrm_state_lock);
list_del(&walk->all);
- spin_lock_bh(&xfrm_state_lock);
+ spin_unlock_bh(&xfrm_state_lock);
}
EXPORT_SYMBOL(xfrm_state_walk_done);
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1477
retrieving revision 1.1478
diff -u -r1.1477 -r1.1478
--- kernel.spec 27 Mar 2009 07:13:58 -0000 1.1477
+++ kernel.spec 28 Mar 2009 00:58:23 -0000 1.1478
@@ -691,6 +691,12 @@
#Adding dropwatch into rawhide until we get to 2.6.30
Patch9003: linux-2.6-dropwatch-protocol.patch
+# fix for net lockups, will be in 2.6.29.1
+Patch9100: linux-2.6-net-fix-gro-bug.patch
+
+# fix locking in ipsec (#489764)
+Patch9101: linux-2.6-net-xfrm-fix-spin-unlock.patch
+
%endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1240,6 +1246,9 @@
ApplyPatch linux-2.6-dropwatch-protocol.patch
+ApplyPatch linux-2.6-net-fix-gro-bug.patch
+ApplyPatch linux-2.6-net-xfrm-fix-spin-unlock.patch
+
# END OF PATCH APPLICATIONS
%endif
@@ -1823,6 +1832,10 @@
# and build.
%changelog
+* Fri Mar 27 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.29-16
+- Fix 2.6.29 networking lockups.
+- Fix locking in net/xfrm/xfrm_state.c (#489764)
+
* Fri Mar 27 2009 Ben Skeggs <bskeggs at redhat.com>
- drm-nouveau.patch: do nothing for dac_{prepare,commit}, it's useless
and breaks some things in strange ways.
More information about the fedora-extras-commits
mailing list