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

[xen staging] common: map_vcpu_info() wants to unshare the underlying page



commit 48980cf24d5cf41fd644600f99c753419505e735
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Fri Oct 28 11:38:32 2022 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Oct 28 11:38:32 2022 +0200

    common: map_vcpu_info() wants to unshare the underlying page
    
    Not passing P2M_UNSHARE to get_page_from_gfn() means there won't even be
    an attempt to unshare the referenced page, without any indication to the
    caller (e.g. -EAGAIN). Note that guests have no direct control over
    which of their pages are shared (or paged out), and hence they have no
    way to make sure all on their own that the subsequent obtaining of a
    writable type reference can actually succeed.
    
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    Acked-by: Julien Grall <jgrall@xxxxxxxxxx>
    Release-acked-by: Henry Wang <Henry.Wang@xxxxxxx>
---
 xen/common/domain.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 8dd6cd5a8f..53f7e734fe 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1484,7 +1484,7 @@ int map_vcpu_info(struct vcpu *v, unsigned long gfn, 
unsigned int offset)
     if ( (v != current) && !(v->pause_flags & VPF_down) )
         return -EINVAL;
 
-    page = get_page_from_gfn(d, gfn, NULL, P2M_ALLOC);
+    page = get_page_from_gfn(d, gfn, NULL, P2M_UNSHARE);
     if ( !page )
         return -EINVAL;
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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