diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-03-19 13:27:33 -0700 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-03-19 13:27:33 -0700 |
commit | 24d559cac4d741d60ec85e927974408020a2f060 (patch) | |
tree | e01419724e2da6c817d525756e92d584d41c03eb /arch/sparc64/lib/NGbzero.S | |
parent | 5851fadce8824d5d4b8fd02c22ae098401f6489e (diff) | |
download | op-kernel-dev-24d559cac4d741d60ec85e927974408020a2f060.zip op-kernel-dev-24d559cac4d741d60ec85e927974408020a2f060.tar.gz |
[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>
Diffstat (limited to 'arch/sparc64/lib/NGbzero.S')
-rw-r--r-- | arch/sparc64/lib/NGbzero.S | 1 |
1 files changed, 1 insertions, 0 deletions
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: |