From patchwork Thu Mar 30 18:28:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 745380 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3vvCn54n04z9s1h; Fri, 31 Mar 2017 05:28:25 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical-com.20150623.gappssmtp.com header.i=@canonical-com.20150623.gappssmtp.com header.b="cTTn0wOZ"; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1ctenv-0002j2-Jf; Thu, 30 Mar 2017 18:28:15 +0000 Received: from mail-io0-f169.google.com ([209.85.223.169]) by huckleberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1ctenq-0002il-Hb for kernel-team@lists.ubuntu.com; Thu, 30 Mar 2017 18:28:10 +0000 Received: by mail-io0-f169.google.com with SMTP id z13so25237942iof.2 for ; Thu, 30 Mar 2017 11:28:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=Pz0GOtYeg3H1O25HxJPnQeregoObKQTlWnw4m/vqL+k=; b=cTTn0wOZsNW3+aH8nXd1linjA+t5GkZexocjUXPo+z59k48xNV/kYSFNU9cbIGRT5K VlzJe4FcfrK62cDQsM8jS4qR6kZAvY7dA9PDdHTrkh/u76nZUBV5eSfwYL3BwDnnROD0 dbsvMqB65XHvLWijbRBWzz+vPHXhXTMKTKL61TH3kMTehbDJldMKXhDOsq1K2h8gJjgE ajJ0oIbMHTb3QBI1xHGvFQbJCQjYaF+NzCRdDO5vZo+3Lle6vLjV3mamAZTnBHstmJ0w wGyMN/9e+z9Msmj0KCxsnmDeERpimjLnNl78avtKO/sGE21dFQWv+AEbdpf4E8zgPlks MMVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=Pz0GOtYeg3H1O25HxJPnQeregoObKQTlWnw4m/vqL+k=; b=WE3cAHomCIva4PDksvuMVDQyShqG6+4MQpAjSStTxcT1vE4AbyxDTwubWlqWG8dXZc Lffba82H54fF/EXMo2I1AztaQ/N8cA0qnPk56m0/4Ime1XqGPQEH7xa/zzmNBjW9pG7m RlCDflu3VtAfFc2cZpy55tNJh4TArV5dnerO1rnGJm/oTOQWNgF8d9v/fqs3Shzrs9XY 8U/2Gvvlx5DMV38KZ68nWMDinbAsDWdK38hp1ZBrykL0GgQZNq3mbneX7QlnW2zSXxWd 1sLuBAXfg4YmXW4YttQXEYxcBCgcLlwB8m9DbfuKAOE2dRFNE+nxvC2O0lyUTckH1rD9 S2xA== X-Gm-Message-State: AFeK/H1obpjeA1WoiWpq4IdPozU3WnAi+EoDDEeQgCD2iBfDo8XVRazNnXZbysTPXeTscGRs X-Received: by 10.107.59.146 with SMTP id i140mr2176197ioa.100.1490898489076; Thu, 30 Mar 2017 11:28:09 -0700 (PDT) Received: from localhost.localdomain (host-98-127-250-84.bln-mt.client.bresnan.net. [98.127.250.84]) by smtp.gmail.com with ESMTPSA id 123sm1787015iow.28.2017.03.30.11.28.08 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 30 Mar 2017 11:28:08 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH Yakkety SRU] net: use net->count to check whether a netns is alive or not Date: Thu, 30 Mar 2017 12:28:04 -0600 Message-Id: <1490898484-30787-1-git-send-email-tim.gardner@canonical.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Andrey Vagin BugLink: http://bugs.launchpad.net/bugs/1672144 The previous idea was to check whether a net namespace is in net_exit_list or not. It doesn't work, because net->exit_list is used in __register_pernet_operations and __unregister_pernet_operations where all namespaces are added to a temporary list to make cleanup in a error case, so list_empty(&net->exit_list) always returns false. Reported-by: Mantas Mikulėnas Fixes: 002d8a1a6c11 ("net: skip genenerating uevents for network namespaces that are exiting") Signed-off-by: Andrei Vagin Signed-off-by: David S. Miller (cherry picked from commit 91864f5852f9996210fad400cf70fb85af091243) Signed-off-by: Tim Gardner Conflicts: net/core/net-sysfs.c --- net/core/net-sysfs.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 6e4f347..dabd94c 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -950,6 +950,10 @@ net_rx_queue_update_kobjects(struct net_device *dev, int old_num, int new_num) } while (--i >= new_num) { + struct kobject *kobj = &dev->_rx[i].kobj; + + if (!atomic_read(&dev_net(dev)->count)) + kobj->uevent_suppress = 1; if (dev->sysfs_rx_queue_group) sysfs_remove_group(&dev->_rx[i].kobj, dev->sysfs_rx_queue_group); @@ -1340,6 +1344,8 @@ netdev_queue_update_kobjects(struct net_device *dev, int old_num, int new_num) while (--i >= new_num) { struct netdev_queue *queue = dev->_tx + i; + if (!atomic_read(&dev_net(dev)->count)) + queue->kobj.uevent_suppress = 1; #ifdef CONFIG_BQL sysfs_remove_group(&queue->kobj, &dql_group); #endif @@ -1525,6 +1531,9 @@ void netdev_unregister_kobject(struct net_device *ndev) { struct device *dev = &(ndev->dev); + if (!atomic_read(&dev_net(ndev)->count)) + dev_set_uevent_suppress(dev, 1); + kobject_get(&dev->kobj); remove_queue_kobjects(ndev);