From 92f8fb2b2b96271d80bfb363f1e5d640bd554a7c Mon Sep 17 00:00:00 2001 From: NAKAMURA Gou Date: Thu, 17 Sep 2015 20:09:54 +0900 Subject: [PATCH] nanosleep: use copy_to_user instead of direct access --- kernel/syscall.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/kernel/syscall.c b/kernel/syscall.c index ca2ed696..5691cc76 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -5036,12 +5036,6 @@ SYSCALL_DECLARE(nanosleep) return -EFAULT; } - if (rem) { - if (copy_from_user(&_rem, rem, sizeof(*rem))) { - return -EFAULT; - } - } - if (tv->tv_sec < 0 || tv->tv_nsec >= NS_PER_SEC) { return -EINVAL; } @@ -5060,8 +5054,12 @@ SYSCALL_DECLARE(nanosleep) } if (nanosecs_rem) { - rem->tv_sec = nanosecs_rem / NS_PER_SEC; - rem->tv_nsec = nanosecs_rem % NS_PER_SEC; + _rem.tv_sec = nanosecs_rem / NS_PER_SEC; + _rem.tv_nsec = nanosecs_rem % NS_PER_SEC; + + if (copy_to_user(rem, &_rem, sizeof(*rem))) { + ret = -EFAULT; + } } return ret;