hrtimer: use nanosleep specific restart_block fields
authorThomas Gleixner <tglx@linutronix.de>
Sun, 10 Feb 2008 08:17:43 +0000 (09:17 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 17 Apr 2008 10:22:30 +0000 (12:22 +0200)
Convert all the nanosleep related users of restart_block to the
new nanosleep specific restart_block fields.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/compat.c
kernel/hrtimer.c

index 5f0e201..9c48abf 100644 (file)
@@ -47,15 +47,14 @@ static long compat_nanosleep_restart(struct restart_block *restart)
        mm_segment_t oldfs;
        long ret;
 
-       rmtp = (struct compat_timespec __user *)(restart->arg1);
-       restart->arg1 = (unsigned long)&rmt;
+       restart->nanosleep.rmtp = (struct timespec __user *) &rmt;
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        ret = hrtimer_nanosleep_restart(restart);
        set_fs(oldfs);
 
        if (ret) {
-               restart->arg1 = (unsigned long)rmtp;
+               rmtp = restart->nanosleep.compat_rmtp;
 
                if (rmtp && put_compat_timespec(&rmt, rmtp))
                        return -EFAULT;
@@ -89,7 +88,7 @@ asmlinkage long compat_sys_nanosleep(struct compat_timespec __user *rqtp,
                        = &current_thread_info()->restart_block;
 
                restart->fn = compat_nanosleep_restart;
-               restart->arg1 = (unsigned long)rmtp;
+               restart->nanosleep.compat_rmtp = rmtp;
 
                if (rmtp && put_compat_timespec(&rmt, rmtp))
                        return -EFAULT;
@@ -607,9 +606,9 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
        long err;
        mm_segment_t oldfs;
        struct timespec tu;
-       struct compat_timespec *rmtp = (struct compat_timespec *)(restart->arg1);
+       struct compat_timespec *rmtp = restart->nanosleep.compat_rmtp;
 
-       restart->arg1 = (unsigned long) &tu;
+       restart->nanosleep.rmtp = (struct timespec __user *) &tu;
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = clock_nanosleep_restart(restart);
@@ -621,7 +620,7 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
 
        if (err == -ERESTART_RESTARTBLOCK) {
                restart->fn = compat_clock_nanosleep_restart;
-               restart->arg1 = (unsigned long) rmtp;
+               restart->nanosleep.compat_rmtp = rmtp;
        }
        return err;
 }
@@ -652,7 +651,7 @@ long compat_sys_clock_nanosleep(clockid_t which_clock, int flags,
        if (err == -ERESTART_RESTARTBLOCK) {
                restart = &current_thread_info()->restart_block;
                restart->fn = compat_clock_nanosleep_restart;
-               restart->arg1 = (unsigned long) rmtp;
+               restart->nanosleep.compat_rmtp = rmtp;
        }
        return err;
 }
index 98bee01..911e87d 100644 (file)
@@ -1354,13 +1354,13 @@ long __sched hrtimer_nanosleep_restart(struct restart_block *restart)
        struct hrtimer_sleeper t;
        struct timespec __user  *rmtp;
 
-       hrtimer_init(&t.timer, restart->arg0, HRTIMER_MODE_ABS);
-       t.timer.expires.tv64 = ((u64)restart->arg3 << 32) | (u64) restart->arg2;
+       hrtimer_init(&t.timer, restart->nanosleep.index, HRTIMER_MODE_ABS);
+       t.timer.expires.tv64 = restart->nanosleep.expires;
 
        if (do_nanosleep(&t, HRTIMER_MODE_ABS))
                return 0;
 
-       rmtp = (struct timespec __user *)restart->arg1;
+       rmtp = restart->nanosleep.rmtp;
        if (rmtp) {
                int ret = update_rmtp(&t.timer, rmtp);
                if (ret <= 0)
@@ -1394,10 +1394,9 @@ long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp,
 
        restart = &current_thread_info()->restart_block;
        restart->fn = hrtimer_nanosleep_restart;
-       restart->arg0 = (unsigned long) t.timer.base->index;
-       restart->arg1 = (unsigned long) rmtp;
-       restart->arg2 = t.timer.expires.tv64 & 0xFFFFFFFF;
-       restart->arg3 = t.timer.expires.tv64 >> 32;
+       restart->nanosleep.index = t.timer.base->index;
+       restart->nanosleep.rmtp = rmtp;
+       restart->nanosleep.expires = t.timer.expires.tv64;
 
        return -ERESTART_RESTARTBLOCK;
 }