|
@@ -186,10 +186,9 @@ SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
|
|
|
BUILD_BUG_ON(TFD_CLOEXEC != O_CLOEXEC);
|
|
|
BUILD_BUG_ON(TFD_NONBLOCK != O_NONBLOCK);
|
|
|
|
|
|
- if (flags & ~(TFD_CLOEXEC | TFD_NONBLOCK))
|
|
|
- return -EINVAL;
|
|
|
- if (clockid != CLOCK_MONOTONIC &&
|
|
|
- clockid != CLOCK_REALTIME)
|
|
|
+ if ((flags & ~TFD_CREATE_FLAGS) ||
|
|
|
+ (clockid != CLOCK_MONOTONIC &&
|
|
|
+ clockid != CLOCK_REALTIME))
|
|
|
return -EINVAL;
|
|
|
|
|
|
ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
|
|
@@ -201,7 +200,7 @@ SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
|
|
|
hrtimer_init(&ctx->tmr, clockid, HRTIMER_MODE_ABS);
|
|
|
|
|
|
ufd = anon_inode_getfd("[timerfd]", &timerfd_fops, ctx,
|
|
|
- flags & (O_CLOEXEC | O_NONBLOCK));
|
|
|
+ flags & TFD_SHARED_FCNTL_FLAGS);
|
|
|
if (ufd < 0)
|
|
|
kfree(ctx);
|
|
|
|
|
@@ -219,7 +218,8 @@ SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags,
|
|
|
if (copy_from_user(&ktmr, utmr, sizeof(ktmr)))
|
|
|
return -EFAULT;
|
|
|
|
|
|
- if (!timespec_valid(&ktmr.it_value) ||
|
|
|
+ if ((flags & ~TFD_SETTIME_FLAGS) ||
|
|
|
+ !timespec_valid(&ktmr.it_value) ||
|
|
|
!timespec_valid(&ktmr.it_interval))
|
|
|
return -EINVAL;
|
|
|
|