x86/mem_access: use __get_gfn_type_access in set_mem_access
authorTamas K Lengyel <tamas.lengyel@intel.com>
Wed, 29 Jan 2020 14:06:50 +0000 (15:06 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 29 Jan 2020 14:06:50 +0000 (15:06 +0100)
Use __get_gfn_type_access instead of p2m->get_entry to trigger page-forking
when the mem_access permission is being set on a page that has not yet been
copied over from the parent.

Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/mm/mem_access.c

index d16540a9aa751f1001d2743b40fcad120daec1ee..ede774fb50efe2d7b2a181954ce1b5ab5701ab03 100644 (file)
@@ -303,11 +303,10 @@ static int set_mem_access(struct domain *d, struct p2m_domain *p2m,
     ASSERT(!ap2m);
 #endif
     {
-        mfn_t mfn;
         p2m_access_t _a;
         p2m_type_t t;
-
-        mfn = p2m->get_entry(p2m, gfn, &t, &_a, 0, NULL, NULL);
+        mfn_t mfn = __get_gfn_type_access(p2m, gfn_x(gfn), &t, &_a,
+                                          P2M_ALLOC, NULL, false);
         rc = p2m->set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, t, a, -1);
     }