On Tue, 16 Apr 2019 17:20:47 +0300, Vlad Buslov wrote: > @@ -1551,6 +1558,10 @@ static int fl_change(struct net *net, struct sk_buff > *in_skb, > goto errout_mask; > > if (!tc_skip_hw(fnew->flags)) { > + spin_lock(&tp->lock); > + list_add(&fnew->hw_list, &head->hw_filters); > + spin_unlock(&tp->lock); > + > err = fl_hw_replace_filter(tp, fnew, rtnl_held, extack); > if (err) > goto errout_ht;
Duplicated deletes should be fine, but I'm not sure same is true for adds. Won't seeing an add with the same cookie twice confuse drivers? There's also the minor issue of offloaded count being off in that case :)