On Thu, May 11, 2017 at 9:55 PM, Eric Dumazet <eric.duma...@gmail.com> wrote: > On Thu, 2017-05-11 at 18:22 -0700, Cong Wang wrote: >> On Thu, May 11, 2017 at 5:07 PM, Cong Wang <xiyou.wangc...@gmail.com> wrote: >> > So, if I understand you correctly it is safe to NULL'ing >> > nh_dev in NETDEV_UNREGISTER_FINAL, right? >> > >> > If still not, how about transfer nh_dev's to loopback_dev >> > too in NETDEV_UNREGISTER? Like we transfer dst->dev. >> > >> > I don't want to touch the fast path to check for NULL, as >> > it will change more code and slow down performance. >> >> Finally I come up with the attached patch. Please let me know if >> I still miss anything. > > You have not addressed my prior feedback, unless I am mistaken ? > > fib_route_seq_show() and others do not expect fi->fib_dev suddenly > becoming NULL. > > RCU contract is more complicated than simply adding rcu grace period > before delete. >
If you mean the lack of rcu_dereference() in fib_route_seq_show() , yeah, I don't fix it because I think it should be in a separate patch, it is not this patch which introduces RCU to nh_dev as I explained previously. Or you mean anything else?