On Fri, 10 Dec 2004 13:44:45 +0100
Thomas Graf <tgraf@xxxxxxx> wrote:
> * Patrick McHardy <41B90B81.1020102@xxxxxxxxx> 2004-12-10 03:35
> > Thomas Graf wrote:
> >
> > >tcindex's destroy uses its own delete functions to destroy its
> > >configuration. The delete function (correctly) takes the qdisc_tree_lock
> > >to prevent list walkings from happening while removing from the list.
> > >The qdisc_tree_lock is already held if we're comming via the destroy
> > >path and thus a double locking takes place.
> > >
> > >Patch not needed for 2.4 since both destroy paths are unlocked but will
> > >be needed if we add them.
> > >
> > >
> > Looks correct, but 2.4 does need this. qdisc_destroy in 2.4 always
> > happens under dev->queue_lock. For example dev_shutdown from 2.4:
>
> Not 100% correct since cls_api.c drops the lock before calling
> tcf_destroy but the patch is indeed needed and it's not a problem
> if dev->queue_lock is not taken since it is already unlinked as you
> correctly stated in your previous mail. Thanks Patrick.
>
> Patch also applies to 2.4 with some fuzz.
>
> Signed-off-by: Thomas Graf <tgraf@xxxxxxx>
I think the conditional locking is quite ugly, but I can't
suggest something better at this time.
Patch applied to both 2.4.x and 2.6.x, thanks Patrick
and Thomas.
|