Re: NET_NS: unregister_netdevice: waiting for lo to become free(adding ipv6 address to interface)

From: Michael Leun
Date: Mon Dec 06 2010 - 18:15:40 EST


On Mon, 06 Dec 2010 13:22:00 -0800
ebiederm@xxxxxxxxxxxx (Eric W. Biederman) wrote:

> Menil Jean-Philippe <jean-philippe.menil@xxxxxxxxxxxxxx> writes:
>
> > Le 24/10/2010 15:15, Michael Leun a écrit :
> >> On Fri, 22 Oct 2010 19:05:32 +0200
> >> Michael Leun<lkml20100708@xxxxxxxxxxxxxxx> wrote:
> >>
> >>> On Fri, 22 Oct 2010 14:48:58 +0200
> >>> David Lamparter<equinox@xxxxxxxxxx> wrote:
> >>>
> >>>> On Thu, Oct 21, 2010 at 05:15:32PM +0200, Michael Leun wrote:
> >>>>> unfortunately the bug described below originally reported in
> >>>>> 2.6.35-rcX is still there in 2.6.36.
[...]
> > curiously, i'm facing a similar problem in 2.6.36.1
> >
> > in my container, when i configure ipv6 adress on the interfaces,
> > everything seems good on the first boot of the host. If i shutdown
> > my container (lxc), then boot it, i observe the following logs:
> > Dec 6 17:04:12 suntory.u06.univ-nantes.prive kernel: [ 368.192019]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:04:22 suntory.u06.univ-nantes.prive kernel: [ 378.432018]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:04:32 suntory.u06.univ-nantes.prive kernel: [ 388.672015]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:04:42 suntory.u06.univ-nantes.prive kernel: [ 398.912016]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:04:53 suntory.u06.univ-nantes.prive kernel: [ 409.152016]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:05:03 suntory.u06.univ-nantes.prive kernel: [ 419.392018]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:05:13 suntory.u06.univ-nantes.prive kernel: [ 429.632018]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:05:23 suntory.u06.univ-nantes.prive kernel: [ 439.876016]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:05:34 suntory.u06.univ-nantes.prive kernel: [ 450.116015]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:05:44 suntory.u06.univ-nantes.prive kernel: [ 460.356019]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:05:54 suntory.u06.univ-nantes.prive kernel: [ 470.596020]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:06:04 suntory.u06.univ-nantes.prive kernel: [ 480.836019]
> > unregister_netdevice: waiting for lo to become free. Usage count = 4
> > Dec 6 17:06:05 suntory.u06.univ-nantes.prive kernel:
> > [ 481.468021] INFO: task lxc-start:3805 blocked for more than 120
> > seconds.
> >
> > Then i must reboot the host.
> > The same on kernel 2.6.34, but everything is good on a 2.6.32
> >
> > Some relvant informations about the kernel:
> > root@suntory:~# cat /boot/config-2.6.36.1-dsiun-1d | grep -i sysfs
> > # CONFIG_SYSFS_DEPRECATED_V2 is not set
> > CONFIG_ACPI_SYSFS_POWER=y
> > # CONFIG_WIRELESS_EXT_SYSFS is not set
> > CONFIG_ISCSI_BOOT_SYSFS=m
> > CONFIG_RTC_INTF_SYSFS=y
> > CONFIG_SYSFS=y
> > root@suntory:~# cat /boot/config-2.6.36.1-dsiun-1d | grep -i net_ns
> > CONFIG_NET_NS=y
> >
> > Is there anything in my configuration, i must check in order to get
> > ipv6 working fully in the container?
>
> 2.6.37-rc4 is working here. There were problems earlier in the
> earlier rcs. Can you try that?
>
> There have been a couple of different reference counting bugs between
> 2.6.34 and the present, and I haven't tracked them, just noticed they
> exist.

Can reproduce the following still on 2.6.36.1, but NOT on 2.6.37-rc4 -
so indeed seems to be fixed!


Putting an ipv6 address on a device seems to be the trigger:

OrigNS > # ip link add type veth
OrigNS > # ip link set dev veth0 up
OrigNS > # unshare -n /bin/bash
NewNS > # echo $$
<SomePID>
OrigNS > # ip link set dev veth1 netns <SomePID> # this, of course is
on a different terminal NewNS > # ip link set dev veth1 up
NewNS > # ip -6 addr add dev veth1 fd50:dead:beef::1/64
NewNS > # exit

Yields

kernel: unregister_netdevice: waiting for veth1 to become free. Usage
count = 3


--
MfG,

Michael Leun

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/