]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
sparc patch added to queue
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Mar 2007 04:18:05 +0000 (21:18 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Mar 2007 04:18:05 +0000 (21:18 -0700)
review-2.6.20/fix-niagara-memory-corruption.patch [new file with mode: 0644]
review-2.6.20/series

diff --git a/review-2.6.20/fix-niagara-memory-corruption.patch b/review-2.6.20/fix-niagara-memory-corruption.patch
new file mode 100644 (file)
index 0000000..264067a
--- /dev/null
@@ -0,0 +1,83 @@
+From stable-bounces@linux.kernel.org  Mon Mar 19 21:16:53 2007
+From: David Miller <davem@davemloft.net>
+Date: Mon, 19 Mar 2007 14:50:04 -0700 (PDT)
+Subject: Fix niagara memory corruption
+To: stable@kernel.org
+Cc: bunk@stusta.de
+Message-ID: <20070319.145004.21927270.davem@davemloft.net>
+
+From: David Miller <davem@davemloft.net>
+
+[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().
+
+Note that arch/sparc64/lib/xor.S already got this right.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc64/kernel/tsb.S   |    1 +
+ arch/sparc64/lib/NGbzero.S  |    1 +
+ arch/sparc64/lib/NGmemcpy.S |    2 ++
+ arch/sparc64/lib/NGpage.S   |    2 ++
+ 4 files changed, 6 insertions(+)
+
+--- a/arch/sparc64/kernel/tsb.S
++++ b/arch/sparc64/kernel/tsb.S
+@@ -546,6 +546,7 @@ NGtsb_init:
+       subcc           %o1, 0x100, %o1
+       bne,pt          %xcc, 1b
+        add            %o0, 0x100, %o0
++      membar          #Sync
+       retl
+        wr             %g2, 0x0, %asi
+       .size           NGtsb_init, .-NGtsb_init
+--- 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:
+--- 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.
+        */
+--- a/arch/sparc64/lib/NGpage.S
++++ b/arch/sparc64/lib/NGpage.S
+@@ -41,6 +41,7 @@ NGcopy_user_page:    /* %o0=dest, %o1=src, 
+       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=vadd
+       subcc           %g7, 64, %g7
+       bne,pt          %xcc, 1b
+        add            %o0, 32, %o0
++      membar          #Sync
+       retl
+        nop
index fb97f5d7f0443d669f37a231dde4b130935807ea..1f7797c5642c79ac4a919d4a327b45333c0dbe3f 100644 (file)
@@ -30,3 +30,4 @@ fix-deadlock-in-audit_log_task_context.patch
 uml-arch_prctl-should-set-thread-fs.patch
 input-i8042-another-attempt-to-fix-aux-delivery-checks.patch
 st-fix-tape-dies-if-wrong-block-size-used-bug-7919.patch
+fix-niagara-memory-corruption.patch