diff options
Diffstat (limited to 'fs/timerfd.c')
| -rw-r--r-- | fs/timerfd.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/fs/timerfd.c b/fs/timerfd.c index c502c60e4f54..0862f0e49d0c 100644 --- a/fs/timerfd.c +++ b/fs/timerfd.c | |||
| @@ -52,11 +52,9 @@ static enum hrtimer_restart timerfd_tmrproc(struct hrtimer *htmr) | |||
| 52 | 52 | ||
| 53 | static ktime_t timerfd_get_remaining(struct timerfd_ctx *ctx) | 53 | static ktime_t timerfd_get_remaining(struct timerfd_ctx *ctx) |
| 54 | { | 54 | { |
| 55 | ktime_t now, remaining; | 55 | ktime_t remaining; |
| 56 | |||
| 57 | now = ctx->tmr.base->get_time(); | ||
| 58 | remaining = ktime_sub(ctx->tmr.expires, now); | ||
| 59 | 56 | ||
| 57 | remaining = hrtimer_expires_remaining(&ctx->tmr); | ||
| 60 | return remaining.tv64 < 0 ? ktime_set(0, 0): remaining; | 58 | return remaining.tv64 < 0 ? ktime_set(0, 0): remaining; |
| 61 | } | 59 | } |
| 62 | 60 | ||
| @@ -74,7 +72,7 @@ static void timerfd_setup(struct timerfd_ctx *ctx, int flags, | |||
| 74 | ctx->ticks = 0; | 72 | ctx->ticks = 0; |
| 75 | ctx->tintv = timespec_to_ktime(ktmr->it_interval); | 73 | ctx->tintv = timespec_to_ktime(ktmr->it_interval); |
| 76 | hrtimer_init(&ctx->tmr, ctx->clockid, htmode); | 74 | hrtimer_init(&ctx->tmr, ctx->clockid, htmode); |
| 77 | ctx->tmr.expires = texp; | 75 | hrtimer_set_expires(&ctx->tmr, texp); |
| 78 | ctx->tmr.function = timerfd_tmrproc; | 76 | ctx->tmr.function = timerfd_tmrproc; |
| 79 | if (texp.tv64 != 0) | 77 | if (texp.tv64 != 0) |
| 80 | hrtimer_start(&ctx->tmr, texp, htmode); | 78 | hrtimer_start(&ctx->tmr, texp, htmode); |
