From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [PATCH net-next V3] tun: add eBPF based queue selection method Date: Fri, 8 Dec 2017 10:25:19 +0800 Message-ID: References: <1512379883-11887-1-git-send-email-jasowang@redhat.com> <1512684709.25033.18.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: mst@redhat.com, willemdebruijn.kernel@gmail.com, tom@herbertland.com, aconole@redhat.com, wexu@redhat.com To: Eric Dumazet , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Return-path: In-Reply-To: <1512684709.25033.18.camel@gmail.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On 2017年12月08日 06:11, Eric Dumazet wrote: > On Mon, 2017-12-04 at 17:31 +0800, Jason Wang wrote: >> This patch introduces an eBPF based queue selection method. With >> this, >> the policy could be offloaded to userspace completely through a new >> ioctl TUNSETSTEERINGEBPF. > Sorry for the delay, I see this patch was merged already. > > ... > >>  static void tun_free_netdev(struct net_device *dev) >>  { >>   struct tun_struct *tun = netdev_priv(dev); >> @@ -1996,6 +2068,9 @@ static void tun_free_netdev(struct net_device >> *dev) >>   free_percpu(tun->pcpu_stats); >>   tun_flow_uninit(tun); >>   security_tun_dev_free_security(tun->security); >> + rtnl_lock(); >> + __tun_set_steering_ebpf(tun, NULL); >> + rtnl_unlock(); >>  } > I am pretty sure tun_free_netdev() (aka ->priv_destructor()) can be > called under RTNL (say from register_netdevice()) > > So this will dead lock badly ? > > Unfortunately yes. Will switch to use spinlock (tun->lock) to synchronize here. Thanks