From 189b7f72aa64eecf1b3ee4b8652d4973b4cdeb92 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Fri, 14 Nov 2008 00:53:54 -0800 Subject: [PATCH] --- yaml --- r: 121855 b: refs/heads/master c: ef711cf1d156428d4c2911b8c86c6ce90519dc45 h: refs/heads/master i: 121853: 980bf464d87911078b9d58c1b8fbd39a2c5abded 121851: 636ce03ef3c040f9a194c2b7260924c842508496 121847: 371c129cce4111ea6d2ee1d132d3e14ac262078c 121839: 0b14746f29ad5fb0e2e20753265188f39e9c809a 121823: b97d3a0f5af3af01657bfe654de86ec4c31526b2 121791: cd1d2a5bbf884be984bcf0ab7d946555906d2fc4 121727: 6f314d01812c37851a1854d78f84f147db4030c0 121599: a478c54816401f731273a3f5631fdc1834f58b17 121343: 57a60d0e9c5a68d82f4bb7ded622cbea1b666aab 120831: a6e573c8c61348f6c7273e901eb17f4356349edd v: v3 --- [refs] | 2 +- trunk/net/core/dst.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a1b3b8b59fe7..ec2a836d949c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f30ab418a1d3c5a8b83493e7d70d6876a74aa0ce +refs/heads/master: ef711cf1d156428d4c2911b8c86c6ce90519dc45 diff --git a/trunk/net/core/dst.c b/trunk/net/core/dst.c index 09c1530f4681..57bc4d5b8d08 100644 --- a/trunk/net/core/dst.c +++ b/trunk/net/core/dst.c @@ -263,9 +263,11 @@ struct dst_entry *dst_destroy(struct dst_entry * dst) 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);