Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> writes: > On Wed, Apr 15, 2009 at 07:06:10AM -0700, Eric W. Biederman wrote: >> >> There is the boring rmmod case that has always existed. >> >> There is more interesting case of moving your tap device >> into another network namespace. >> >> In which case there is the possibility of the network namespace >> exiting and destroying all of the virtual network devices before >> we close the file handle. > > In that case what's the problem with holding a refcount to the > unregistered device until the process owning the fd closes it? Network devices do not hold a network namespace alive. Only sockets and processes do. So holding the reference only blocks us indefinitely in netdev_wait_allrefs, blocking the network namespace exit, and holding net_mutex indefinitely. My gut feel is that the socket needs to live in tun_file. Instead of in tun_struct. Making that change looked just tricky enough I couldn't sort through it when I glanced at the tun code, after I noticed you had added a socket. Eric _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization