aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/bat_sysfs.c
diff options
context:
space:
mode:
authorSven Eckelmann <sven@narfation.org>2011-05-03 05:51:38 -0400
committerSven Eckelmann <sven@narfation.org>2011-05-08 10:10:41 -0400
commitc3caf5196c47a5d1c325308d8eb7f6b020ba12df (patch)
tree6c94a6272919cb238dea5e0d4a3c06f27e7bb3f3 /net/batman-adv/bat_sysfs.c
parent61906ae86d8989e5bd3bc1f51b2fb8d32ffde2c5 (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/bat_sysfs.c')
-rw-r--r--net/batman-adv/bat_sysfs.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/batman-adv/bat_sysfs.c b/net/batman-adv/bat_sysfs.c
index e449bf6353e0..85ba20d98a66 100644
--- a/net/batman-adv/bat_sysfs.c
+++ b/net/batman-adv/bat_sysfs.c
@@ -502,7 +502,9 @@ static ssize_t store_mesh_iface(struct kobject *kobj, struct attribute *attr,
502 rtnl_unlock(); 502 rtnl_unlock();
503 } 503 }
504 504
505 rtnl_lock();
505 ret = hardif_enable_interface(hard_iface, buff); 506 ret = hardif_enable_interface(hard_iface, buff);
507 rtnl_unlock();
506 508
507out: 509out:
508 hardif_free_ref(hard_iface); 510 hardif_free_ref(hard_iface);