]> xenbits.xensource.com Git - xen.git/commitdiff
arm/x86: change [modify,destroy]_xen_mappings to return error
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 22 Aug 2016 19:27:25 +0000 (15:27 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 16 Sep 2016 15:32:42 +0000 (11:32 -0400)
The implementation on x86 always returns zero, but
other platforms may return error values.

Reviewed-by: Julien Grall <julien.grall@arm.com> [arm bits]
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> [x86 bits]
Suggested-by: Julien Grall <julien.grall@arm.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
xen/arch/arm/mm.c
xen/arch/x86/livepatch.c
xen/arch/x86/mm.c
xen/include/xen/mm.h

index 4e256c289a23c04e4ed4379491502446f626afa4..7ae9f6369a3bd366da3a701b3571cbf6146fe687 100644 (file)
@@ -917,9 +917,9 @@ int populate_pt_range(unsigned long virt, unsigned long mfn,
     return create_xen_entries(RESERVE, virt, mfn, nr_mfns, 0);
 }
 
-void destroy_xen_mappings(unsigned long v, unsigned long e)
+int destroy_xen_mappings(unsigned long v, unsigned long e)
 {
-    create_xen_entries(REMOVE, v, 0, (e - v) >> PAGE_SHIFT, 0);
+    return create_xen_entries(REMOVE, v, 0, (e - v) >> PAGE_SHIFT, 0);
 }
 
 enum mg { mg_clear, mg_ro, mg_rw, mg_rx };
index 725b3f636db0e2a5b355153dc3fb80b8c1257c94..56da1545f2f53f949fea7c8372985221dfbd3b84 100644 (file)
@@ -212,9 +212,7 @@ int arch_livepatch_secure(const void *va, unsigned int pages, enum va_type type)
     else
         flag = PAGE_HYPERVISOR_RO;
 
-    modify_xen_mappings(start, start + pages * PAGE_SIZE, flag);
-
-    return 0;
+    return modify_xen_mappings(start, start + pages * PAGE_SIZE, flag);
 }
 
 void __init arch_livepatch_init(void)
index b9debcca0b8b53318267db9d1c5ce9ad744233f8..eddf098fe6d6a5a312a50a77fa8690cf5d704559 100644 (file)
@@ -5976,7 +5976,7 @@ int populate_pt_range(unsigned long virt, unsigned long mfn,
  *
  * It is an error to call with present flags over an unpopulated range.
  */
-void modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
+int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
 {
     bool_t locking = system_state > SYS_STATE_boot;
     l2_pgentry_t *pl2e;
@@ -6151,13 +6151,14 @@ void modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
     flush_area(NULL, FLUSH_TLB_GLOBAL);
 
 #undef FLAGS_MASK
+    return 0;
 }
 
 #undef flush_area
 
-void destroy_xen_mappings(unsigned long s, unsigned long e)
+int destroy_xen_mappings(unsigned long s, unsigned long e)
 {
-    modify_xen_mappings(s, e, _PAGE_NONE);
+    return modify_xen_mappings(s, e, _PAGE_NONE);
 }
 
 void __set_fixmap(
index 58bc0b86d02022e3274741dbd7c88994a849912b..f470e495f3698c4e99feaf643c61505b745ef81f 100644 (file)
@@ -146,8 +146,8 @@ int map_pages_to_xen(
     unsigned long nr_mfns,
     unsigned int flags);
 /* Alter the permissions of a range of Xen virtual address space. */
-void modify_xen_mappings(unsigned long s, unsigned long e, unsigned int flags);
-void destroy_xen_mappings(unsigned long v, unsigned long e);
+int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int flags);
+int destroy_xen_mappings(unsigned long v, unsigned long e);
 /*
  * Create only non-leaf page table entries for the
  * page range in Xen virtual address space.