Message ID | 1339060346.26966.106.camel@edumazet-glaptop |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
It is not crashing anymore, after removing tunnel, i can unload module. Thanks. On 2012-06-07 12:12, Eric Dumazet wrote: > On Thu, 2012-06-07 at 11:31 +0300, Denys Fedoryshchenko wrote: >> Hi >> >> Sorry for weird looking message, but this is how i got it over >> netconsole >> >> If i have any tunnel+session configured and up and will do rmmod >> l2tp_eth, >> i will get panic, after my userspace program will fetch interfaces >> information (over netlink). >> >> Probably it should not rmmod if there is tunnels configured? > > Sure, can you try the following patch ? > > diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c > index 443591d..185f12f 100644 > --- a/net/l2tp/l2tp_eth.c > +++ b/net/l2tp/l2tp_eth.c > @@ -162,6 +162,7 @@ static void l2tp_eth_delete(struct l2tp_session > *session) > if (dev) { > unregister_netdev(dev); > spriv->dev = NULL; > + module_put(THIS_MODULE); > } > } > } > @@ -249,6 +250,7 @@ static int l2tp_eth_create(struct net *net, u32 > tunnel_id, u32 session_id, u32 p > if (rc < 0) > goto out_del_dev; > > + __module_get(THIS_MODULE); > /* Must be done after register_netdev() */ > strlcpy(session->ifname, dev->name, IFNAMSIZ); > > > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html --- Denys Fedoryshchenko, Network Engineer, Virtual ISP S.A.L. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c index 443591d..185f12f 100644 --- a/net/l2tp/l2tp_eth.c +++ b/net/l2tp/l2tp_eth.c @@ -162,6 +162,7 @@ static void l2tp_eth_delete(struct l2tp_session *session) if (dev) { unregister_netdev(dev); spriv->dev = NULL; + module_put(THIS_MODULE); } } } @@ -249,6 +250,7 @@ static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 p if (rc < 0) goto out_del_dev; + __module_get(THIS_MODULE); /* Must be done after register_netdev() */ strlcpy(session->ifname, dev->name, IFNAMSIZ);