Re: Re: [B.A.T.M.A.N.] [PATCH] net: fix possible deadlocks in rtnl_trylock/unlock
From: Eric Dumazet <hidden>
Date: 2012-12-01 19:44:38
Also in:
batman
From: Eric Dumazet <hidden>
Date: 2012-12-01 19:44:38
Also in:
batman
On Sat, 2012-12-01 at 20:04 +0100, Sven Eckelmann wrote:
On Saturday 01 December 2012 10:36:12 Eric Dumazet wrote:quoted
quoted
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.
I was reacting to the change in net/bridge/br_sysfs_br.c rtnl_trylock() could set a boolean flag to explicitly WARN_ON() in case we try to unregister a device.