diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/dst.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/net/core/dst.c b/net/core/dst.c index 694cd2a3f6d2..fe03266130b6 100644 --- a/net/core/dst.c +++ b/net/core/dst.c | |||
@@ -259,6 +259,16 @@ again: | |||
259 | return NULL; | 259 | return NULL; |
260 | } | 260 | } |
261 | 261 | ||
262 | void dst_release(struct dst_entry *dst) | ||
263 | { | ||
264 | if (dst) { | ||
265 | WARN_ON(atomic_read(&dst->__refcnt) < 1); | ||
266 | smp_mb__before_atomic_dec(); | ||
267 | atomic_dec(&dst->__refcnt); | ||
268 | } | ||
269 | } | ||
270 | EXPORT_SYMBOL(dst_release); | ||
271 | |||
262 | /* Dirty hack. We did it in 2.2 (in __dst_free), | 272 | /* Dirty hack. We did it in 2.2 (in __dst_free), |
263 | * we have _very_ good reasons not to repeat | 273 | * we have _very_ good reasons not to repeat |
264 | * this mistake in 2.3, but we have no choice | 274 | * this mistake in 2.3, but we have no choice |