[...]
quoted
So its at least possible I think these could be interleaved on multiple
cpus.
Sure, this was very clear when I wrote this code. Otherwise I would have
used an intermediate object and one rcu_dereference() instead of the
READ_ONCE().
quoted
Notice that some of the actions are fine though and don't have this
issue act_bpf for example is fine.
I think we can either fix it in the hash table create part of the
list as this series does or just let each action handle it on its own.
If we want a fix for stable kernels we want a tc_mirred fix on its own,
and I was planning to do so.
Given that a "tc qdisc replace ..." drops all packets sitting in the old
qdisc, I never thought someone would actually depend on atomically
switching tc_mirred parameters. I for sure did not care.
Thanks.
Agreed not sure why you would ever want to do a late binding and
replace on a tc_mirred actions. But it is supported...