On Wed, Jun 19, 2019 at 2:10 PM Davide Caratti <dcara...@redhat.com> wrote:
>
> on some CPUs (e.g. i686), tcf_walker.cookie has the same size as the IDR.
> In this situation, the following script:
>
>  # tc filter add dev eth0 ingress handle 0xffffffff flower action ok
>  # tc filter show dev eth0 ingress
>
> results in an infinite loop. It happened also on other CPUs (e.g x86_64),
> before commit 061775583e35 ("net: sched: flower: introduce reference
> counting for filters"), because 'handle' + 1 made the u32 overflow before
> it was assigned to 'cookie'; but that commit replaced the assignment with
> a self-increment of 'cookie', so the problem was indirectly fixed.

Interesting... Is this really specific to cls_flower? To me it looks like
a bug of idr_*_ul() API's, especially for idr_for_each_entry_ul().

Can you test if the following command has the same problem on i386?

tc actions add action ok index 4294967295

It is hard for me to find a 32bit CPU.


Thanks.

Reply via email to