netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
       [not found] <411BC284.6080807@vgertech.com>
@ 2004-08-13  8:03 ` Vladimir B. Savkin
  2004-08-13 20:35   ` Nuno Silva
  0 siblings, 1 reply; 10+ messages in thread
From: Vladimir B. Savkin @ 2004-08-13  8:03 UTC (permalink / raw)
  To: Nuno Silva; +Cc: linux-kernel, netdev

On Thu, Aug 12, 2004 at 08:18:28PM +0100, Nuno Silva wrote:
> Hi!
> 
> With 2.6.8-rc4-bk1 I get "Aug 12 17:33:10 puma kernel:
> unregister_netdevice: waiting for ppp0 to become free. Usage count = 1"
> in the logs after pppd exit.
> 
> Also, the box won't reboot and print that message forever in the
> console. sysrq-U && sysrq-R did it :-)
> 
> The last version I tried was 2.6.8-rc2-bk11 and, wrt this prob, is
> running fine. So, the problem is in that window and the changelog for
> rc4 mentions something about ppp:
> http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.8-rc4
> 
> If someone requires more information or tests feel free to ask!

I saw this too, with 2.6.7-rc3-mm1.
I have discovered that it happens because of idle TCP socket
holds a reference to a network device.
After killing associated process, device was freed immediately.

~
:wq
                                        With best regards, 
                                           Vladimir Savkin. 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-13  8:03 ` 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1 Vladimir B. Savkin
@ 2004-08-13 20:35   ` Nuno Silva
  2004-08-22  2:13     ` Nuno Silva
  0 siblings, 1 reply; 10+ messages in thread
From: Nuno Silva @ 2004-08-13 20:35 UTC (permalink / raw)
  To: Vladimir B. Savkin; +Cc: linux-kernel, netdev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Vladimir B. Savkin wrote:
| On Thu, Aug 12, 2004 at 08:18:28PM +0100, Nuno Silva wrote:
|
|>Hi!
|>
|>With 2.6.8-rc4-bk1 I get "Aug 12 17:33:10 puma kernel:
|>unregister_netdevice: waiting for ppp0 to become free. Usage count = 1"
|>in the logs after pppd exit.
|>
|>Also, the box won't reboot and print that message forever in the
|>console. sysrq-U && sysrq-R did it :-)
|>
|>The last version I tried was 2.6.8-rc2-bk11 and, wrt this prob, is
|>running fine. So, the problem is in that window and the changelog for
|>rc4 mentions something about ppp:
|>http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.8-rc4
|>
|>If someone requires more information or tests feel free to ask!
|
|
| I saw this too, with 2.6.7-rc3-mm1.
| I have discovered that it happens because of idle TCP socket
| holds a reference to a network device.
| After killing associated process, device was freed immediately.
|

I waited for 5 mins before sysrq-U && sysrq-R.
Anyway, if I 'killall pppd' and then issue 'ifconfig -a' the ifconfig
command will hang.

This didn't happen with 2.6.8-rc2-bk11 (the one I'm running now), so
something changed... I'm I the only one with ppp/pppd/pppoe who tried
2.6.8-rc4-bk1? :-) Any success reports?

Regards,
Nuno Silva

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBHSYlOPig54MP17wRAs1NAJ0dMRd7tqnpRk/tnxZj7xSeoUL3UgCgrk50
tnzeT6sy3CauOI5WK7HF16o=
=mkWf
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-13 20:35   ` Nuno Silva
@ 2004-08-22  2:13     ` Nuno Silva
  2004-08-22  5:25       ` David S. Miller
  2004-08-22  8:14       ` Herbert Xu
  0 siblings, 2 replies; 10+ messages in thread
From: Nuno Silva @ 2004-08-22  2:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: Vladimir B. Savkin, netdev

[-- Attachment #1: Type: text/plain, Size: 2187 bytes --]

Nuno Silva wrote:
> Vladimir B. Savkin wrote:
> | On Thu, Aug 12, 2004 at 08:18:28PM +0100, Nuno Silva wrote:
> |
> |>Hi!
> |>
> |>With 2.6.8-rc4-bk1 I get "Aug 12 17:33:10 puma kernel:
> |>unregister_netdevice: waiting for ppp0 to become free. Usage count = 1"
> |>in the logs after pppd exit.
> |>
> |>Also, the box won't reboot and print that message forever in the
> |>console. sysrq-U && sysrq-R did it :-)
> |>
> |>The last version I tried was 2.6.8-rc2-bk11 and, wrt this prob, is
> |>running fine. So, the problem is in that window and the changelog for
> |>rc4 mentions something about ppp:
> |>http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.8-rc4
> |>
> |>If someone requires more information or tests feel free to ask!
> |
> |
> | I saw this too, with 2.6.7-rc3-mm1.
> | I have discovered that it happens because of idle TCP socket
> | holds a reference to a network device.
> | After killing associated process, device was freed immediately.
> |
> 
> I waited for 5 mins before sysrq-U && sysrq-R.
> Anyway, if I 'killall pppd' and then issue 'ifconfig -a' the ifconfig
> command will hang.
> 
> This didn't happen with 2.6.8-rc2-bk11 (the one I'm running now), so
> something changed... I'm I the only one with ppp/pppd/pppoe who tried
> 2.6.8-rc4-bk1? :-) Any success reports?
> 

OK, I just tested again and the problem persists. However this time I 
had some spare moments so I rebooted a few times to isolate the problem.

The problem is in the QoS code. If I start ppp whithout the 
/etc/ppp/ip-up.d/wshaper script everything is fine. If I try the 
wshaper.htb it's also fine. So, I'd say that the problem is in the CBQ 
section. This time I waited for 1 hour and got hundreds of 
"unregister_netdevice: waiting for ppp0 to become free. Usage count = 1" 
in the console/syslog. pppd eats 99% CPU. ifconfig freezes. Even reboot 
isn't possible without sysrq's help.

This problem was introduced between 2.6.8-rc2-bk11 and 2.6.8-rc4-bk1 and 
always happens. Right now I'm testing with 2.6.8.1 with a patch from Mr. 
Miller -- "cacheline-align qdisc data in qdisc_create()" (attached).

If someone needs more details feel free to ask!

Regards,
Nuno Silva


[-- Attachment #2: qdisc.diff --]
[-- Type: text/x-patch, Size: 1816 bytes --]

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/08/15 19:33:16-07:00 kaber@trash.net 
#   [PKT_SCHED]: cacheline-align qdisc data in qdisc_create()
#   
#   Signed-off-by: Patrick McHardy <kaber@trash.net>
#   Signed-off-by: David S. Miller <davem@redhat.com>
# 
# net/sched/sch_api.c
#   2004/08/15 19:32:59-07:00 kaber@trash.net +13 -8
#   [PKT_SCHED]: cacheline-align qdisc data in qdisc_create()
#   
#   Signed-off-by: Patrick McHardy <kaber@trash.net>
#   Signed-off-by: David S. Miller <davem@redhat.com>
# 
diff -Nru a/net/sched/sch_api.c b/net/sched/sch_api.c
--- a/net/sched/sch_api.c	2004-08-19 07:33:10 -07:00
+++ b/net/sched/sch_api.c	2004-08-19 07:33:10 -07:00
@@ -389,7 +389,8 @@
 {
 	int err;
 	struct rtattr *kind = tca[TCA_KIND-1];
-	struct Qdisc *sch = NULL;
+	void *p = NULL;
+	struct Qdisc *sch;
 	struct Qdisc_ops *ops;
 	int size;
 
@@ -407,12 +408,18 @@
 	if (ops == NULL)
 		goto err_out;
 
-	size = sizeof(*sch) + ops->priv_size;
+	/* ensure that the Qdisc and the private data are 32-byte aligned */
+	size = ((sizeof(*sch) + QDISC_ALIGN_CONST) & ~QDISC_ALIGN_CONST);
+	size += ops->priv_size + QDISC_ALIGN_CONST;
 
-	sch = kmalloc(size, GFP_KERNEL);
+	p = kmalloc(size, GFP_KERNEL);
 	err = -ENOBUFS;
-	if (!sch)
+	if (!p)
 		goto err_out;
+	memset(p, 0, size);
+	sch = (struct Qdisc *)(((unsigned long)p + QDISC_ALIGN_CONST)
+	                       & ~QDISC_ALIGN_CONST);
+	sch->padded = (char *)sch - (char *)p;
 
 	/* Grrr... Resolve race condition with module unload */
 
@@ -420,8 +427,6 @@
 	if (ops != qdisc_lookup_ops(kind))
 		goto err_out;
 
-	memset(sch, 0, size);
-
 	INIT_LIST_HEAD(&sch->list);
 	skb_queue_head_init(&sch->q);
 
@@ -470,8 +475,8 @@
 
 err_out:
 	*errp = err;
-	if (sch)
-		kfree(sch);
+	if (p)
+		kfree(p);
 	return NULL;
 }
 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-22  2:13     ` Nuno Silva
@ 2004-08-22  5:25       ` David S. Miller
  2004-08-22  8:02         ` Nuno Silva
  2004-08-22  8:14       ` Herbert Xu
  1 sibling, 1 reply; 10+ messages in thread
From: David S. Miller @ 2004-08-22  5:25 UTC (permalink / raw)
  To: Nuno Silva; +Cc: linux-kernel, master, netdev

On Sun, 22 Aug 2004 03:13:55 +0100
Nuno Silva <nuno.silva@vgertech.com> wrote:

> This problem was introduced between 2.6.8-rc2-bk11 and 2.6.8-rc4-bk1 and 
> always happens. Right now I'm testing with 2.6.8.1 with a patch from Mr. 
> Miller -- "cacheline-align qdisc data in qdisc_create()" (attached).

Does that patch fix the problem?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-22  5:25       ` David S. Miller
@ 2004-08-22  8:02         ` Nuno Silva
  0 siblings, 0 replies; 10+ messages in thread
From: Nuno Silva @ 2004-08-22  8:02 UTC (permalink / raw)
  To: David S. Miller; +Cc: linux-kernel, master, netdev

[-- Attachment #1: Type: text/plain, Size: 2000 bytes --]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

David S. Miller wrote:
| On Sun, 22 Aug 2004 03:13:55 +0100
| Nuno Silva <nuno.silva@vgertech.com> wrote:
|
|
|>This problem was introduced between 2.6.8-rc2-bk11 and 2.6.8-rc4-bk1 and
|>always happens. Right now I'm testing with 2.6.8.1 with a patch from Mr.
|>Miller -- "cacheline-align qdisc data in qdisc_create()" (attached).
|
|
| Does that patch fix the problem?
|

Hi!

No, but that patch is necessary for me to use QoS at all, or the kernel
oopses.

I was refering to that patch for you to know that's not the same
problem. Sorry for not being 100% clear.

If you want to freeze your networking :-) you can do this:

remove pppd (or adjust the ppp0 interface name later)
# killall pppd

# sleep 10

make a fony connection to 1.1.1.2 using /dev/null
#pppd /dev/null connect /bin/true persist demand 1.1.1.1:1.1.1.2

# sleep 1

add a CBQ root to ppp0 (or ppp1, if you didn't killall and have another
running)
# tc qdisc add dev ppp0 root handle 1: cbq avpkt 1000 bandwidth 10mbit

ping the fony remote:
# ping 1.1.1.2

kill pppd
#killall pppd

Now check dmesg, you should get "unregister_netdevice: waiting for ppp0
to become free. Usage count = 1"

Another remark: In single user mode pppd died and system load is 0. In
initlevel 3, pppd eats all my CPU... Don't know why.

Right now I'm testing 2.6.8.1-ck3 (because of that can't-burn-cdrom
thing and other stuff) so the attached /proc/config.gz is somewhat
non-vanilla, but this happens with 2.6.8-rc4-bk1[*] and above.

[*] this version is "bad" and 2.6.8-rc2-bk11 is "good". Didn't test with
rc3...

As you can see in the .config I'm using the OLD POLICER.

As always, please request more info if you need it! :-)

Regards,
Nuno Silva
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBKFL5OPig54MP17wRAsHeAJ4nZFSW7nat0/aahUokzriHIueO5wCgqPCM
EogRAFF/jofq4kN609j6dFc=
=1HPc
-----END PGP SIGNATURE-----

[-- Attachment #2: config.gz --]
[-- Type: application/x-gzip, Size: 10941 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-22  2:13     ` Nuno Silva
  2004-08-22  5:25       ` David S. Miller
@ 2004-08-22  8:14       ` Herbert Xu
  2004-08-22 12:39         ` Patrick McHardy
  1 sibling, 1 reply; 10+ messages in thread
From: Herbert Xu @ 2004-08-22  8:14 UTC (permalink / raw)
  To: Nuno Silva; +Cc: linux-kernel, master, netdev, kaber

Nuno Silva <nuno.silva@vgertech.com> wrote:
> 
> The problem is in the QoS code. If I start ppp whithout the 

OK, this appears to be due to the changeset titled

[PKT_SCHED]: Refcount qdisc->dev for __qdisc_destroy rcu-callback

It adds a reference to dev.

I don't see any code that cleans up that reference when the dev goes
down.  So someone needs to add that similar to the code in net/core/dst.c.

Patrick, could you please have a look at this?

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-22  8:14       ` Herbert Xu
@ 2004-08-22 12:39         ` Patrick McHardy
  2004-08-23  4:47           ` David S. Miller
  2004-08-23 17:56           ` Nuno Silva
  0 siblings, 2 replies; 10+ messages in thread
From: Patrick McHardy @ 2004-08-22 12:39 UTC (permalink / raw)
  To: David S. Miller; +Cc: Herbert Xu, Nuno Silva, linux-kernel, master, netdev

[-- Attachment #1: Type: text/plain, Size: 712 bytes --]

Herbert Xu wrote:

>Nuno Silva <nuno.silva@vgertech.com> wrote:
>  
>
>>The problem is in the QoS code. If I start ppp whithout the 
>>    
>>
>
>OK, this appears to be due to the changeset titled
>
>[PKT_SCHED]: Refcount qdisc->dev for __qdisc_destroy rcu-callback
>
>It adds a reference to dev.
>
>I don't see any code that cleans up that reference when the dev goes
>down.  So someone needs to add that similar to the code in net/core/dst.c.
>
>Patrick, could you please have a look at this?
>  
>
The reference is dropped in __qdisc_destroy. The problem lies in the CBQ
qdisc, it doesn't destroy the root-class and leaks the inner qdisc. These
two patches for 2.4 and 2.6 fix the problem.

Regards
Patrick



[-- Attachment #2: 01-2.4-cbq-leaks.diff --]
[-- Type: text/x-patch, Size: 1438 bytes --]

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/08/22 14:37:58+02:00 kaber@coreworks.de 
#   [PKT_SCHED]: Fix class leak in CBQ scheduler
#   
#   Signed-off-by: Patrick McHardy <kaber@trash.net>
# 
# net/sched/sch_cbq.c
#   2004/08/22 14:37:27+02:00 kaber@coreworks.de +8 -6
#   [PKT_SCHED]: Fix class leak in CBQ scheduler
# 
diff -Nru a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
--- a/net/sched/sch_cbq.c	2004-08-22 14:38:18 +02:00
+++ b/net/sched/sch_cbq.c	2004-08-22 14:38:18 +02:00
@@ -1712,15 +1712,18 @@
 	}
 }
 
-static void cbq_destroy_class(struct cbq_class *cl)
+static void cbq_destroy_class(struct Qdisc *sch, struct cbq_class *cl)
 {
+	struct cbq_sched_data *q = (struct cbq_sched_data *)sch->data;
+
 	cbq_destroy_filters(cl);
 	qdisc_destroy(cl->q);
 	qdisc_put_rtab(cl->R_tab);
 #ifdef CONFIG_NET_ESTIMATOR
 	qdisc_kill_estimator(&cl->stats);
 #endif
-	kfree(cl);
+	if (cl != &q->link)
+		kfree(cl);
 }
 
 static void
@@ -1743,8 +1746,7 @@
 
 		for (cl = q->classes[h]; cl; cl = next) {
 			next = cl->next;
-			if (cl != &q->link)
-				cbq_destroy_class(cl);
+			cbq_destroy_class(sch, cl);
 		}
 	}
 
@@ -1766,7 +1768,7 @@
 		spin_unlock_bh(&sch->dev->queue_lock);
 #endif
 
-		cbq_destroy_class(cl);
+		cbq_destroy_class(sch, cl);
 	}
 }
 
@@ -2000,7 +2002,7 @@
 	sch_tree_unlock(sch);
 
 	if (--cl->refcnt == 0)
-		cbq_destroy_class(cl);
+		cbq_destroy_class(sch, cl);
 
 	return 0;
 }

[-- Attachment #3: 01-2.6-cbq-leaks.diff --]
[-- Type: text/x-patch, Size: 1419 bytes --]

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/08/22 14:30:32+02:00 kaber@coreworks.de 
#   [PKT_SCHED]: Fix class leak in CBQ scheduler
#   
#   Signed-off-by: Patrick McHardy <kaber@trash.net>
# 
# net/sched/sch_cbq.c
#   2004/08/22 14:30:13+02:00 kaber@coreworks.de +8 -6
#   [PKT_SCHED]: Fix class leak in CBQ scheduler
# 
diff -Nru a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
--- a/net/sched/sch_cbq.c	2004-08-22 14:33:59 +02:00
+++ b/net/sched/sch_cbq.c	2004-08-22 14:33:59 +02:00
@@ -1746,15 +1746,18 @@
 	}
 }
 
-static void cbq_destroy_class(struct cbq_class *cl)
+static void cbq_destroy_class(struct Qdisc *sch, struct cbq_class *cl)
 {
+	struct cbq_sched_data *q = qdisc_priv(sch);
+
 	cbq_destroy_filters(cl);
 	qdisc_destroy(cl->q);
 	qdisc_put_rtab(cl->R_tab);
 #ifdef CONFIG_NET_ESTIMATOR
 	qdisc_kill_estimator(&cl->stats);
 #endif
-	kfree(cl);
+	if (cl != &q->link)
+		kfree(cl);
 }
 
 static void
@@ -1777,8 +1780,7 @@
 
 		for (cl = q->classes[h]; cl; cl = next) {
 			next = cl->next;
-			if (cl != &q->link)
-				cbq_destroy_class(cl);
+			cbq_destroy_class(sch, cl);
 		}
 	}
 
@@ -1799,7 +1801,7 @@
 		spin_unlock_bh(&sch->dev->queue_lock);
 #endif
 
-		cbq_destroy_class(cl);
+		cbq_destroy_class(sch, cl);
 	}
 }
 
@@ -2035,7 +2037,7 @@
 	sch_tree_unlock(sch);
 
 	if (--cl->refcnt == 0)
-		cbq_destroy_class(cl);
+		cbq_destroy_class(sch, cl);
 
 	return 0;
 }

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-22 12:39         ` Patrick McHardy
@ 2004-08-23  4:47           ` David S. Miller
  2004-08-26 16:46             ` Jurriaan
  2004-08-23 17:56           ` Nuno Silva
  1 sibling, 1 reply; 10+ messages in thread
From: David S. Miller @ 2004-08-23  4:47 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: herbert, nuno.silva, linux-kernel, master, netdev

On Sun, 22 Aug 2004 14:39:57 +0200
Patrick McHardy <kaber@trash.net> wrote:

> Herbert Xu wrote:
> 
> >Nuno Silva <nuno.silva@vgertech.com> wrote:
> >  
> >
> >>The problem is in the QoS code. If I start ppp whithout the 
> >>    
> >>
> >
> >OK, this appears to be due to the changeset titled
> >
> >[PKT_SCHED]: Refcount qdisc->dev for __qdisc_destroy rcu-callback
> >
> >It adds a reference to dev.
> >
> >I don't see any code that cleans up that reference when the dev goes
> >down.  So someone needs to add that similar to the code in net/core/dst.c.
> >
> >Patrick, could you please have a look at this?
> >  
> The reference is dropped in __qdisc_destroy. The problem lies in the CBQ
> qdisc, it doesn't destroy the root-class and leaks the inner qdisc. These
> two patches for 2.4 and 2.6 fix the problem.

Awesome, good detective work guys.

Patch applied, thanks.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-22 12:39         ` Patrick McHardy
  2004-08-23  4:47           ` David S. Miller
@ 2004-08-23 17:56           ` Nuno Silva
  1 sibling, 0 replies; 10+ messages in thread
From: Nuno Silva @ 2004-08-23 17:56 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: David S. Miller, Herbert Xu, linux-kernel, master, netdev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Patrick McHardy wrote:
| Herbert Xu wrote:
|
|> Nuno Silva <nuno.silva@vgertech.com> wrote:
|>
|>
|>> The problem is in the QoS code. If I start ppp whithout the
|>
|>
|> OK, this appears to be due to the changeset titled
|>
|> [PKT_SCHED]: Refcount qdisc->dev for __qdisc_destroy rcu-callback
|>
|> It adds a reference to dev.
|>
|> I don't see any code that cleans up that reference when the dev goes
|> down.  So someone needs to add that similar to the code in
|> net/core/dst.c.
|>
|> Patrick, could you please have a look at this?
|>
|>
| The reference is dropped in __qdisc_destroy. The problem lies in the CBQ
| qdisc, it doesn't destroy the root-class and leaks the inner qdisc. These
| two patches for 2.4 and 2.6 fix the problem.

Hi!

Just to give some feedback: IT WORKS! Thanks!

Didn't try with 2.4, but it works very well with 2.6.8.1.
Thanks again,
Nuno Silva

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBKi/FOPig54MP17wRAiYBAJ41ZGzauhY6dDVtylWkLSD3V+vx9QCgteNF
21sEmv0wqP+9hdnXEc4DNBE=
=ByPY
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1
  2004-08-23  4:47           ` David S. Miller
@ 2004-08-26 16:46             ` Jurriaan
  0 siblings, 0 replies; 10+ messages in thread
From: Jurriaan @ 2004-08-26 16:46 UTC (permalink / raw)
  To: David S. Miller
  Cc: Patrick McHardy, herbert, nuno.silva, linux-kernel, master,
	netdev

From: David S. Miller <davem@redhat.com>
Date: Sun, Aug 22, 2004 at 09:47:46PM -0700
> On Sun, 22 Aug 2004 14:39:57 +0200
> Patrick McHardy <kaber@trash.net> wrote:
> 
> > Herbert Xu wrote:
> > 
> > >Nuno Silva <nuno.silva@vgertech.com> wrote:
> > >  
> > >OK, this appears to be due to the changeset titled
> > >
> > >[PKT_SCHED]: Refcount qdisc->dev for __qdisc_destroy rcu-callback
> > >
> > >It adds a reference to dev.
> > >
> > >I don't see any code that cleans up that reference when the dev goes
> > >down.  So someone needs to add that similar to the code in net/core/dst.c.
> > >
> > >Patrick, could you please have a look at this?
> > >  
> > The reference is dropped in __qdisc_destroy. The problem lies in the CBQ
> > qdisc, it doesn't destroy the root-class and leaks the inner qdisc. These
> > two patches for 2.4 and 2.6 fix the problem.
> 
> Awesome, good detective work guys.
> 
> Patch applied, thanks.

I get the same error with 2.6.9-rc1-mm1, but now for my ipv6-over-ipv4
tunnel.

unregister_netdevice: waiting for xs6all to become free

etc. when trying to reboot or shutdown. Usage count = 1

I'm pretty sure I didn't see this in 2.6.8.1 nor in 2.6.8.1-mm1.

This is a plain ipv6-over-ipv4 tunnel like this:

/etc/network/interfaces:
auto xs6all
iface xs6all inet6 v4tunnel
        endpoint xxx.xxx.xxx.xxx
        up ip route add 2000::0/3 via xxx:xxx:xxx:xxx:xxx:xxx
        address xxx:xxx:xxx:xxx:xxx:xxx
        netmask 64
        up ip tunnel change xs6all ttl 64

I'm running Debian Unstable with all the latest updates as of today.

Thanks for any hints,
Jurriaan
-- 
"At least she's on our side," said Lindholm.
Corbie looked at him. "Investigators aren't on anybody's side."
	Simon R Green - Hellworld
Debian (Unstable) GNU/Linux 2.6.9-rc1 2x6078 bogomips load 0.46

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2004-08-26 16:46 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <411BC284.6080807@vgertech.com>
2004-08-13  8:03 ` 2.6.8-rc4-bk1 problem: unregister_netdevice: waiting for ppp0 to become free. Usage count = 1 Vladimir B. Savkin
2004-08-13 20:35   ` Nuno Silva
2004-08-22  2:13     ` Nuno Silva
2004-08-22  5:25       ` David S. Miller
2004-08-22  8:02         ` Nuno Silva
2004-08-22  8:14       ` Herbert Xu
2004-08-22 12:39         ` Patrick McHardy
2004-08-23  4:47           ` David S. Miller
2004-08-26 16:46             ` Jurriaan
2004-08-23 17:56           ` Nuno Silva

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).