On Wed, May 10, 2017 at 12:51 PM, Julian Anastasov <j...@ssi.bg> wrote: > Oh, well, the sockets can hold cached dst. > But if the promise is that rt->fi is used only as > reference to metrics we have to find a way to drop > the dev references at NETDEV_UNREGISTER time. If you > set nh_dev to NULL then all lookups should check it > for != NULL. The sockets will not walk NHs via rt->fi, > i.e. the route lookups will get valid res.fi from trees, > so it may work in this way. >
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. Thanks.