]> www.infradead.org Git - users/willy/xarray.git/commitdiff
arm64: mm: purge lazily unmapped vm regions before changing permissions
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Wed, 7 Nov 2018 10:36:19 +0000 (11:36 +0100)
committerWill Deacon <will.deacon@arm.com>
Tue, 20 Nov 2018 11:38:26 +0000 (11:38 +0000)
Call vm_unmap_aliases() every time we apply any changes to permission
attributes of mappings in the vmalloc region. This avoids any potential
issues resulting from lingering writable or executable aliases of
mappings that should be read-only or non-executable, respectively.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/mm/pageattr.c

index a56359373d8b3592e6cde6891d9b44206bd96137..787f9e385e6daa24a796a79978565d384bc89473 100644 (file)
@@ -93,6 +93,12 @@ static int change_memory_common(unsigned long addr, int numpages,
        if (!numpages)
                return 0;
 
+       /*
+        * Get rid of potentially aliasing lazily unmapped vm areas that may
+        * have permissions set that deviate from the ones we are setting here.
+        */
+       vm_unmap_aliases();
+
        return __change_memory_common(start, size, set_mask, clear_mask);
 }