Subject: Re: Possible bug in tc tool or kernel

From: Vadim Kochan <[email-masked]>
Date: Tue, 17 Mar 2015 23:21:32 +0200

On Tue, Mar 17, 2015 at 01:42:54PM -0700, Cong Wang wrote:
> On Tue, Mar 17, 2015 at 2:57 AM, Соловьев Сергей <[email-masked]> wrote:
> > Hi!
> >
> > I'm sol sorry, but English in not my native language.
> >
> > After upgrade kernel  tc lost some u32 filters
> >
> > example: where is a "match ip dst 10.10.0.0/24" entries?
> >
> 
> Can you check if the following commit fixes your problem?
> 
> It is already merged in stable kernel, you probably need to
> wait for a newer Fedora kernel release if it has included it.
> 
> commit b057df24a7536cce6c372efe9d0e3d1558afedf4
> Author: Ignacy Gawędzki <[email-masked]>
> Date:   Tue Feb 3 19:05:18 2015 +0100
> 
>     cls_api.c: Fix dumping of non-existing actions' stats.
> 
>     In tcf_exts_dump_stats(), ensure that exts->actions is not empty before
>     accessing the first element of that list and calling tcf_action_copy_stats()
>     on it.  This fixes some random segvs when adding filters of type
> "basic" with
>     no particular action.
> 
>     This also fixes the dumping of those "no-action" filters, which more often
>     than not made calls to tcf_action_copy_stats() fail and consequently netlink
>     attributes added by the caller to be removed by a call to nla_nest_cancel().
> 
>     Fixes: 33be62715991 ("net_sched: act: use standard struct list_head")
>     Signed-off-by: Ignacy Gawędzki <[email-masked]>
>     Acked-by: Cong Wang <[email-masked]>
>     Signed-off-by: David S. Miller <[email-masked]>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to [email-masked]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Hi,

I tested on:

	Linux 4.0.0-rc3-ARCH-00130-g4363890 #1 SMP PREEMPT Tue Mar 17 23:11:06 EET 2015 x86_64 GNU/Linux

and got this:

$ tc filter list dev lo
filter parent 1: protocol ip pref 10 u32 
filter parent 1: protocol ip pref 10 u32 fh 209: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 208: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 207: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 206: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 205: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 204: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 203: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 202: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 201: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 200: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 100: ht divisor 256 
filter parent 1: protocol ip pref 10 u32 fh 100::800 order 2048 key ht 100 bkt 0 link 200: 
  match 0a0a0000/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:1:800 order 2048 key ht 100 bkt 1 link 201: 
  match 0a0a0100/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:2:800 order 2048 key ht 100 bkt 2 link 202: 
  match 0a0a0200/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:3:800 order 2048 key ht 100 bkt 3 link 203: 
  match 0a0a0300/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:4:800 order 2048 key ht 100 bkt 4 link 204: 
  match 0a0a0400/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:5:800 order 2048 key ht 100 bkt 5 link 205: 
  match 0a0a0500/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:6:800 order 2048 key ht 100 bkt 6 link 206: 
  match 0a0a0600/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:7:800 order 2048 key ht 100 bkt 7 link 207: 
  match 0a0a0700/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:8:800 order 2048 key ht 100 bkt 8 link 208: 
  match 0a0a0800/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 100:9:800 order 2048 key ht 100 bkt 9 link 209: 
  match 0a0a0900/ffffff00 at 16
    hash mask 000000ff at 16 
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 100: 
  match 0a0a0000/ffff0000 at 16
    hash mask 0000ff00 at 16 

Regards,