Skip to content

Commit

Permalink
[SPARC64]: store-init needs trailing membar.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
David S. Miller committed Mar 19, 2007
1 parent 5851fad commit 24d559c
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 0 deletions.
1 change: 1 addition & 0 deletions arch/sparc64/kernel/tsb.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 1 addition & 0 deletions arch/sparc64/lib/NGbzero.S
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc64/lib/NGmemcpy.S
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc64/lib/NGpage.S
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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

Expand Down

0 comments on commit 24d559c

Please sign in to comment.