Commit 9bbfc964 authored by Heiko Carstens's avatar Heiko Carstens Committed by Eric Paris

fanotify: CONFIG_HAVE_SYSCALL_WRAPPERS for sys_fanotify_mark

Please note that you need the patch below in addition, otherwise the
syscall wrapper stuff won't work on those 32 bit architectures which enable
the wrappers.

When enabled the syscall wrapper defines always take long parameters and then
cast them to whatever is needed. This approach doesn't work for the 32 bit
case where the original syscall takes a long long parameter, since we would
lose the upper 32 bits.
So syscalls with 64 bit arguments are special cases wrt to syscall wrappers
and enp up in the ugliness below (see also sys_fallocate). In addition these
special cased syscall wrappers have the drawback that ftrace syscall tracing
doesn't work on them, since they don't get defined by using the usual macros.
Signed-off-by: default avatarEric Paris <eparis@redhat.com>
parent ef601a9c
...@@ -468,8 +468,9 @@ SYSCALL_DEFINE3(fanotify_init, unsigned int, flags, unsigned int, event_f_flags, ...@@ -468,8 +468,9 @@ SYSCALL_DEFINE3(fanotify_init, unsigned int, flags, unsigned int, event_f_flags,
return fd; return fd;
} }
SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags, SYSCALL_DEFINE(fanotify_mark)(int fanotify_fd, unsigned int flags,
__u64, mask, int, dfd, const char __user *, pathname) __u64 mask, int dfd,
const char __user * pathname)
{ {
struct inode *inode; struct inode *inode;
struct fsnotify_group *group; struct fsnotify_group *group;
...@@ -513,6 +514,17 @@ SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags, ...@@ -513,6 +514,17 @@ SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags,
return ret; return ret;
} }
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
asmlinkage long SyS_fanotify_mark(long fanotify_fd, long flags, __u64 mask,
long dfd, long pathname)
{
return SYSC_fanotify_mark((int) fanotify_fd, (unsigned int) flags,
mask, (int) dfd,
(const char __user *) pathname);
}
SYSCALL_ALIAS(sys_fanotify_mark, SyS_fanotify_mark);
#endif
/* /*
* fanotify_user_setup - Our initialization function. Note that we cannnot return * fanotify_user_setup - Our initialization function. Note that we cannnot return
* error because we have compiled-in VFS hooks. So an (unlikely) failure here * error because we have compiled-in VFS hooks. So an (unlikely) failure here
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment