X-Git-Url: http://git.samba.org/samba.git/?p=sfrench%2Fcifs-2.6.git;a=blobdiff_plain;f=kernel%2Ffutex.c;h=e10c5c8786a614619c943f5102189fdb428c5ac3;hp=62cbd648e28a663fc5e165adf177d227bed38a33;hb=3e1d7a6219ab64e13b10b1a77c0625db9a8bd8db;hpb=42569c39917a08e8de1e8b5685463be7b74baebd;ds=sidebyside diff --git a/kernel/futex.c b/kernel/futex.c index 62cbd648e28a..e10c5c8786a6 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -1229,13 +1229,16 @@ static int futex_wait(u32 __user *uaddr, int fshared, if (!abs_time) schedule(); else { + unsigned long slack; + slack = current->timer_slack_ns; + if (rt_task(current)) + slack = 0; hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); hrtimer_init_sleeper(&t, current); - t.timer.expires = *abs_time; + hrtimer_set_expires_range_ns(&t.timer, *abs_time, slack); - hrtimer_start(&t.timer, t.timer.expires, - HRTIMER_MODE_ABS); + hrtimer_start_expires(&t.timer, HRTIMER_MODE_ABS); if (!hrtimer_active(&t.timer)) t.task = NULL; @@ -1337,7 +1340,7 @@ static int futex_lock_pi(u32 __user *uaddr, int fshared, hrtimer_init_on_stack(&to->timer, CLOCK_REALTIME, HRTIMER_MODE_ABS); hrtimer_init_sleeper(to, current); - to->timer.expires = *time; + hrtimer_set_expires(&to->timer, *time); } q.pi_state = NULL;