netdev
[Top] [All Lists]

Re: [PATCH 2.5.70] Tun device encapsulation

To: Stephen Hemminger <shemminger@xxxxxxxx>
Subject: Re: [PATCH 2.5.70] Tun device encapsulation
From: jjs <jjs@xxxxxxxxxx>
Date: Wed, 04 Jun 2003 15:46:44 -0700
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxxxxxxxx>, "David S. Miller" <davem@xxxxxxxxxx>, Jeff Garzik <jgarzik@xxxxxxxxx>, akpm@xxxxxxxxx, netdev@xxxxxxxxxxx
References: <20030604115236.309a173d.akpm@xxxxxxxxx> <20030604212528.GA24515@xxxxxxxxxxxxxxxx> <20030604154022.0ef344ff.shemminger@xxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02
I'll be happy to test it out later -

Thanks,

Joe

Stephen Hemminger wrote:

Tun device was encapsulating the net_device in a private structure then doing:
        unregister_netdev(&tun->dev);
        kfree(tun);
        rtnl_unlock();

This breaks with the delayed cleanup now in the network core.
Moving the kfree outside of the rtnl_unlock will fix it.

Builds, but not sure how to use TUN to test it.

As part of later refcounting changes, I do have a more complex change
that uses the same encapsulation as ethernet and other
devices.  Will save it for later.

diff -Nru a/drivers/net/tun.c b/drivers/net/tun.c
--- a/drivers/net/tun.c Wed Jun  4 15:38:44 2003
+++ b/drivers/net/tun.c Wed Jun  4 15:38:44 2003
@@ -551,10 +551,12 @@
        if (!(tun->flags & TUN_PERSIST)) {
                dev_close(&tun->dev);
                unregister_netdevice(&tun->dev);
-               kfree(tun);
        }

        rtnl_unlock();
+
+ if (!(tun->flags & TUN_PERSIST)) + kfree(tun);
        return 0;
}





<Prev in Thread] Current Thread [Next in Thread>