aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/itimer.c
diff options
context:
space:
mode:
authorSasikantha babu <sasikanth.v19@gmail.com>2012-03-21 10:40:54 -0400
committerThomas Gleixner <tglx@linutronix.de>2012-03-30 09:43:33 -0400
commitaa2bf9bc6414b6972b9e51903c1ce7b1f057aee2 (patch)
tree71bde0e8c10be9e425a5bba631a0fe033ba2245f /kernel/itimer.c
parentf52b69f86e27903d6896ed5fa7cd280fec8de532 (diff)
itimer: Schedule silent NULL pointer fixup in setitimer() for removal
setitimer() should return -EFAULT if called with an invalid pointer for value. The current code excludes a NULL pointer from this rule and silently uses it to stop the timer. This violates the spec. Warn about user space apps which rely on that feature and schedule it for removal. [ tglx: Massaged changelog, warn message and Doc entry ] Signed-off-by: Sasikantha babu <sasikanth.v19@gmail.com> Link: http://lkml.kernel.org/r/1332340854-26053-1-git-send-email-sasikanth.v19@gmail.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/itimer.c')
-rw-r--r--kernel/itimer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/itimer.c b/kernel/itimer.c
index 22000c3db0dd..c70369a74b5a 100644
--- a/kernel/itimer.c
+++ b/kernel/itimer.c
@@ -284,8 +284,11 @@ SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value,
284 if (value) { 284 if (value) {
285 if(copy_from_user(&set_buffer, value, sizeof(set_buffer))) 285 if(copy_from_user(&set_buffer, value, sizeof(set_buffer)))
286 return -EFAULT; 286 return -EFAULT;
287 } else 287 } else {
288 memset((char *) &set_buffer, 0, sizeof(set_buffer)); 288 memset((char *) &set_buffer, 0, sizeof(set_buffer));
289 WARN_ONCE(1, "setitimer: new_value pointer is NULL."
290 " Misfeature support will be removed\n");
291 }
289 292
290 error = do_setitimer(which, &set_buffer, ovalue ? &get_buffer : NULL); 293 error = do_setitimer(which, &set_buffer, ovalue ? &get_buffer : NULL);
291 if (error || !ovalue) 294 if (error || !ovalue)