Received: by 10.213.65.68 with SMTP id h4csp1463970imn; Mon, 19 Mar 2018 05:03:11 -0700 (PDT) X-Google-Smtp-Source: AG47ELsvvRHPHuJtisL90flnBDZE5OaY8ljrxR2c4zpcCi6GE2j+5P35cTTNc2kS0S3tpv0mZnXR X-Received: by 10.101.93.82 with SMTP id e18mr8864378pgt.371.1521460991806; Mon, 19 Mar 2018 05:03:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521460991; cv=none; d=google.com; s=arc-20160816; b=feQ3yYyWu3eDTqq6R42pDObVql3d/uk3uSm/8QsDosmCKKIymT1MB0p8eTP21/suZG Zzq7Mwkif/fscIIARESy1+Efx14UotMvmQdNuNMESVFWLSExggaxhAwAqWLOtDcHcSPp R6u7SjKTtxrIhr3AQJ4f7xm7Es2JP40hiQfrXKu+41yHMPVQmhl7e+4PBNklHNCV1iAw dRzL3rx42+DBDNbpZRjqaKfgRyMUxCkzvQ5sVRe0TSAsJ9GWuPWhVegyPlXCYlYE9l7X 6SzA41HW9Q81VYZbPaNkbnRsO88bDwRWetNyC2mvY6+r9H193zCX/2P7Klq5Uie0573O bQaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=oD6GA6I8QRsyDNCa2GkiNffF71MPc83qO3w3wo5Bad4=; b=tKZ5BWa1u2NiPlu7Y0nKRQxmvo0/5R8QClKECObO/cIePlVCwx7efVvw+oljmzetPx CVE/Th3UbPJvsL1bIlI/0PApT03AmuZ8+CBuQClTW3gvTE8zcF7mifpKzm71YR98LcaC wGR2FBMWSPtG/4EeYo7ecZvpFDYXODDKFhPWwyVZuRsVojPAyzbsRKOwJdZNwxnIC10Z 3gmwcwtBMLhSX+6qHgv49El+kznoLdTeW5uS31L23tPsBuWaQF+M+Nxt6QrAm6bYjdOG FB6gYDx7ZP9wX6DpDslvVHOKkUMtdx5nbIY34m3QcTP9y/cQG6XbX6CcvRD5Xit4tCKT rs+g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n10si9277389pgp.343.2018.03.19.05.02.49; Mon, 19 Mar 2018 05:03:11 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932731AbeCSL7r (ORCPT + 99 others); Mon, 19 Mar 2018 07:59:47 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:57978 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932277AbeCSL7p (ORCPT ); Mon, 19 Mar 2018 07:59:45 -0400 Received: from mail-wm0-f69.google.com ([74.125.82.69]) by youngberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1extS4-0004m0-1C for linux-kernel@vger.kernel.org; Mon, 19 Mar 2018 11:59:44 +0000 Received: by mail-wm0-f69.google.com with SMTP id p14so3505595wmc.0 for ; Mon, 19 Mar 2018 04:59:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=oD6GA6I8QRsyDNCa2GkiNffF71MPc83qO3w3wo5Bad4=; b=DF6Y9rj1NKeBl6t2bSnstNuXW4kXzd26ckmnNJg+rxf9hW7Su8AIuHb3N59Qr1z0I/ zdM8xZqK4eKOLKH+g31UQNbFOYJtdxcYPuEzEQmwe8ywzIzFF3bELHFMA9spxImBDd5N yiMmCrkbAUubeDMgxob2rERT25Ceobge6OZjuaMvre7wG0baAmrQMzWvLAMDF+fDWNzh FgbQvceJZMdQ1HNqRWpmOniMLWYTmP7IHF2wuhXFoI5XEgESOi2nKHk0Gh52zb1T68GX JClKIgfsDq6ic8ze4HZL0kgYiKzHuPAEZj2egfp7WfptcRWmBYqNEX1eWDGvn4KA7FxC NdkQ== X-Gm-Message-State: AElRT7HGq3T8+oRJJJoCo2pKovYIaT3oU7DCVBmUXDv+/v3W8Hn6gwpD oMoZVP+xinXerYNX32532PytgsScV8RBRNCJSXbnimYvqvCKO3DyRaq8lTrlXdUvjI4py3fGqgp /1GgtIhaoi0CFHrEnc/TJaJh2J5bQz66e70jczwPMAw== X-Received: by 10.28.241.20 with SMTP id p20mr1217141wmh.62.1521460783685; Mon, 19 Mar 2018 04:59:43 -0700 (PDT) X-Received: by 10.28.241.20 with SMTP id p20mr1217124wmh.62.1521460783464; Mon, 19 Mar 2018 04:59:43 -0700 (PDT) Received: from gmail.com (u-087-c108.eap.uni-tuebingen.de. [134.2.87.108]) by smtp.gmail.com with ESMTPSA id j126sm223130wmb.33.2018.03.19.04.59.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 19 Mar 2018 04:59:42 -0700 (PDT) Date: Mon, 19 Mar 2018 12:59:42 +0100 From: Christian Brauner To: Kirill Tkhai Cc: Christian Brauner , ebiederm@xmission.com, gregkh@linuxfoundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, serge@hallyn.com, avagin@virtuozzo.com Subject: Re: [PATCH 1/2 v3] net: add uevent socket member Message-ID: <20180319115941.GA7257@gmail.com> References: <20180317110826.1581-1-christian.brauner@ubuntu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 19, 2018 at 02:53:09PM +0300, Kirill Tkhai wrote: > Thanks for doing this. One small comment below. > > On 17.03.2018 14:08, Christian Brauner wrote: > > This commit adds struct uevent_sock to struct net. Since struct uevent_sock > > records the position of the uevent socket in the uevent socket list we can > > trivially remove it from the uevent socket list during cleanup. This speeds > > up the old removal codepath. > > Note, list_del() will hit __list_del_entry_valid() in its call chain which > > will validate that the element is a member of the list. If it isn't it will > > take care that the list is not modified. > > > > Signed-off-by: Christian Brauner > > --- > > Changelog v2->v3: > > * patch added > > This patch was split out of the follow up patch > > Subject: [PATCH 2/2 v3] netns: send uevent messages > > > > Changelog v1->v2: > > * patch not present > > > > Changelog v0->v1: > > * patch not present > > --- > > include/net/net_namespace.h | 4 +++- > > lib/kobject_uevent.c | 19 +++++++++---------- > > 2 files changed, 12 insertions(+), 11 deletions(-) > > > > diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h > > index f306b2aa15a4..abd7d91bffac 100644 > > --- a/include/net/net_namespace.h > > +++ b/include/net/net_namespace.h > > @@ -40,7 +40,7 @@ struct net_device; > > struct sock; > > struct ctl_table_header; > > struct net_generic; > > -struct sock; > > +struct uevent_sock; > > struct netns_ipvs; > > > > > > @@ -79,6 +79,8 @@ struct net { > > struct sock *rtnl; /* rtnetlink socket */ > > struct sock *genl_sock; > > > > + struct uevent_sock *uevent_sock; /* uevent socket */ > > + > > struct list_head dev_base_head; > > struct hlist_head *dev_name_head; > > struct hlist_head *dev_index_head; > > diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c > > index 9fe6ec8fda28..cbdc60542cab 100644 > > --- a/lib/kobject_uevent.c > > +++ b/lib/kobject_uevent.c > > @@ -32,11 +32,13 @@ u64 uevent_seqnum; > > #ifdef CONFIG_UEVENT_HELPER > > char uevent_helper[UEVENT_HELPER_PATH_LEN] = CONFIG_UEVENT_HELPER_PATH; > > #endif > > -#ifdef CONFIG_NET > > + > > struct uevent_sock { > > struct list_head list; > > struct sock *sk; > > }; > > + > > +#ifdef CONFIG_NET > > static LIST_HEAD(uevent_sock_list); > > #endif > > > > @@ -621,6 +623,9 @@ static int uevent_net_init(struct net *net) > > kfree(ue_sk); > > return -ENODEV; > > } > > + > > + net->uevent_sock = ue_sk; > > + > > mutex_lock(&uevent_sock_mutex); > > list_add_tail(&ue_sk->list, &uevent_sock_list); > > mutex_unlock(&uevent_sock_mutex); > > @@ -629,22 +634,16 @@ static int uevent_net_init(struct net *net) > > > > static void uevent_net_exit(struct net *net) > > { > > - struct uevent_sock *ue_sk; > > + struct uevent_sock *ue_sk = net->uevent_sock; > > > > mutex_lock(&uevent_sock_mutex); > > - list_for_each_entry(ue_sk, &uevent_sock_list, list) { > > - if (sock_net(ue_sk->sk) == net) > > - goto found; > > - } > > - mutex_unlock(&uevent_sock_mutex); > > - return; > > - > > -found: > > list_del(&ue_sk->list); > > mutex_unlock(&uevent_sock_mutex); > > > > netlink_kernel_release(ue_sk->sk); > > kfree(ue_sk); > > + > > + return; > > There is end of function. Doesn't return is excess here? Yeah, I can remove it and resend it now. Christian > > > } > > > > static struct pernet_operations uevent_net_ops = { > > > > Kirill