summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/sys_compat.c
diff options
context:
space:
mode:
authorRobin Murphy <robin.murphy@arm.com>2018-02-19 13:38:00 +0000
committerCatalin Marinas <catalin.marinas@arm.com>2018-02-19 13:59:58 +0000
commit9085b34d0e8361595a7d19034c550d5d15044556 (patch)
tree1c93d515a8c65e8ce5f8a2afd46c8adc5832a226 /arch/arm64/kernel/sys_compat.c
parent04c4927359b1f09310bfee92e7187c9022be3e00 (diff)
downloadlinux-9085b34d0e8361595a7d19034c550d5d15044556.tar.bz2
arm64: uaccess: Formalise types for access_ok()
In converting __range_ok() into a static inline, I inadvertently made it more type-safe, but without considering the ordering of the relevant conversions. This leads to quite a lot of Sparse noise about the fact that we use __chk_user_ptr() after addr has already been converted from a user pointer to an unsigned long. Rather than just adding another cast for the sake of shutting Sparse up, it seems reasonable to rework the types to make logical sense (although the resulting codegen for __range_ok() remains identical). The only callers this affects directly are our compat traps where the inferred "user-pointer-ness" of a register value now warrants explicit casting. Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64/kernel/sys_compat.c')
-rw-r--r--arch/arm64/kernel/sys_compat.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/kernel/sys_compat.c b/arch/arm64/kernel/sys_compat.c
index 8b8bbd3eaa52..a382b2a1b84e 100644
--- a/arch/arm64/kernel/sys_compat.c
+++ b/arch/arm64/kernel/sys_compat.c
@@ -57,7 +57,7 @@ do_compat_cache_op(unsigned long start, unsigned long end, int flags)
if (end < start || flags)
return -EINVAL;
- if (!access_ok(VERIFY_READ, start, end - start))
+ if (!access_ok(VERIFY_READ, (const void __user *)start, end - start))
return -EFAULT;
return __do_compat_cache_op(start, end);