Message ID | 20190301130106.4121-1-ben.dooks@codethink.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | exec: add __user case in get_user_arg_ptr() | expand |
diff --git a/fs/exec.c b/fs/exec.c index fb72d36f7823..19fa6f082db9 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -406,14 +406,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr) compat_uptr_t compat; if (get_user(compat, argv.ptr.compat + nr)) - return ERR_PTR(-EFAULT); + return (char __user *)ERR_PTR(-EFAULT); return compat_ptr(compat); } #endif if (get_user(native, argv.ptr.native + nr)) - return ERR_PTR(-EFAULT); + return (char __user *)ERR_PTR(-EFAULT); return native; }
The get_user_arg_ptr() returns a __user annotated pointer but the ERR_PTR() returns do not have this annotation which triggers sparse warnings. Add a case to (char __user *) to fix the following: fs/exec.c:409:39: warning: incorrect type in return expression (different address spaces) fs/exec.c:409:39: expected char const [noderef] <asn:1>* fs/exec.c:409:39: got void * fs/exec.c:416:31: warning: incorrect type in return expression (different address spaces) fs/exec.c:416:31: expected char const [noderef] <asn:1>* fs/exec.c:416:31: got void * Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- fs/exec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)