X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=net%2Fcore%2Fdst.c;h=57bc4d5b8d084c053cded6ebddfe66bf6255d9f5;hb=a5ebc0b1a7843508b375f7ab8a36a628e5c9f372;hp=09c1530f46814d287929a37ce948885d44f8bb03;hpb=ae20a6afec1cf21919d97303f2d8b737eac5acc7;p=mv-sheeva.git diff --git a/net/core/dst.c b/net/core/dst.c index 09c1530f468..57bc4d5b8d0 100644 --- a/net/core/dst.c +++ b/net/core/dst.c @@ -263,9 +263,11 @@ again: void dst_release(struct dst_entry *dst) { if (dst) { - WARN_ON(atomic_read(&dst->__refcnt) < 1); + int newrefcnt; + smp_mb__before_atomic_dec(); - atomic_dec(&dst->__refcnt); + newrefcnt = atomic_dec_return(&dst->__refcnt); + WARN_ON(newrefcnt < 0); } } EXPORT_SYMBOL(dst_release);