From patchwork Tue Mar 31 08:57:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 228644 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A7FAC2D0EE for ; Tue, 31 Mar 2020 09:11:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3AAC7208E0 for ; Tue, 31 Mar 2020 09:11:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585645894; bh=/2QCD0+YgDM7AxEBlkjagHGL94R+lRcfpdpM227IqLA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=kEayxQwI72WCqPFHYDbxAXl8CFNA1h+LQMSmLDvxFfRWA4XOLd3z4tM6H6kFt4uQW cwGOgDUKVfeWJUDoaqLgfAzA9LjpScc66TKisBoZo8jomK2C9UCnmqpkIwAbdilVF4 Fb9Ql2Y35iHmMbWJD4UEG/wihGp1WEznD+51Kkww= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731441AbgCaJLa (ORCPT ); Tue, 31 Mar 2020 05:11:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:56426 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731706AbgCaJL3 (ORCPT ); Tue, 31 Mar 2020 05:11:29 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 71D4E20675; Tue, 31 Mar 2020 09:11:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585645888; bh=/2QCD0+YgDM7AxEBlkjagHGL94R+lRcfpdpM227IqLA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aMqDs56S9GD565UEESXy4SP6rVnLEkq2b9T4ZuDiTxKDe4CEwBej1mnmhQV1TUqFZ WSgdnon9DyAjEkIiiqcbzIEO0lw3Kz8gx/iAwGmTxK1pp4XrqEStI1/3FlW08B1iVy 5x3TRcUWa1QhGJlBHCysxb/gASWvVbX6fsvANCTo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Haishuang Yan , Florian Westphal , "David S. Miller" , syzbot+68a8ed58e3d17c700de5@syzkaller.appspotmail.com Subject: [PATCH 5.4 009/155] geneve: move debug check after netdev unregister Date: Tue, 31 Mar 2020 10:57:29 +0200 Message-Id: <20200331085419.423342022@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200331085418.274292403@linuxfoundation.org> References: <20200331085418.274292403@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Florian Westphal [ Upstream commit 0fda7600c2e174fe27e9cf02e78e345226e441fa ] The debug check must be done after unregister_netdevice_many() call -- the list_del() for this is done inside .ndo_stop. Fixes: 2843a25348f8 ("geneve: speedup geneve tunnels dismantle") Reported-and-tested-by: Cc: Haishuang Yan Signed-off-by: Florian Westphal Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/geneve.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -1845,8 +1845,6 @@ static void geneve_destroy_tunnels(struc if (!net_eq(dev_net(geneve->dev), net)) unregister_netdevice_queue(geneve->dev, head); } - - WARN_ON_ONCE(!list_empty(&gn->sock_list)); } static void __net_exit geneve_exit_batch_net(struct list_head *net_list) @@ -1861,6 +1859,12 @@ static void __net_exit geneve_exit_batch /* unregister the devices gathered above */ unregister_netdevice_many(&list); rtnl_unlock(); + + list_for_each_entry(net, net_list, exit_list) { + const struct geneve_net *gn = net_generic(net, geneve_net_id); + + WARN_ON_ONCE(!list_empty(&gn->sock_list)); + } } static struct pernet_operations geneve_net_ops = {