On Thu, Nov 30, 2017 at 3:12 PM, Eric Dumazet <eric.duma...@gmail.com> wrote: > On Thu, 2017-11-30 at 14:53 -0800, Cong Wang wrote: >> @@ -55,13 +54,10 @@ static void tcf_mirred_release(struct tc_action >> *a, int bind) >> struct tcf_mirred *m = to_mirred(a); >> struct net_device *dev; >> >> - /* We could be called either in a RCU callback or with RTNL >> lock held. */ >> - spin_lock_bh(&mirred_list_lock); >> list_del(&m->tcfm_list); >> dev = rcu_dereference_protected(m->tcfm_dev, 1); > > If RTNL is held at this point, I suggest to use > rtnl_dereference() instead of rcu_dereference_protected() to get proper > lockdep coverage.
Ah, sure, I missed it. Will send v2 later.