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

Re: [Xen-devel] [V2 PATCH 7/8] pvh dom0: Add and remove foreign pages

On 11/25/2013 04:03 AM, Jan Beulich wrote:
On 23.11.13 at 01:03, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
+static int xenmem_add_foreign_to_pmap(unsigned long fgfn, unsigned long gpfn,
+                                      domid_t foreign_domid)
+    p2m_type_t p2mt, p2mt_prev;
+    int rc = 0;
+    unsigned long prev_mfn, mfn = 0;
+    struct domain *fdom, *currd = current->domain;
+    struct page_info *page = NULL;
+    if ( currd->domain_id == foreign_domid || foreign_domid == DOMID_SELF ||
+         !is_pvh_domain(currd) )
+        return -EINVAL;
+    if ( !is_control_domain(currd) ||
+         (fdom = get_pg_owner(foreign_domid)) == NULL )
+        return -EPERM;

Is this the right approach (i.e. shouldn't this be an XSM call)? Cc-ing

Yes, this should be an XSM call; it needs to explicitly check if currd
has the right to access pages from fdom.

For efficiency, rather than checking permissions here for each page,
check once in xenmem_add_to_physmap_range or next to the existing check
in arch_memory_op; in that case, combining the two checks into one as is
done for xsm_mmu_update may be preferred.  Moving the other EINVAL
checks in addition could also be useful, although that requires
duplicating them in xenmem_add_to_physmap.

Daniel De Graaf
National Security Agency

Xen-devel mailing list



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