compat: Fix sparse address space warnings
authorH. Peter Anvin <hpa@linux.intel.com>
Mon, 3 Feb 2014 01:57:28 +0000 (17:57 -0800)
committerH. Peter Anvin <hpa@linux.intel.com>
Mon, 3 Feb 2014 02:00:29 +0000 (18:00 -0800)
In compat_sys_old_getrlimit() we pass a kernel pointer to
sys_old_getrlimit() inside a set_fs() bracket.  This is okay, so we
can safely cast the affected pointer to __user.

In compat_clock_nanosleep_restart(), the variable "rmtp" holds a user
pointer.  Annotate it as such.

Both of these warnings are ancient, but were reported by Fengguang
Wu's test system due to other changes.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Toyo Abe <toyoa@mvista.com>
Link: http://lkml.kernel.org/n/tip-507h7cq5e45eg6ygtykon3bf@git.kernel.org
kernel/compat.c

index 3afc524a57ad301e3391d35db9205af8825611d8..7076b57fa52eb4031bf1d046b6625a1bcda0bc01 100644 (file)
@@ -451,7 +451,7 @@ asmlinkage long compat_sys_old_getrlimit(unsigned int resource,
        mm_segment_t old_fs = get_fs();
 
        set_fs(KERNEL_DS);
-       ret = sys_old_getrlimit(resource, &r);
+       ret = sys_old_getrlimit(resource, (struct rlimit __user *)&r);
        set_fs(old_fs);
 
        if (!ret) {
@@ -799,7 +799,7 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
        long err;
        mm_segment_t oldfs;
        struct timespec tu;
-       struct compat_timespec *rmtp = restart->nanosleep.compat_rmtp;
+       struct compat_timespec __user *rmtp = restart->nanosleep.compat_rmtp;
 
        restart->nanosleep.rmtp = (struct timespec __user *) &tu;
        oldfs = get_fs();