Skip to content
Snippets Groups Projects
Commit aa2bf9bc authored by Sasikantha babu's avatar Sasikantha babu Committed by Thomas Gleixner
Browse files

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: default avatarSasikantha babu <sasikanth.v19@gmail.com>
Link: http://lkml.kernel.org/r/1332340854-26053-1-git-send-email-sasikanth.v19@gmail.com


Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent f52b69f8
Branches
Tags
No related merge requests found
...@@ -529,3 +529,11 @@ When: 3.5 ...@@ -529,3 +529,11 @@ When: 3.5
Why: The old kmap_atomic() with two arguments is deprecated, we only Why: The old kmap_atomic() with two arguments is deprecated, we only
keep it for backward compatibility for few cycles and then drop it. keep it for backward compatibility for few cycles and then drop it.
Who: Cong Wang <amwang@redhat.com> Who: Cong Wang <amwang@redhat.com>
----------------------------
What: setitimer accepts user NULL pointer (value)
When: 3.6
Why: setitimer is not returning -EFAULT if user pointer is NULL. This
violates the spec.
Who: Sasikantha Babu <sasikanth.v19@gmail.com>
...@@ -284,8 +284,11 @@ SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value, ...@@ -284,8 +284,11 @@ SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value,
if (value) { if (value) {
if(copy_from_user(&set_buffer, value, sizeof(set_buffer))) if(copy_from_user(&set_buffer, value, sizeof(set_buffer)))
return -EFAULT; return -EFAULT;
} else } else {
memset((char *) &set_buffer, 0, sizeof(set_buffer)); memset((char *) &set_buffer, 0, sizeof(set_buffer));
WARN_ONCE(1, "setitimer: new_value pointer is NULL."
" Misfeature support will be removed\n");
}
error = do_setitimer(which, &set_buffer, ovalue ? &get_buffer : NULL); error = do_setitimer(which, &set_buffer, ovalue ? &get_buffer : NULL);
if (error || !ovalue) if (error || !ovalue)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment