Question on device events and unregister_netdev.

3 messages, 2 authors, 2006-07-11 · open the first message on its own page

Question on device events and unregister_netdev.

From: Ben Greear <hidden>
Date: 2006-07-11 23:27:26

Hello!

I'm working on stacking some virtual interfaces, and ran into a problem with
locking.

Basically, I have an ethernet-like device, and on top of that I am putting
802.1Q vlans..and on top of that, some other vlan (macvlan).

In the event notifier for the vlan, I attempt to delete all vlans who's
under-lying device is going away.  I do the same for the macvlan.

Currently, I am setting a deadlock warning because the macvlan code
is calling unregister_netdev, but the 'rmmod' method already has
a lock in there due to having earlier called unregister_netdev on the
.1q vlan.


So, the question is:  Should I be calling unregister_netdev from the notifier
callback?

Thanks,
Ben

-- 
Ben Greear [off-list ref]
Candela Technologies Inc  http://www.candelatech.com

Re: Question on device events and unregister_netdev.

From: David Miller <davem@davemloft.net>
Date: 2006-07-11 23:42:43

From: Ben Greear <redacted>
Date: Tue, 11 Jul 2006 16:27:25 -0700
So, the question is: Should I be calling unregister_netdev from the
notifier callback?
Not really, as you saw it can be deadlock prone.

One idea is to run the unregister asynchronously via a workqueue.
That should be able to get you out of the deadlock.

Re: Question on device events and unregister_netdev.

From: Ben Greear <hidden>
Date: 2006-07-11 23:48:49

David Miller wrote:
From: Ben Greear <redacted>
Date: Tue, 11 Jul 2006 16:27:25 -0700

quoted
So, the question is: Should I be calling unregister_netdev from the
notifier callback?

Not really, as you saw it can be deadlock prone.

One idea is to run the unregister asynchronously via a workqueue.
That should be able to get you out of the deadlock.
After more poking, I notice that 802.1q uses unregister_netdevice,
which does not grab rtnl.  It seems that the notifiers are always called
with rtnl asserted.  That would be a recursive call to unregister_netdevice,
however...any reason that won't work?

Ben

-- 
Ben Greear [off-list ref]
Candela Technologies Inc  http://www.candelatech.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help