From: Eric Dumazet <eric.dumazet@gmail.com>
To: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Luca Tettamanti <kronos.it@gmail.com>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
David Miller <davem@davemloft.net>
Subject: [PATCH] xfrm: Change initializations order in ipsec_pfkey_init()
Date: Fri, 29 Jan 2010 17:33:26 +0100 [thread overview]
Message-ID: <1264782806.3184.42.camel@edumazet-laptop> (raw)
In-Reply-To: <1264778549.3184.28.camel@edumazet-laptop>
Le vendredi 29 janvier 2010 à 16:22 +0100, Eric Dumazet a écrit :
> Le vendredi 29 janvier 2010 à 12:17 +0200, Alexey Dobriyan a écrit :
> > On Fri, Jan 29, 2010 at 11:48 AM, Luca Tettamanti <kronos.it@gmail.com> wrote:
> > > with recent kernels I'm seeing this BUG - triggered by racoon - at boot:
> > >
> > > NET: Registered protocol family 15
> > > ------------[ cut here ]------------
> > > kernel BUG at /home/kronos/src/linux-2.6.git/include/net/netns/generic.h:43!
> > > invalid opcode: 0000 [#1] PREEMPT SMP
> > > last sysfs file: /sys/kernel/uevent_seqnum
> > > CPU 1
> > > Pid: 1941, comm: racoon Not tainted 2.6.33-rc5-00271-gbe8cde8-dirty #238 F3Sa /F3Sa
> > > RIP: 0010:[<ffffffffa03035be>] [<ffffffffa03035be>] pfkey_create+0x36/0x18b [af_key]
> >
> > Does it triggers after succesfull boot if you do
> >
> > rmmod af_key; modprobe af_key
> >
> > a couple of times?
> >
> > Post .config, just in case.
>
> I am looking at ipsec_pfkey_init()
>
> We call sock_register(&pfkey_family_ops) before pfkey_net_id being
> initialized (by the call to register_pernet_subsys(&pfkey_net_ops);
>
> As soon as sock_register(&pfkey_family_ops) is done, another thread can
> open a socket and call pfkey_create() -> crash
>
> We should change order of initializations somehow
>
Something like this (compiled but not tested) patch ?
Should probably be sent to stable team...
[PATCH] xfrm: Change initializations order in ipsec_pfkey_init()
Before allowing other threads to create PF_KEY sockets, we must make
sure pfkey_net_id is properly initialized.
That means calling register_pernet_subsys(&pfkey_net_ops) before
sock_register(&pfkey_family_ops)
Reported-by: Luca Tettamanti <kronos.it@gmail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
---
net/key/af_key.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 76fa6fe..e399ddf 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -3807,21 +3807,24 @@ static int __init ipsec_pfkey_init(void)
if (err != 0)
goto out;
- err = sock_register(&pfkey_family_ops);
- if (err != 0)
- goto out_unregister_key_proto;
err = xfrm_register_km(&pfkeyv2_mgr);
if (err != 0)
- goto out_sock_unregister;
+ goto out_unregister_key_proto;
+
err = register_pernet_subsys(&pfkey_net_ops);
if (err != 0)
goto out_xfrm_unregister_km;
+
+ err = sock_register(&pfkey_family_ops);
+ if (err != 0)
+ goto out_unregister_pernet;
out:
return err;
+
+out_unregister_pernet:
+ unregister_pernet_subsys(&pfkey_net_ops);
out_xfrm_unregister_km:
xfrm_unregister_km(&pfkeyv2_mgr);
-out_sock_unregister:
- sock_unregister(PF_KEY);
out_unregister_key_proto:
proto_unregister(&key_proto);
goto out;
next prev parent reply other threads:[~2010-01-29 16:33 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-29 9:48 [2.6.33-rc5] kernel BUG at include/net/netns/generic.h:41! Luca Tettamanti
2010-01-29 10:17 ` Alexey Dobriyan
2010-01-29 15:22 ` Eric Dumazet
2010-01-29 16:33 ` Eric Dumazet [this message]
2010-01-30 12:53 ` [PATCH] af_key: fix netns ops ordering on module load/unload Alexey Dobriyan
2010-02-01 13:50 ` Luca Tettamanti
2010-02-01 13:56 ` Eric Dumazet
2010-02-04 2:11 ` David Miller
2010-01-30 13:23 ` [2.6.33-rc5] kernel BUG at include/net/netns/generic.h:41! Luca Tettamanti
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=1264782806.3184.42.camel@edumazet-laptop \
--to=eric.dumazet@gmail.com \
--cc=adobriyan@gmail.com \
--cc=davem@davemloft.net \
--cc=kronos.it@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/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