mm/maccess.c: actually return -EFAULT from strncpy_from_unsafe
authorRasmus Villemoes <[email protected]>
Fri, 6 Nov 2015 02:50:11 +0000 (18:50 -0800)
committerLinus Torvalds <[email protected]>
Fri, 6 Nov 2015 03:34:48 +0000 (19:34 -0800)
As far as I can tell, strncpy_from_unsafe never returns -EFAULT.  ret is
the result of a __copy_from_user_inatomic(), which is 0 for success and
positive (in this case necessarily 1) for access error - it is never
negative.  So we were always returning the length of the, possibly
truncated, destination string.

Signed-off-by: Rasmus Villemoes <[email protected]>
Acked-by: Alexei Starovoitov <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/maccess.c

index 1b13638d238d514ad7760ca680507dc8469010be..d159b1c96e484d902f6edb34ebb5a83a3977bd57 100644 (file)
@@ -104,5 +104,5 @@ long strncpy_from_unsafe(char *dst, const void *unsafe_addr, long count)
        pagefault_enable();
        set_fs(old_fs);
 
-       return ret < 0 ? ret : src - unsafe_addr;
+       return ret ? -EFAULT : src - unsafe_addr;
 }