Messages in this thread | | | Date | Wed, 4 Nov 2009 14:15:33 +0100 | From | Andi Kleen <> | Subject | Re: [PATCHv7 3/3] vhost_net: a kernel-level virtio server |
| |
On Wed, Nov 04, 2009 at 03:08:28PM +0200, Michael S. Tsirkin wrote: > On Wed, Nov 04, 2009 at 01:59:57PM +0100, Andi Kleen wrote: > > > Fine? > > > > I cannot say -- are there paths that could drop the device beforehand? > > Do you mean drop the mm reference?
No the reference to the device, which owns the mm for you.
> > > (as in do you hold a reference to it?) > > By design I think I always have a reference to mm before I use it. > > This works like this: > ioctl SET_OWNER - calls get_task_mm, I think this gets a reference to mm > ioctl SET_BACKEND - checks that SET_OWNER was run, starts virtqueue > ioctl RESET_OWNER - stops virtqueues, drops the reference to mm > file close - stops virtqueues, if we still have it then drops mm > > This is why I think I can call use_mm/unuse_mm while virtqueue is running, > safely. > Makes sense?
Do you protect against another thread doing RESET_OWNER in parallel while RESET_OWNER runs?
-Andi
-- ak@linux.intel.com -- Speaking for myself only.
| |