arm64: uaccess: simplify __copy_user_flushcache()
authorMark Rutland <mark.rutland@arm.com>
Wed, 2 Dec 2020 13:15:51 +0000 (13:15 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 2 Dec 2020 19:49:10 +0000 (19:49 +0000)
Currently __copy_user_flushcache() open-codes raw_copy_from_user(), and
doesn't use uaccess_mask_ptr() on the user address. Let's have it call
raw_copy_from_user(), which is both a simplification and ensures that
user pointers are masked under speculation.

There should be no functional change as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20201202131558.39270-6-mark.rutland@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/lib/uaccess_flushcache.c

index bfa30b7..c83bb5a 100644 (file)
@@ -30,9 +30,7 @@ unsigned long __copy_user_flushcache(void *to, const void __user *from,
 {
        unsigned long rc;
 
-       uaccess_enable_not_uao();
-       rc = __arch_copy_from_user(to, from, n);
-       uaccess_disable_not_uao();
+       rc = raw_copy_from_user(to, from, n);
 
        /* See above */
        __clean_dcache_area_pop(to, n - rc);