From: Kirill Tkhai <ktkhai@virtuozzo.com>
To: Christian Brauner <christian.brauner@ubuntu.com>,
ebiederm@xmission.com, gregkh@linuxfoundation.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: serge@hallyn.com, avagin@virtuozzo.com
Subject: Re: [PATCH 1/2 v3] net: add uevent socket member
Date: Mon, 19 Mar 2018 14:53:09 +0300 [thread overview]
Message-ID: <e2f7c92b-e9ba-14fc-3ec4-7da78ca4fa4d@virtuozzo.com> (raw)
In-Reply-To: <20180317110826.1581-1-christian.brauner@ubuntu.com>
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 <christian.brauner@ubuntu.com>
> ---
> 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?
> }
>
> static struct pernet_operations uevent_net_ops = {
>
Kirill
next prev parent reply other threads:[~2018-03-19 11:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-17 11:08 [PATCH 1/2 v3] net: add uevent socket member Christian Brauner
2018-03-17 11:08 ` [PATCH 2/2 v3] netns: send uevent messages Christian Brauner
2018-03-19 11:53 ` Kirill Tkhai [this message]
2018-03-19 11:59 ` [PATCH 1/2 v3] net: add uevent socket member Christian Brauner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e2f7c92b-e9ba-14fc-3ec4-7da78ca4fa4d@virtuozzo.com \
--to=ktkhai@virtuozzo.com \
--cc=avagin@virtuozzo.com \
--cc=christian.brauner@ubuntu.com \
--cc=ebiederm@xmission.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=serge@hallyn.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox