From: Oleg Nesterov Date: Fri, 1 Feb 2008 17:41:30 +0000 (+0300) Subject: hrtimer: don't modify restart_block->fn in restart functions X-Git-Tag: v2.6.25-rc1~5^2 X-Git-Url: http://ftp.safe.ca/?a=commitdiff_plain;ds=sidebyside;h=c289b074b66e2e59c65aba73f40b99e797e92d2f;p=safe%2Fjmp%2Flinux-2.6 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 Cc: Alexey Dobriyan Cc: Pavel Emelyanov Cc: Peter Zijlstra Cc: Toyo Abe Cc: Andrew Morton Signed-off-by: Thomas Gleixner --- diff --git a/kernel/compat.c b/kernel/compat.c index f2a2975..5f0e201 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 355085f..3f4a57c 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; }