[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 03/18] arm/x86: change [modify, destroy]_xen_mappings to return error
The implementation on x86 always returns zero, but other platforms may return error values. Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Suggested-by: Julien Grall <julien.grall@xxxxxxx> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx> Cc: Julien Grall <julien.grall@xxxxxxx> Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> v2: First submission v3: Add destroy_xen_mappings per Andrew's request. Add Andrew's Reviewed-by. --- xen/arch/arm/mm.c | 4 ++-- xen/arch/x86/livepatch.c | 4 +--- xen/arch/x86/mm.c | 7 ++++--- xen/include/xen/mm.h | 4 ++-- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c index 4e256c2..7ae9f63 100644 --- a/xen/arch/arm/mm.c +++ b/xen/arch/arm/mm.c @@ -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 }; diff --git a/xen/arch/x86/livepatch.c b/xen/arch/x86/livepatch.c index 2f54d7b..c4d4b4d 100644 --- a/xen/arch/x86/livepatch.c +++ b/xen/arch/x86/livepatch.c @@ -224,9 +224,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) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index b9debcc..eddf098 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -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( diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h index 58bc0b8..f470e49 100644 --- a/xen/include/xen/mm.h +++ b/xen/include/xen/mm.h @@ -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. -- 2.4.11 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |