Subject: Re: [PATCH] PKT_SCHED: Initialize list field in dummy qdiscs

From: Patrick McHardy <[email-masked]>
Date: Sat, 06 Nov 2004 02:47:44 +0100

Thomas Graf wrote:

>I think I've found the problem and it sounds to banal to be true.
>qdisc_destroy uses list_del when it used to use a manual list
>management which would not interfer any list walkers.
>
Nice work, I was really beginning to wonder. There's not that
much that touches qdisc_list :)

> the list
>walkers are not protected on UP systems, that's why it was
>impossible to trigger it for me with SMP enabled. So a qdisc_list
>walker such as qdisc_lookup could have its next pointer overwritten
>with LIST_POISON1 while walking if qdisc_destroy is called in between?
>It sounds so right but on the other hand all the callers except
>dev_shutdown should be serialized with any of the list walkers by the
>rtnl sempaphore.
>
The __qdisc_destroy rcu-callback is called in softirq context, when
destroying a classful qdisc the qdisc destroy function might call
qdisc_destroy again for an inner class.

>I guess I'm missing that little bit of experience but it would
>help to use _rcu list variantes, would it?
>
Yes. Are you going to send a patch ?

Regards
Patrick