VLAN creation may lead to deadlock.

2 messages, 2 authors, 2015-02-13 · open the first message on its own page

VLAN creation may lead to deadlock.

From: Ignacy Gawedzki <hidden>
Date: 2015-02-13 12:03:06

Hi,

I stumbled upon the following annoying situation: supposing eth0 is some
interface that is currently DOWN, the following command

  ip link add link eth0 name eth0.1 up type vlan id 1

never returns and the kernel printks the following lines every few seconds

  unregister_netdevice: waiting for eth0.1 to become free. Usage count = 2

I understand that the kernel should prevent me from creating a VLAN interface
that's initially up when loose-binding is off and the master interface is down
(and indeed there is absolutely no problem when loose-binding is on), but the
unregistering of the currently-being-registered device should not block like
that.  It appears there are too few dev_puts compared to dev_holds in there.

Regards,

Ignacy

-- 
Ignacy Gawędzki
R&D Engineer
Green Communications

Re: VLAN creation may lead to deadlock.

From: Cong Wang <hidden>
Date: 2015-02-13 19:54:26

On Fri, Feb 13, 2015 at 4:02 AM, Ignacy Gawedzki
[off-list ref] wrote:
Hi,

I stumbled upon the following annoying situation: supposing eth0 is some
interface that is currently DOWN, the following command

  ip link add link eth0 name eth0.1 up type vlan id 1

never returns and the kernel printks the following lines every few seconds

  unregister_netdevice: waiting for eth0.1 to become free. Usage count = 2

I understand that the kernel should prevent me from creating a VLAN interface
that's initially up when loose-binding is off and the master interface is down
(and indeed there is absolutely no problem when loose-binding is on), but the
unregistering of the currently-being-registered device should not block like
that.  It appears there are too few dev_puts compared to dev_holds in there.
Good catch! It looks like we forgot to call unregister_vlan_dev(),
I am cooking a patch.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help