summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/net/dst.h9
-rw-r--r--net/core/dst.c3
2 files changed, 7 insertions, 5 deletions
diff --git a/include/net/dst.h b/include/net/dst.h
index 543ff945bb2f..5cdc6c2b4326 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -142,15 +142,14 @@ struct dst_entry * dst_clone(struct dst_entry * dst)
return dst;
}
+extern const char dst_underflow_bug_msg[];
+
static inline
void dst_release(struct dst_entry * dst)
{
if (dst) {
- if (atomic_read(&dst->__refcnt) < 1) {
- printk("BUG: dst underflow %d: %p\n",
- atomic_read(&dst->__refcnt),
- current_text_addr());
- }
+ if (atomic_read(&dst->__refcnt) < 1)
+ printk(dst_underflow_bug_msg, dst, current_text_addr());
atomic_dec(&dst->__refcnt);
}
}
diff --git a/net/core/dst.c b/net/core/dst.c
index 42aeae5959f5..9f14ae8a7673 100644
--- a/net/core/dst.c
+++ b/net/core/dst.c
@@ -19,6 +19,8 @@
#include <net/dst.h>
+const char dst_underflow_bug_msg[] = KERN_DEBUG "BUG: dst underflow %d: %p at %p\n";
+
/* Locking strategy:
* 1) Garbage collection state of dead destination cache
* entries is protected by dst_lock.
@@ -273,6 +275,7 @@ void __init dst_init(void)
register_netdevice_notifier(&dst_dev_notifier);
}
+EXPORT_SYMBOL(dst_underflow_bug_msg);
EXPORT_SYMBOL(__dst_free);
EXPORT_SYMBOL(dst_alloc);
EXPORT_SYMBOL(dst_destroy);