On Saturday 01 December 2012 10:36:12 Eric Dumazet wrote:
[...]
quoted
diff --git a/net/batman-adv/sysfs.c b/net/batman-adv/sysfs.c
index 66518c7..41b74aa 100644
--- a/net/batman-adv/sysfs.c
+++ b/net/batman-adv/sysfs.c
@@ -635,7 +635,7 @@ static ssize_t batadv_store_mesh_iface(struct kobject
*kobj,>
ret = batadv_hardif_enable_interface(hard_iface, buff);
unlock:
- rtnl_unlock();
+ __rtnl_unlock();
out:
batadv_hardif_free_ref(hard_iface);
return ret;
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index c5c0593..c122782 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -142,7 +142,7 @@ static ssize_t store_stp_state(struct device *d,
if (!rtnl_trylock())
return restart_syscall();
br_stp_set_enabled(br, val);
- rtnl_unlock();
+ __rtnl_unlock();
return len;
}
I have no idea of why you believe there is a problem here.
Could you explain how net_todo_list could be not empty ?
As long as no device is unregistered between
rtnl_trylock()/rtnl_unlock(), there is no possible deadlock.
I am not sure what "here" means for your. At least batman-adv tries to
unregister a device -> problem [1]. I will not make any judgements about the
other uses in the kernel/other parts patched by Simon.
Kind regards,
Sven
[1] http://article.gmane.org/gmane.linux.kernel/1392295