[Lguest] [PATCH 4/5] lguest: use KVM hypercalls

Eric W. Biederman ebiederm at xmission.com
Thu Apr 16 00:18:44 EST 2009


Herbert Xu <herbert at gondor.apana.org.au> 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



More information about the Lguest mailing list