Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24d559ca authored by David S. Miller's avatar David S. Miller
Browse files

[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: default avatarDavid S. Miller <davem@davemloft.net>
parent 5851fadc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
@@ -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:
+2 −0
Original line number Diff line number Diff line
@@ -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.
	 */
+2 −0
Original line number Diff line number Diff line
@@ -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