diff options
author | Rasmus Villemoes <linux@rasmusvillemoes.dk> | 2015-11-05 18:50:11 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-05 19:34:48 -0800 |
commit | 9dd861d55b01f1d0848f82007e8665371ae18710 (patch) | |
tree | 537eb40b4eed90c1d673b3bd76cdb6860150df12 | |
parent | 3acaea6804b3a10e996ce6ebc342089f481e1cdb (diff) | |
download | op-kernel-dev-9dd861d55b01f1d0848f82007e8665371ae18710.zip op-kernel-dev-9dd861d55b01f1d0848f82007e8665371ae18710.tar.gz |
mm/maccess.c: actually return -EFAULT from strncpy_from_unsafe
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 <linux@rasmusvillemoes.dk>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/maccess.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/maccess.c b/mm/maccess.c index 1b13638..d159b1c 100644 --- a/mm/maccess.c +++ b/mm/maccess.c @@ -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; } |