xen/arm: mm: Check start is always before end in {destroy, modify}_xen_mappings
authorJulien Grall <julien.grall@arm.com>
Wed, 3 Apr 2019 10:14:10 +0000 (11:14 +0100)
committerJulien Grall <julien.grall@arm.com>
Thu, 6 Jun 2019 17:44:33 +0000 (18:44 +0100)
The two helpers {destroy, modify}_xen_mappings don't check that the
start is always before the end. This should never happen but if it
happens, it will result to unexpected behavior.

Catch such issues earlier on by adding an ASSERT in destroy_xen_mappings
and modify_xen_mappings.

Signed-off-by: Julien Grall <julien.grall@arm.com>
Reviewed-by: Andrii Anisov <andrii_anisov@epam.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
xen/arch/arm/mm.c

index 2ad12da5d1c3f309dbd7517622dc978b14af5e32..6a549e928378a5869d6ec0ef589a7e60ec556411 100644 (file)
@@ -1039,11 +1039,13 @@ int populate_pt_range(unsigned long virt, unsigned long nr_mfns)
 
 int destroy_xen_mappings(unsigned long v, unsigned long e)
 {
+    ASSERT(v <= e);
     return create_xen_entries(REMOVE, v, INVALID_MFN, (e - v) >> PAGE_SHIFT, 0);
 }
 
 int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int flags)
 {
+    ASSERT(s <= e);
     return create_xen_entries(MODIFY, s, INVALID_MFN, (e - s) >> PAGE_SHIFT,
                               flags);
 }