summaryrefslogtreecommitdiffstats
path: root/net/batman-adv/main.c
diff options
context:
space:
mode:
authorSven Eckelmann2011-05-03 11:51:38 +0200
committerSven Eckelmann2011-05-08 16:10:41 +0200
commitc3caf5196c47a5d1c325308d8eb7f6b020ba12df (patch)
tree6c94a6272919cb238dea5e0d4a3c06f27e7bb3f3 /net/batman-adv/main.c
parentbatman-adv: multi vlan support for bridge loop detection (diff)
downloadkernel-qcow2-linux-c3caf5196c47a5d1c325308d8eb7f6b020ba12df.tar.gz
kernel-qcow2-linux-c3caf5196c47a5d1c325308d8eb7f6b020ba12df.tar.xz
kernel-qcow2-linux-c3caf5196c47a5d1c325308d8eb7f6b020ba12df.zip
batman-adv: Remove unnecessary hardif_list_lock
hardif_list_lock is unneccessary because we already ensure that no multiple admin operations can take place through rtnl_lock. hardif_list_lock only adds additional overhead and complexity. Critical functions now check whether they are called with rtnl_lock using ASSERT_RTNL. It indirectly fixes the problem that orig_hash_del_if() expects that only one interface is deleted from hardif_list at a time, but hardif_remove_interfaces() removes all at once and then calls orig_hash_del_if(). Reported-by: Linus Lüssing <linus.luessing@web.de> Signed-off-by: Sven Eckelmann <sven@narfation.org>
Diffstat (limited to 'net/batman-adv/main.c')
-rw-r--r--net/batman-adv/main.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
index 705e8be07c8d..7edf8d719e15 100644
--- a/net/batman-adv/main.c
+++ b/net/batman-adv/main.c
@@ -33,6 +33,9 @@
#include "vis.h"
#include "hash.h"
+
+/* List manipulations on hardif_list have to be rtnl_lock()'ed,
+ * list traversals just rcu-locked */
struct list_head hardif_list;
unsigned char broadcast_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};