jme: Prevent possible read re-order error
authorGuo-Fu Tseng <cooldavid@cooldavid.org>
Mon, 18 Oct 2010 14:10:42 +0000 (14:10 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Oct 2010 10:52:10 +0000 (03:52 -0700)
Adding read memory barrier in between flag reading and data reading of
receive descriptors. This prevents the data being read before hardware
complete writing informations.

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/jme.c

index 0ea0da32d7d8fd00cb0c39a54f6d11f3913f758d..095f8998714f599784354358169eb5b7fc320755 100644 (file)
@@ -989,6 +989,7 @@ jme_process_receive(struct jme_adapter *jme, int limit)
                        goto out;
                --limit;
 
+               rmb();
                desccnt = rxdesc->descwb.desccnt & RXWBDCNT_DCNT;
 
                if (unlikely(desccnt > 1 ||