aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Villemoes <[email protected]>2015-11-05 18:50:11 -0800
committerLinus Torvalds <[email protected]>2015-11-05 19:34:48 -0800
commit9dd861d55b01f1d0848f82007e8665371ae18710 (patch)
tree537eb40b4eed90c1d673b3bd76cdb6860150df12
parent3acaea6804b3a10e996ce6ebc342089f481e1cdb (diff)
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 <[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]>
-rw-r--r--mm/maccess.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/maccess.c b/mm/maccess.c
index 1b13638d238d..d159b1c96e48 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;
}