Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 131487
b: refs/heads/master
c: 610d18f
h: refs/heads/master
i:
  131485: 5ca25cd
  131483: a9544ea
  131479: f3c9794
  131471: 833c7fc
  131455: e50b42e
v: v3
  • Loading branch information
Davide Libenzi authored and Linus Torvalds committed Feb 18, 2009
1 parent b681510 commit 9cbc6ee
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ef35ce231b3cb2a4b1808e826da263bf37ccb38a
refs/heads/master: 610d18f4128ebbd88845d0fc60cce67b49af881e
12 changes: 6 additions & 6 deletions trunk/fs/timerfd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);

Expand All @@ -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;

Expand Down
16 changes: 12 additions & 4 deletions trunk/include/linux/timerfd.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,21 @@
/* For O_CLOEXEC and O_NONBLOCK */
#include <linux/fcntl.h>

/* Flags for timerfd_settime. */
/*
* CAREFUL: Check include/asm-generic/fcntl.h when defining
* new flags, since they might collide with O_* ones. We want
* to re-use O_* flags that couldn't possibly have a meaning
* from eventfd, in order to leave a free define-space for
* shared O_* flags.
*/
#define TFD_TIMER_ABSTIME (1 << 0)

/* Flags for timerfd_create. */
#define TFD_CLOEXEC O_CLOEXEC
#define TFD_NONBLOCK O_NONBLOCK

#define TFD_SHARED_FCNTL_FLAGS (TFD_CLOEXEC | TFD_NONBLOCK)
/* Flags for timerfd_create. */
#define TFD_CREATE_FLAGS TFD_SHARED_FCNTL_FLAGS
/* Flags for timerfd_settime. */
#define TFD_SETTIME_FLAGS TFD_TIMER_ABSTIME

#endif /* _LINUX_TIMERFD_H */

0 comments on commit 9cbc6ee

Please sign in to comment.