summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2008-02-01 18:41:30 +0100
committerThomas Gleixner <tglx@linutronix.de>2008-02-10 10:48:03 +0100
commitc289b074b66e2e59c65aba73f40b99e797e92d2f (patch)
tree03ecf2381f33941e8d84e1d5b2d8e106109ea7da
parenthrtimer: fix *rmtp/restarts handling in compat_sys_nanosleep() (diff)
downloadlinux-c289b074b66e2e59c65aba73f40b99e797e92d2f.tar.xz
linux-c289b074b66e2e59c65aba73f40b99e797e92d2f.zip
hrtimer: don't modify restart_block->fn in restart functions
hrtimer_nanosleep_restart() clears/restores restart_block->fn. This is pointless and complicates its usage. Note that if sys_restart_syscall() doesn't actually happen, we have a bogus "pending" restart->fn anyway, this is harmless. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Cc: Alexey Dobriyan <adobriyan@sw.ru> Cc: Pavel Emelyanov <xemul@sw.ru> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Toyo Abe <toyoa@mvista.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--kernel/compat.c1
-rw-r--r--kernel/hrtimer.c4
2 files changed, 0 insertions, 5 deletions
diff --git a/kernel/compat.c b/kernel/compat.c
index f2a297504287..5f0e201bcfd3 100644
--- a/kernel/compat.c
+++ b/kernel/compat.c
@@ -55,7 +55,6 @@ static long compat_nanosleep_restart(struct restart_block *restart)
set_fs(oldfs);
if (ret) {
- restart->fn = compat_nanosleep_restart;
restart->arg1 = (unsigned long)rmtp;
if (rmtp && put_compat_timespec(&rmt, rmtp))
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index 355085f0896e..3f4a57c7895d 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -1340,8 +1340,6 @@ long __sched hrtimer_nanosleep_restart(struct restart_block *restart)
struct hrtimer_sleeper t;
struct timespec __user *rmtp;
- restart->fn = do_no_restart_syscall;
-
hrtimer_init(&t.timer, restart->arg0, HRTIMER_MODE_ABS);
t.timer.expires.tv64 = ((u64)restart->arg3 << 32) | (u64) restart->arg2;
@@ -1355,8 +1353,6 @@ long __sched hrtimer_nanosleep_restart(struct restart_block *restart)
return ret;
}
- restart->fn = hrtimer_nanosleep_restart;
-
/* The other values in restart are already filled in */
return -ERESTART_RESTARTBLOCK;
}