[kernel] r8384 - in dists/etch/linux-2.6/debian: . patches/bugfix/sparc patches/series

Jurij Smakov jurij-guest at alioth.debian.org
Thu Mar 22 13:12:52 UTC 2007


Author: jurij-guest
Date: Thu Mar 22 12:12:52 2007
New Revision: 8384

Added:
   dists/etch/linux-2.6/debian/patches/bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch
Modified:
   dists/etch/linux-2.6/debian/changelog
   dists/etch/linux-2.6/debian/patches/series/12
Log:
Add bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch by David Miller, 
fixing an occasional oops in tcp_sendmsg() on T1k/T2k machines under 
heavy network load. Closes: #415819


Modified: dists/etch/linux-2.6/debian/changelog
==============================================================================
--- dists/etch/linux-2.6/debian/changelog	(original)
+++ dists/etch/linux-2.6/debian/changelog	Thu Mar 22 12:12:52 2007
@@ -22,6 +22,9 @@
     to frequent unaligned memory accesses on Sun machines with tulip NIC.
     Thanks to Doug Nazar for the patch and to Daniel J. Priem for testing.
     Closes: #409313.
+  * Add bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch by David Miller, fixing
+    an occasional oops in tcp_sendmsg() on T1k/T2k machines under heavy
+    network load. Closes: #415819
 
   [ dann frazier ]
   * bugfix/keys-serial-num-collision.patch

Added: dists/etch/linux-2.6/debian/patches/bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch
==============================================================================
--- (empty file)
+++ dists/etch/linux-2.6/debian/patches/bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch	Thu Mar 22 12:12:52 2007
@@ -0,0 +1,64 @@
+Author          : David Miller <davem at davemloft.net>
+Date            : Mon, 19 Mar 2007 11:58:19 -0700 (PDT)
+Message-ID	: <20070319.115819.63131235.davem at davemloft.net>
+Status          : confirmed working
+Description     : fixes oops in tcp_sendmsg on T1k/T2k machines under heavy network load
+
+[SPARC64]: store-init needs trailing membar.
+
+The manual says that it is required and we actually have crash reports
+where loads see stale data due to not having membars here.
+
+In one case the networking does:
+
+	memset(skb, 0, offsetof(struct sk_buff, truesize));
+
+and then some code later checks skb->nohdr for zero, but it's still
+the value that was there before the memset().
+
+Signed-off-by: David S. Miller <davem at davemloft.net>
+
+diff --git a/arch/sparc64/lib/NGbzero.S b/arch/sparc64/lib/NGbzero.S
+index e86baec..f10e452 100644
+--- a/arch/sparc64/lib/NGbzero.S
++++ b/arch/sparc64/lib/NGbzero.S
+@@ -88,6 +88,7 @@ NGbzero_loop:
+ 	bne,pt		%xcc, NGbzero_loop
+ 	 add		%o0, 64, %o0
+ 
++	membar		#Sync
+ 	wr		%o4, 0x0, %asi
+ 	brz,pn		%o1, NGbzero_done
+ NGbzero_medium:
+diff --git a/arch/sparc64/lib/NGmemcpy.S b/arch/sparc64/lib/NGmemcpy.S
+index 8e522b3..66063a9 100644
+--- a/arch/sparc64/lib/NGmemcpy.S
++++ b/arch/sparc64/lib/NGmemcpy.S
+@@ -247,6 +247,8 @@ FUNC_NAME:	/* %o0=dst, %o1=src, %o2=len */
+ 	/* fall through */
+ 
+ 60:	
++	membar		#Sync
++
+ 	/* %o2 contains any final bytes still needed to be copied
+ 	 * over. If anything is left, we copy it one byte at a time.
+ 	 */
+diff --git a/arch/sparc64/lib/NGpage.S b/arch/sparc64/lib/NGpage.S
+index 7d7c3bb..8ce3a0c 100644
+--- a/arch/sparc64/lib/NGpage.S
++++ b/arch/sparc64/lib/NGpage.S
+@@ -41,6 +41,7 @@ NGcopy_user_page:	/* %o0=dest, %o1=src, %o2=vaddr */
+ 	subcc		%g7, 64, %g7
+ 	bne,pt		%xcc, 1b
+ 	 add		%o0, 32, %o0
++	membar		#Sync
+ 	retl
+ 	 nop
+ 
+@@ -63,6 +64,7 @@ NGclear_user_page:	/* %o0=dest, %o1=vaddr */
+ 	subcc		%g7, 64, %g7
+ 	bne,pt		%xcc, 1b
+ 	 add		%o0, 32, %o0
++	membar		#Sync
+ 	retl
+ 	 nop

Modified: dists/etch/linux-2.6/debian/patches/series/12
==============================================================================
--- dists/etch/linux-2.6/debian/patches/series/12	(original)
+++ dists/etch/linux-2.6/debian/patches/series/12	Thu Mar 22 12:12:52 2007
@@ -6,3 +6,4 @@
 + bugfix/ipv6_setsockopt-NULL-deref.patch
 + bugfix/ipv6_getsockopt_sticky-null-opt.patch
 + bugfix/listxattr-mem-corruption.patch
++ bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch



More information about the Kernel-svn-changes mailing list