On Fri, Sep 22, 2017 at 11:03 AM, Willem de Bruijn <willemdebruijn.ker...@gmail.com> wrote: > On Fri, Sep 22, 2017 at 1:11 PM, Mahesh Bandewar (महेश बंडेवार) > <mahe...@google.com> wrote: >>> #ifdef CONFIG_TUN_VNET_CROSS_LE >>> static inline bool tun_legacy_is_little_endian(struct tun_struct *tun) >>> { >>> @@ -541,6 +604,11 @@ static void __tun_detach(struct tun_file *tfile, bool >>> clean) >>> >>> tun = rtnl_dereference(tfile->tun); >>> >>> + if (tun && clean) { >>> + tun_napi_disable(tun, tfile); >> are we missing synchronize_net() separating disable and del calls? > > That is not needed here. napi_disable has its own mechanism for waiting > until a napi struct is no longer run. netif_napi_del will call synchronize_net > if needed. Yes, that will do. Thanks.
> These two calls are made one after the other in quite a few drivers.