public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: Denys Fedoryshchenko <denys@visp.net.lb>
Cc: netdev@vger.kernel.org
Subject: Re: CBQ(but probably u32 filter bug), kernel "freeze", at least from 3.2.0
Date: Thu, 06 Sep 2012 10:40:06 +0200	[thread overview]
Message-ID: <1346920806.13121.180.camel@edumazet-glaptop> (raw)
In-Reply-To: <1346151568.3001.20.camel@edumazet-glaptop>

On Tue, 2012-08-28 at 03:59 -0700, Eric Dumazet wrote:
> On Tue, 2012-08-28 at 07:50 +0300, Denys Fedoryshchenko wrote:
> > Hi
> > 
> > Got information from friend, confirmed that it crashed at least two my 
> > boxes also :)
> > 3.0.5-rc1 is working fine, 3.4.1 , 3.2.0 from ubuntu  - crashing
> > No watchdog fired, and didn't got yet significant debugging 
> > information.
> > 
> > Very easy to reproduce:
> > 1)run the script
> > 2)ping 192.168.3.234
> > 
> > script:
> > DEV_OUT=eth0
> > ICMP="match ip protocol 1 0xff"
> > U32="protocol ip u32"
> > DST="match ip dst"
> > tc qdisc add dev $DEV_OUT root handle 1: cbq avpkt 1000 bandwidth 
> > 100mbit
> > tc class add dev $DEV_OUT parent 1: classid 1:1 cbq rate 512kbit allot 
> > 1500 prio 5 bounded isolated
> > tc filter add dev $DEV_OUT parent 1:              prio 3 $U32 $ICMP 
> > $DST 192.168.3.234 flowid 1:
> > tc qdisc add dev $DEV_OUT parent 1:1 sfq perturb 10
> 
> Not sure what your friend expected from this buggy configuration.
> 
> It probably never worked at all.
> 
> CBQ needs at least one child class and one leaf class.
> 
> This scripts creates a loop inside CBQ, so cpu is probably looping in
> cbq_enqueue() (or more exactly cbq_classify()), as instructed by the
> sysadmin ;)
> 
> u32 (or sfq) seems ok.
> 
> Could you try the following patch ?
> 
> Thanks !
> 
> diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
> index 6aabd77..564b9fc 100644
> --- a/net/sched/sch_cbq.c
> +++ b/net/sched/sch_cbq.c
> @@ -250,10 +250,11 @@ cbq_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr)
>  			else if ((cl = defmap[res.classid & TC_PRIO_MAX]) == NULL)
>  				cl = defmap[TC_PRIO_BESTEFFORT];
>  
> -			if (cl == NULL || cl->level >= head->level)
> +			if (cl == NULL)
>  				goto fallback;
>  		}
> -
> +		if (cl->level >= head->level)
> +			goto fallback;
>  #ifdef CONFIG_NET_CLS_ACT
>  		switch (result) {
>  		case TC_ACT_QUEUED:
> 

Hi Denys

Any feedback on the suggested patch ?

Thanks !

  reply	other threads:[~2012-09-06  8:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-28  4:50 CBQ(but probably u32 filter bug), kernel "freeze", at least from 3.2.0 Denys Fedoryshchenko
2012-08-28 10:59 ` Eric Dumazet
2012-09-06  8:40   ` Eric Dumazet [this message]
2012-09-06 13:47     ` Denys Fedoryshchenko
2012-09-06 13:56       ` Eric Dumazet
  -- strict thread matches above, loose matches on Subject: below --
2012-09-11 22:50 Denys Fedoryshchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1346920806.13121.180.camel@edumazet-glaptop \
    --to=eric.dumazet@gmail.com \
    --cc=denys@visp.net.lb \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox