logo       

Re: Frozen machine with adding a tc filter: msg#00058

Subject: Re: Frozen machine with adding a tc filter
On Tue, Jul 23, 2002 at 12:46:44AM +0400, kuznet@xxxxxxxxxxxxx wrote:
> Hello!
> 
> > I know it's weird, but anyway i don't think that a lockup is the error the
> > user deserves =)
> 
> You really deserved this.

I also reported this - should tc check this? Or the kernel? I think each
qdisc implements its own filter hooks and rules, so tc may be a nice place
to do at least simple checking, although it cannot easily spot complicated
loops.

                if ((cl = (void*)res.class) == NULL) {
                        if (TC_H_MAJ(res.classid))
                                cl = cbq_class_lookup(q, res.classid); 
                        else if ((cl = defmap[res.classid&TC_PRIO_MAX]) == NULL
                                cl = defmap[TC_PRIO_BESTEFFORT];

                        if (cl == NULL || cl->level >= head->level)
                                goto fallback;
                }


Aren't the last 2 lines meant to prevent this from happening?
(net/sched/sch_cbq.c).

Please tell me your ideas, I hope to fix this. I know people who've had this
happen by accident and they really hate it.

Regards,

bert

-- 
http://www.PowerDNS.com          Versatile DNS Software & Services
http://www.tk                              the dot in .tk
http://lartc.org           Linux Advanced Routing & Traffic Control HOWTO




<Prev in Thread] Current Thread [Next in Thread>