Skip to content

Commit

Permalink
flag parameters: check magic constants
Browse files Browse the repository at this point in the history
This patch adds test that ensure the boundary conditions for the various
constants introduced in the previous patches is met.  No code is generated.

[[email protected]: fix alpha]
Signed-off-by: Ulrich Drepper <[email protected]>
Acked-by: Davide Libenzi <[email protected]>
Cc: Michael Kerrisk <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Ulrich Drepper authored and torvalds committed Jul 24, 2008
1 parent 510df2d commit e38b36f
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 0 deletions.
4 changes: 4 additions & 0 deletions fs/eventfd.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags)
int fd;
struct eventfd_ctx *ctx;

/* Check the EFD_* constants for consistency. */
BUILD_BUG_ON(EFD_CLOEXEC != O_CLOEXEC);
BUILD_BUG_ON(EFD_NONBLOCK != O_NONBLOCK);

if (flags & ~(EFD_CLOEXEC | EFD_NONBLOCK))
return -EINVAL;

Expand Down
3 changes: 3 additions & 0 deletions fs/eventpoll.c
Original file line number Diff line number Diff line change
Expand Up @@ -1051,6 +1051,9 @@ asmlinkage long sys_epoll_create2(int size, int flags)
int error, fd = -1;
struct eventpoll *ep;

/* Check the EPOLL_* constant for consistency. */
BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);

if (flags & ~EPOLL_CLOEXEC)
return -EINVAL;

Expand Down
4 changes: 4 additions & 0 deletions fs/inotify_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,10 @@ asmlinkage long sys_inotify_init1(int flags)
struct file *filp;
int fd, ret;

/* Check the IN_* constants for consistency. */
BUILD_BUG_ON(IN_CLOEXEC != O_CLOEXEC);
BUILD_BUG_ON(IN_NONBLOCK != O_NONBLOCK);

if (flags & ~(IN_CLOEXEC | IN_NONBLOCK))
return -EINVAL;

Expand Down
4 changes: 4 additions & 0 deletions fs/signalfd.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask,
sigset_t sigmask;
struct signalfd_ctx *ctx;

/* Check the SFD_* constants for consistency. */
BUILD_BUG_ON(SFD_CLOEXEC != O_CLOEXEC);
BUILD_BUG_ON(SFD_NONBLOCK != O_NONBLOCK);

if (flags & ~(SFD_CLOEXEC | SFD_NONBLOCK))
return -EINVAL;

Expand Down
4 changes: 4 additions & 0 deletions fs/timerfd.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,10 @@ asmlinkage long sys_timerfd_create(int clockid, int flags)
int ufd;
struct timerfd_ctx *ctx;

/* Check the TFD_* constants for consistency. */
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 &&
Expand Down
6 changes: 6 additions & 0 deletions net/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -1222,6 +1222,12 @@ asmlinkage long sys_socket(int family, int type, int protocol)
struct socket *sock;
int flags;

/* Check the SOCK_* constants for consistency. */
BUILD_BUG_ON(SOCK_CLOEXEC != O_CLOEXEC);
BUILD_BUG_ON((SOCK_MAX | SOCK_TYPE_MASK) != SOCK_TYPE_MASK);
BUILD_BUG_ON(SOCK_CLOEXEC & SOCK_TYPE_MASK);
BUILD_BUG_ON(SOCK_NONBLOCK & SOCK_TYPE_MASK);

flags = type & ~SOCK_TYPE_MASK;
if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
return -EINVAL;
Expand Down

0 comments on commit e38b36f

Please sign in to comment.