===== include/net/dst.h 1.24 vs edited ===== --- 1.24/include/net/dst.h 2004-10-26 09:10:25 +10:00 +++ edited/include/net/dst.h 2005-02-04 18:24:46 +11:00 @@ -147,6 +147,7 @@ { if (dst) { WARN_ON(atomic_read(&dst->__refcnt) < 1); + smp_mb__before_atomic_dec(); atomic_dec(&dst->__refcnt); } } ===== net/core/dst.c 1.25 vs edited ===== --- 1.25/net/core/dst.c 2005-01-14 15:41:04 +11:00 +++ edited/net/core/dst.c 2005-02-04 18:26:06 +11:00 @@ -169,6 +169,8 @@ struct neighbour *neigh; struct hh_cache *hh; + smp_rmb(); + again: neigh = dst->neighbour; hh = dst->hh;