diff options
author | Sven Eckelmann <sven@narfation.org> | 2011-05-03 05:51:38 -0400 |
---|---|---|
committer | Sven Eckelmann <sven@narfation.org> | 2011-05-08 10:10:41 -0400 |
commit | c3caf5196c47a5d1c325308d8eb7f6b020ba12df (patch) | |
tree | 6c94a6272919cb238dea5e0d4a3c06f27e7bb3f3 /net/batman-adv/main.c | |
parent | 61906ae86d8989e5bd3bc1f51b2fb8d32ffde2c5 (diff) |
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.c | 3 |
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 @@ | |||
33 | #include "vis.h" | 33 | #include "vis.h" |
34 | #include "hash.h" | 34 | #include "hash.h" |
35 | 35 | ||
36 | |||
37 | /* List manipulations on hardif_list have to be rtnl_lock()'ed, | ||
38 | * list traversals just rcu-locked */ | ||
36 | struct list_head hardif_list; | 39 | struct list_head hardif_list; |
37 | 40 | ||
38 | unsigned char broadcast_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; | 41 | unsigned char broadcast_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; |