[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v1 7/8]: PVH privcmd changes



On Fri, 5 Oct 2012 10:21:18 +0100
Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:

> On Thu, 2012-10-04 at 19:20 +0100, Mukesh Rathor wrote:
> > On Thu, 4 Oct 2012 09:50:42 +0100
> > Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> > 
> > > 
> > > Won't that break because on the second call you will pass in the
> > > freshly allocated pointer and overwrite the exiting (useful) one
> > > with it?
> > 
> > No, for xlate, I just check for NULL. I didn't think it was big 
> > deal to special case xlate in this case. We got so many if xlate 
> > cases already thru the code. It leaves the semantics easy to 
> > understand: NULL == avail. 1 == locked PV. PTR == Locked PVH. I'll
> > add a comment this time :).
> 
> The transition from NULL => Locked PVH still needs to be done
> atomically and without clobbering any existing non-NULL value,
> otherwise it doesn't actually protect against multiple mappings like
> it is supposed to.


Ok, changed it to, and tested it:

static int privcmd_enforce_singleshot_mapping(struct vm_area_struct *vma)
{
        if (xen_feature(XENFEAT_auto_translated_physmap)) {
                int sz = sizeof(vma->vm_private_data);
                return (!__cmpxchg(&vma->vm_private_data, NULL, NULL, sz));
        }
        return (xchg(&vma->vm_private_data, (void *)1) == NULL);
}

Then in pvh_privcmd_resv_pfns():

        BUG_ON(vma->vm_private_data);
        vma->vm_private_data = pvhp;


Mukesh


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.