aboutsummaryrefslogtreecommitdiff
path: root/arch/sparc64/lib/NGpage.S
diff options
context:
space:
mode:
authorDavid Miller <davem@davemloft.net>2007-03-19 14:50:04 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2007-03-23 12:49:27 -0700
commit9c06278212e2d8f050fbd6ca9cb277836b3c523d (patch)
treed7f46d8efda2e8101fb273320dbbec6c6eb0cc29 /arch/sparc64/lib/NGpage.S
parentad23c76c32efdf8f633cb41c3df0ef6780f5b275 (diff)
Fix niagara memory corruption
[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>
Diffstat (limited to 'arch/sparc64/lib/NGpage.S')
-rw-r--r--arch/sparc64/lib/NGpage.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/sparc64/lib/NGpage.S b/arch/sparc64/lib/NGpage.S
index 7d7c3bb8dcbf..8ce3a0c9c537 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