[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: privcmd: do not return pages which we have failed to unmap
On Wed, 4 Dec 2013, Ian Campbell wrote: > >From 900f1e903bacf376800b078aef03e8d5ff524562 Mon Sep 17 00:00:00 2001 > From: Ian Campbell <ian.campbell@xxxxxxxxxx> > Date: Wed, 4 Dec 2013 14:19:52 +0000 > Subject: [PATCH] xen: privcmd: do not return pages which we have failed to > unmap > > This failure represents a hypervisor issue, but if it does occur then nothing > good can come of returning pages which still refer to a foreign owned page > into the general allocation pool. > > Instead we are forced to leak them. Log that we have done so. > > The potential for failure only exists for autotranslated guest (e.g. ARM and > x86 PVH). > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > Cc: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> > Cc: David Vrabel <david.vrabel@xxxxxxxxxx> > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx > --- > v2: Don't leak the actual pages array as well > Log rc Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Konrad, you can go ahead and add it to xentip, unless you would rather have me do it. > drivers/xen/privcmd.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c > index 8e74590..569a13b 100644 > --- a/drivers/xen/privcmd.c > +++ b/drivers/xen/privcmd.c > @@ -533,12 +533,17 @@ static void privcmd_close(struct vm_area_struct *vma) > { > struct page **pages = vma->vm_private_data; > int numpgs = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; > + int rc; > > if (!xen_feature(XENFEAT_auto_translated_physmap) || !numpgs || !pages) > return; > > - xen_unmap_domain_mfn_range(vma, numpgs, pages); > - free_xenballooned_pages(numpgs, pages); > + rc = xen_unmap_domain_mfn_range(vma, numpgs, pages); > + if (rc == 0) > + free_xenballooned_pages(numpgs, pages); > + else > + pr_crit("unable to unmap MFN range: leaking %d pages. rc=%d\n", > + numpgs, rc); > kfree(pages); > } > > -- > 1.7.10.4 > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |