* [PATCH net-next 0/3] Refactorings on af_inet pernet initialization
@ 2018-09-20 9:11 Kirill Tkhai
2018-09-20 9:11 ` [PATCH 1/3] net: Remove inet_exit_net() Kirill Tkhai
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Kirill Tkhai @ 2018-09-20 9:11 UTC (permalink / raw)
To: davem, xiyou.wangcong, yoshfuji, ktkhai, avagin, edumazet,
ebiederm, netdev
This patch set makes several cleanups around inet_init_net().
---
Cong Wang (1):
ipv4: initialize ra_mutex in inet_init_net()
Kirill Tkhai (2):
net: Remove inet_exit_net()
net: Register af_inet_ops earlier
net/core/net_namespace.c | 1 -
net/ipv4/af_inet.c | 13 +++++--------
2 files changed, 5 insertions(+), 9 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] net: Remove inet_exit_net()
2018-09-20 9:11 [PATCH net-next 0/3] Refactorings on af_inet pernet initialization Kirill Tkhai
@ 2018-09-20 9:11 ` Kirill Tkhai
2018-09-20 9:12 ` [PATCH 2/3] net: Register af_inet_ops earlier Kirill Tkhai
2018-09-20 9:12 ` [PATCH 3/3] ipv4: initialize ra_mutex in inet_init_net() Kirill Tkhai
2 siblings, 0 replies; 6+ messages in thread
From: Kirill Tkhai @ 2018-09-20 9:11 UTC (permalink / raw)
To: davem, xiyou.wangcong, yoshfuji, ktkhai, avagin, edumazet,
ebiederm, netdev
This function does nothing, and since ops_exit_list()
checks for NULL ->exit method, we do not need stub here.
Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
net/ipv4/af_inet.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 1fbe2f815474..f4ecbe0aaf1a 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1821,13 +1821,8 @@ static __net_init int inet_init_net(struct net *net)
return 0;
}
-static __net_exit void inet_exit_net(struct net *net)
-{
-}
-
static __net_initdata struct pernet_operations af_inet_ops = {
.init = inet_init_net,
- .exit = inet_exit_net,
};
static int __init init_inet_pernet_ops(void)
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] net: Register af_inet_ops earlier
2018-09-20 9:11 [PATCH net-next 0/3] Refactorings on af_inet pernet initialization Kirill Tkhai
2018-09-20 9:11 ` [PATCH 1/3] net: Remove inet_exit_net() Kirill Tkhai
@ 2018-09-20 9:12 ` Kirill Tkhai
2018-09-20 17:03 ` Cong Wang
2018-09-20 9:12 ` [PATCH 3/3] ipv4: initialize ra_mutex in inet_init_net() Kirill Tkhai
2 siblings, 1 reply; 6+ messages in thread
From: Kirill Tkhai @ 2018-09-20 9:12 UTC (permalink / raw)
To: davem, xiyou.wangcong, yoshfuji, ktkhai, avagin, edumazet,
ebiederm, netdev
This function just initializes locks and defaults.
Let register it before other pernet operation,
since some of them potentially may relay on that.
Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
net/ipv4/af_inet.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index f4ecbe0aaf1a..bbd3a072ffea 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1938,6 +1938,9 @@ static int __init inet_init(void)
for (q = inetsw_array; q < &inetsw_array[INETSW_ARRAY_LEN]; ++q)
inet_register_protosw(q);
+ if (init_inet_pernet_ops())
+ pr_crit("%s: Cannot init ipv4 inet pernet ops\n", __func__);
+
/*
* Set the ARP module up
*/
@@ -1975,9 +1978,6 @@ static int __init inet_init(void)
if (ip_mr_init())
pr_crit("%s: Cannot init ipv4 mroute\n", __func__);
#endif
-
- if (init_inet_pernet_ops())
- pr_crit("%s: Cannot init ipv4 inet pernet ops\n", __func__);
/*
* Initialise per-cpu ipv4 mibs
*/
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] ipv4: initialize ra_mutex in inet_init_net()
2018-09-20 9:11 [PATCH net-next 0/3] Refactorings on af_inet pernet initialization Kirill Tkhai
2018-09-20 9:11 ` [PATCH 1/3] net: Remove inet_exit_net() Kirill Tkhai
2018-09-20 9:12 ` [PATCH 2/3] net: Register af_inet_ops earlier Kirill Tkhai
@ 2018-09-20 9:12 ` Kirill Tkhai
2018-09-20 17:01 ` Cong Wang
2 siblings, 1 reply; 6+ messages in thread
From: Kirill Tkhai @ 2018-09-20 9:12 UTC (permalink / raw)
To: davem, xiyou.wangcong, yoshfuji, ktkhai, avagin, edumazet,
ebiederm, netdev
From: Cong Wang <xiyou.wangcong@gmail.com>
ra_mutex is a IPv4 specific mutex, it is inside struct netns_ipv4,
but its initialization is in the generic netns code, setup_net().
Move it to IPv4 specific net init code, inet_init_net().
Fixes: d9ff3049739e ("net: Replace ip_ra_lock with per-net mutex")
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
net/core/net_namespace.c | 1 -
net/ipv4/af_inet.c | 2 ++
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 670c84b1bfc2..b272ccfcbf63 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -308,7 +308,6 @@ static __net_init int setup_net(struct net *net, struct user_namespace *user_ns)
net->user_ns = user_ns;
idr_init(&net->netns_ids);
spin_lock_init(&net->nsid_lock);
- mutex_init(&net->ipv4.ra_mutex);
list_for_each_entry(ops, &pernet_list, list) {
error = ops_init(ops, net);
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index bbd3a072ffea..d4623144e237 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1818,6 +1818,8 @@ static __net_init int inet_init_net(struct net *net)
net->ipv4.sysctl_igmp_llm_reports = 1;
net->ipv4.sysctl_igmp_qrv = 2;
+ mutex_init(&net->ipv4.ra_mutex);
+
return 0;
}
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] ipv4: initialize ra_mutex in inet_init_net()
2018-09-20 9:12 ` [PATCH 3/3] ipv4: initialize ra_mutex in inet_init_net() Kirill Tkhai
@ 2018-09-20 17:01 ` Cong Wang
0 siblings, 0 replies; 6+ messages in thread
From: Cong Wang @ 2018-09-20 17:01 UTC (permalink / raw)
To: Kirill Tkhai
Cc: David Miller, Hideaki YOSHIFUJI, avagin, Eric Dumazet,
Eric W. Biederman, Linux Kernel Network Developers
On Thu, Sep 20, 2018 at 2:12 AM Kirill Tkhai <ktkhai@virtuozzo.com> wrote:
>
> From: Cong Wang <xiyou.wangcong@gmail.com>
>
> ra_mutex is a IPv4 specific mutex, it is inside struct netns_ipv4,
> but its initialization is in the generic netns code, setup_net().
>
> Move it to IPv4 specific net init code, inet_init_net().
>
> Fixes: d9ff3049739e ("net: Replace ip_ra_lock with per-net mutex")
> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
> Acked-by: Kirill Tkhai <ktkhai@virtuozzo.com>
I regret for wasting my time on this, so:
Nacked-by: Cong Wang <xiyou.wangcong@gmail.com>
Let's just leave the current code as it is.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] net: Register af_inet_ops earlier
2018-09-20 9:12 ` [PATCH 2/3] net: Register af_inet_ops earlier Kirill Tkhai
@ 2018-09-20 17:03 ` Cong Wang
0 siblings, 0 replies; 6+ messages in thread
From: Cong Wang @ 2018-09-20 17:03 UTC (permalink / raw)
To: Kirill Tkhai
Cc: David Miller, Hideaki YOSHIFUJI, avagin, Eric Dumazet,
Eric W. Biederman, Linux Kernel Network Developers
On Thu, Sep 20, 2018 at 2:12 AM Kirill Tkhai <ktkhai@virtuozzo.com> wrote:
>
> This function just initializes locks and defaults.
> Let register it before other pernet operation,
> since some of them potentially may relay on that.
>
> Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
It adds no benefits but potential risks on error path
ordering, it is never late to bring this up again when any
future change needs it, until that:
Nacked-by: Cong Wang <xiyou.wangcong@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-09-20 22:48 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-20 9:11 [PATCH net-next 0/3] Refactorings on af_inet pernet initialization Kirill Tkhai
2018-09-20 9:11 ` [PATCH 1/3] net: Remove inet_exit_net() Kirill Tkhai
2018-09-20 9:12 ` [PATCH 2/3] net: Register af_inet_ops earlier Kirill Tkhai
2018-09-20 17:03 ` Cong Wang
2018-09-20 9:12 ` [PATCH 3/3] ipv4: initialize ra_mutex in inet_init_net() Kirill Tkhai
2018-09-20 17:01 ` Cong Wang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.