On Wed, Apr 15, 2009 at 07:18:44AM -0700, Eric W. Biederman wrote: > > So holding the reference only blocks us indefinitely in > netdev_wait_allrefs, blocking the network namespace exit, and holding > net_mutex indefinitely. OK that's a killer because process A in my previous scenario can kill the device itself and cause a dead-lock. So how about this? We replace the dev destructor with our own that doesn't immediately call free_netdev. We only call free_netdev once all tun fd's attached to the device have been closed. This can be achieved by simply adding a counter to tun_struct. We'd also change the async detach path to set a marker instead of detaching. That marker can then be checked in places like tun_get. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization