2000-10-28 03:35:46

by Steve Clark

[permalink] [raw]
Subject: RTNL assert

When I configure in Tunneling I get the following error message. Is this
normal? This with 2.4test9pre5

GRE over IPv4 tunneling driver
RTNL: assertion failed at devinet.c(775):inetdev_event


2000-10-28 10:53:13

by Andrew Morton

[permalink] [raw]
Subject: Re: RTNL assert

"Stephen E. Clark" wrote:
>
> When I configure in Tunneling I get the following error message. Is this
> normal? This with 2.4test9pre5
>
> GRE over IPv4 tunneling driver
> RTNL: assertion failed at devinet.c(775):inetdev_event

The rtnetlink lock needs to be taken around
register_netdevice(). There should be a function
which does these three common steps, but there isn't.


--- linux-2.4.0-test10-pre5/net/ipv4/ip_gre.c Sat Sep 9 16:19:30 2000
+++ linux-akpm/net/ipv4/ip_gre.c Sat Oct 28 21:44:23 2000
@@ -1266,7 +1266,9 @@
#ifdef MODULE
register_netdev(&ipgre_fb_tunnel_dev);
#else
+ rtnl_lock();
register_netdevice(&ipgre_fb_tunnel_dev);
+ rtnl_unlock();
#endif

inet_add_protocol(&ipgre_protocol);

2000-10-28 14:15:18

by Steve Clark

[permalink] [raw]
Subject: Re: RTNL assert

Andrew Morton wrote:
>
> "Stephen E. Clark" wrote:
> >
> > When I configure in Tunneling I get the following error message. Is this
> > normal? This with 2.4test9pre5
> >
> > GRE over IPv4 tunneling driver
> > RTNL: assertion failed at devinet.c(775):inetdev_event
>
> The rtnetlink lock needs to be taken around
> register_netdevice(). There should be a function
> which does these three common steps, but there isn't.
>
> --- linux-2.4.0-test10-pre5/net/ipv4/ip_gre.c Sat Sep 9 16:19:30 2000
> +++ linux-akpm/net/ipv4/ip_gre.c Sat Oct 28 21:44:23 2000
> @@ -1266,7 +1266,9 @@
> #ifdef MODULE
> register_netdev(&ipgre_fb_tunnel_dev);
> #else
> + rtnl_lock();
> register_netdevice(&ipgre_fb_tunnel_dev);
> + rtnl_unlock();
> #endif
>
> inet_add_protocol(&ipgre_protocol);
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> Please read the FAQ at http://www.tux.org/lkml/

Thanks Andrew,

I also get the same error if I try to configure in normal IPV4
tunneling. I guess it needs the same kind of patch.

Oct 27 14:46:59 joker kernel: IPv4 over IPv4 tunneling driver
Oct 27 14:46:59 joker kernel: RTNL: assertion failed at
devinet.c(775):inetdev_event
Oct 27 14:46:59 joker kernel: GRE over IPv4 tunneling driver
Oct 27 14:46:59 joker kernel: RTNL: assertion failed at
devinet.c(775):inetdev_event

Steve

2000-10-28 16:19:12

by Andrew Morton

[permalink] [raw]
Subject: Re: RTNL assert

"Stephen E. Clark" wrote:
>
> I also get the same error if I try to configure in normal IPV4
> tunneling. I guess it needs the same kind of patch.

Yep.

--- linux-2.4.0-test10-pre5/net/ipv4/ipip.c Sat Sep 9 16:19:30 2000
+++ linux-akpm/net/ipv4/ipip.c Sun Oct 29 03:17:38 2000
@@ -894,7 +894,9 @@
#ifdef MODULE
register_netdev(&ipip_fb_tunnel_dev);
#else
+ rtnl_lock();
register_netdevice(&ipip_fb_tunnel_dev);
+ rtnl_unlock();
#endif

inet_add_protocol(&ipip_protocol);

2000-10-28 17:20:19

by David Miller

[permalink] [raw]
Subject: Re: RTNL assert


There is even one more Andrew :-) Here is the full patch:

--- ./net/ipv4/ip_gre.c.~1~ Thu Aug 24 18:48:54 2000
+++ ./net/ipv4/ip_gre.c Sat Oct 28 09:59:43 2000
@@ -1266,7 +1266,9 @@
#ifdef MODULE
register_netdev(&ipgre_fb_tunnel_dev);
#else
+ rtnl_lock();
register_netdevice(&ipgre_fb_tunnel_dev);
+ rtnl_unlock();
#endif

inet_add_protocol(&ipgre_protocol);
--- ./net/ipv4/ipip.c.~1~ Thu Aug 24 19:15:47 2000
+++ ./net/ipv4/ipip.c Sat Oct 28 10:00:04 2000
@@ -894,7 +894,9 @@
#ifdef MODULE
register_netdev(&ipip_fb_tunnel_dev);
#else
+ rtnl_lock();
register_netdevice(&ipip_fb_tunnel_dev);
+ rtnl_unlock();
#endif

inet_add_protocol(&ipip_protocol);
--- ./net/ipv6/sit.c.~1~ Mon Oct 9 21:36:50 2000
+++ ./net/ipv6/sit.c Sat Oct 28 10:00:50 2000
@@ -829,7 +829,9 @@
#ifdef MODULE
register_netdev(&ipip6_fb_tunnel_dev);
#else
+ rtnl_lock();
register_netdevice(&ipip6_fb_tunnel_dev);
+ rtnl_unlock();
#endif
inet_add_protocol(&sit_protocol);
return 0;

2000-10-30 15:12:43

by David Woodhouse

[permalink] [raw]
Subject: Re: RTNL assert

On Sat, 28 Oct 2000, Andrew Morton wrote:

> The rtnetlink lock needs to be taken around
> register_netdevice(). There should be a function
> which does these three common steps, but there isn't.

I thought the only difference between register_netdev() and
register_netdevice() was that one took the rtnl_lock and the other didn't?

But it's been a while since I played with networking code.

--
dwmw2


2000-10-30 16:44:53

by Jeff Garzik

[permalink] [raw]
Subject: Re: RTNL assert

David Woodhouse wrote:
>
> On Sat, 28 Oct 2000, Andrew Morton wrote:
>
> > The rtnetlink lock needs to be taken around
> > register_netdevice(). There should be a function
> > which does these three common steps, but there isn't.
>
> I thought the only difference between register_netdev() and
> register_netdevice() was that one took the rtnl_lock and the other didn't?

And, register_netdev allocates a name for you if necessary...

--
Jeff Garzik | "Mind if I drive?" -Sam
Building 1024 | "Not if you don't mind me clawing at the
MandrakeSoft | dash and shrieking like a cheerleader."
| -Max