From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net] xfrm: reuse uncached_list to track xdsts Date: Thu, 15 Feb 2018 15:31:45 -0500 (EST) Message-ID: <20180215.153145.1910156754051522844.davem@davemloft.net> References: Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, steffen.klassert@secunet.com, fw@strlen.de, eyal.birger@gmail.com, herbert@gondor.apana.org.au, weiwan@google.com, shannon.nelson@oracle.com, shmulik@metanetworks.com To: lucien.xin@gmail.com Return-path: Received: from shards.monkeyblade.net ([184.105.139.130]:44552 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755775AbeBOUbt (ORCPT ); Thu, 15 Feb 2018 15:31:49 -0500 In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: From: Xin Long Date: Wed, 14 Feb 2018 19:06:02 +0800 > In early time, when freeing a xdst, it would be inserted into > dst_garbage.list first. Then if it's refcnt was still held > somewhere, later it would be put into dst_busy_list in > dst_gc_task(). > > When one dev was being unregistered, the dev of these dsts in > dst_busy_list would be set with loopback_dev and put this dev. > So that this dev's removal wouldn't get blocked, and avoid the > kmsg warning: > > kernel:unregister_netdevice: waiting for veth0 to become \ > free. Usage count = 2 > > However after Commit 52df157f17e5 ("xfrm: take refcnt of dst > when creating struct xfrm_dst bundle"), the xdst will not be > freed with dst gc, and this warning happens. > > To fix it, we need to find these xdsts that are still held by > others when removing the dev, and free xdst's dev and set it > with loopback_dev. > > But unfortunately after flow_cache for xfrm was deleted, no > list tracks them anymore. So we need to save these xdsts > somewhere to release the xdst's dev later. > > To make this easier, this patch is to reuse uncached_list to > track xdsts, so that the dev refcnt can be released in the > event NETDEV_UNREGISTER process of fib_netdev_notifier. > > Thanks to Florian, we could move forward this fix quickly. > > Fixes: 52df157f17e5 ("xfrm: take refcnt of dst when creating struct xfrm_dst bundle") > Reported-by: Jianlin Shi > Reported-by: Hangbin Liu > Tested-by: Eyal Birger > Signed-off-by: Xin Long Steffen, I assume you will take this via your ipsec tree? Thank you.