Skip to contentSkip to conversation

Question on device events and unregister_netdev.

DISCUSSION Ben Greear 2 participants 3 messages Jul 11, 2006

Subsystems (2)
lore
Share & tools
lore

Ben Greear

author
#0 lore raw

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

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com
maintainer
#1 lore raw

From: Ben Greear <[email protected]>
Date: Tue, 11 Jul 2006 16:27:25 -0700

Quoted 2 lines

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.

author
#2 lore raw
Quoted 4 lines · David Miller

From: Ben Greear <[email protected]>
Date: Tue, 11 Jul 2006 16:27:25 -0700

Quoted 8 lines
Quoted 2 lines

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

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com