diff options
Diffstat (limited to 'fs/timerfd.c')
-rw-r--r-- | fs/timerfd.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/timerfd.c b/fs/timerfd.c index 384fa759a563..c543cdb5f8ed 100644 --- a/fs/timerfd.c +++ b/fs/timerfd.c | |||
@@ -400,9 +400,9 @@ SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags) | |||
400 | clockid != CLOCK_BOOTTIME_ALARM)) | 400 | clockid != CLOCK_BOOTTIME_ALARM)) |
401 | return -EINVAL; | 401 | return -EINVAL; |
402 | 402 | ||
403 | if (!capable(CAP_WAKE_ALARM) && | 403 | if ((clockid == CLOCK_REALTIME_ALARM || |
404 | (clockid == CLOCK_REALTIME_ALARM || | 404 | clockid == CLOCK_BOOTTIME_ALARM) && |
405 | clockid == CLOCK_BOOTTIME_ALARM)) | 405 | !capable(CAP_WAKE_ALARM)) |
406 | return -EPERM; | 406 | return -EPERM; |
407 | 407 | ||
408 | ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); | 408 | ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); |
@@ -449,7 +449,7 @@ static int do_timerfd_settime(int ufd, int flags, | |||
449 | return ret; | 449 | return ret; |
450 | ctx = f.file->private_data; | 450 | ctx = f.file->private_data; |
451 | 451 | ||
452 | if (!capable(CAP_WAKE_ALARM) && isalarm(ctx)) { | 452 | if (isalarm(ctx) && !capable(CAP_WAKE_ALARM)) { |
453 | fdput(f); | 453 | fdput(f); |
454 | return -EPERM; | 454 | return -EPERM; |
455 | } | 455 | } |