Thread (9 messages) 9 messages, 5 authors, 2012-12-03

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

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help