diff options
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 1 | ||||
-rw-r--r-- | arch/x86/ia32/sys_ia32.c | 9 | ||||
-rw-r--r-- | arch/x86/include/asm/sys_ia32.h | 3 | ||||
-rw-r--r-- | arch/x86/include/asm/unistd_32.h | 3 | ||||
-rw-r--r-- | arch/x86/include/asm/unistd_64.h | 2 | ||||
-rw-r--r-- | arch/x86/kernel/syscall_table_32.S | 1 | ||||
-rw-r--r-- | fs/notify/fanotify/fanotify_user.c | 6 | ||||
-rw-r--r-- | include/linux/syscalls.h | 3 | ||||
-rw-r--r-- | kernel/sys_ni.c | 1 |
9 files changed, 28 insertions, 1 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 586cb3be2e32..17cf65c94804 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -843,4 +843,5 @@ ia32_sys_call_table: | |||
843 | .quad sys_perf_event_open | 843 | .quad sys_perf_event_open |
844 | .quad compat_sys_recvmmsg | 844 | .quad compat_sys_recvmmsg |
845 | .quad sys_fanotify_init | 845 | .quad sys_fanotify_init |
846 | .quad sys32_fanotify_mark | ||
846 | ia32_syscall_end: | 847 | ia32_syscall_end: |
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index 626be156d88d..3d093311d5e2 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c | |||
@@ -546,3 +546,12 @@ asmlinkage long sys32_fallocate(int fd, int mode, unsigned offset_lo, | |||
546 | return sys_fallocate(fd, mode, ((u64)offset_hi << 32) | offset_lo, | 546 | return sys_fallocate(fd, mode, ((u64)offset_hi << 32) | offset_lo, |
547 | ((u64)len_hi << 32) | len_lo); | 547 | ((u64)len_hi << 32) | len_lo); |
548 | } | 548 | } |
549 | |||
550 | asmlinkage long sys32_fanotify_mark(int fanotify_fd, unsigned int flags, | ||
551 | u32 mask_lo, u32 mask_hi, | ||
552 | int fd, const char __user *pathname) | ||
553 | { | ||
554 | return sys_fanotify_mark(fanotify_fd, flags, | ||
555 | ((u64)mask_hi << 32) | mask_lo, | ||
556 | fd, pathname); | ||
557 | } | ||
diff --git a/arch/x86/include/asm/sys_ia32.h b/arch/x86/include/asm/sys_ia32.h index 3ad421784ae7..cf4e2e381cba 100644 --- a/arch/x86/include/asm/sys_ia32.h +++ b/arch/x86/include/asm/sys_ia32.h | |||
@@ -80,4 +80,7 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *); | |||
80 | 80 | ||
81 | /* ia32/ipc32.c */ | 81 | /* ia32/ipc32.c */ |
82 | asmlinkage long sys32_ipc(u32, int, int, int, compat_uptr_t, u32); | 82 | asmlinkage long sys32_ipc(u32, int, int, int, compat_uptr_t, u32); |
83 | |||
84 | asmlinkage long sys32_fanotify_mark(int, unsigned int, u32, u32, int, | ||
85 | const char __user *); | ||
83 | #endif /* _ASM_X86_SYS_IA32_H */ | 86 | #endif /* _ASM_X86_SYS_IA32_H */ |
diff --git a/arch/x86/include/asm/unistd_32.h b/arch/x86/include/asm/unistd_32.h index 981c7e7ad804..80b799cd74f7 100644 --- a/arch/x86/include/asm/unistd_32.h +++ b/arch/x86/include/asm/unistd_32.h | |||
@@ -344,10 +344,11 @@ | |||
344 | #define __NR_perf_event_open 336 | 344 | #define __NR_perf_event_open 336 |
345 | #define __NR_recvmmsg 337 | 345 | #define __NR_recvmmsg 337 |
346 | #define __NR_fanotify_init 338 | 346 | #define __NR_fanotify_init 338 |
347 | #define __NR_fanotify_mark 339 | ||
347 | 348 | ||
348 | #ifdef __KERNEL__ | 349 | #ifdef __KERNEL__ |
349 | 350 | ||
350 | #define NR_syscalls 339 | 351 | #define NR_syscalls 340 |
351 | 352 | ||
352 | #define __ARCH_WANT_IPC_PARSE_VERSION | 353 | #define __ARCH_WANT_IPC_PARSE_VERSION |
353 | #define __ARCH_WANT_OLD_READDIR | 354 | #define __ARCH_WANT_OLD_READDIR |
diff --git a/arch/x86/include/asm/unistd_64.h b/arch/x86/include/asm/unistd_64.h index 4f23e04bdb34..5b7b1d585616 100644 --- a/arch/x86/include/asm/unistd_64.h +++ b/arch/x86/include/asm/unistd_64.h | |||
@@ -665,6 +665,8 @@ __SYSCALL(__NR_perf_event_open, sys_perf_event_open) | |||
665 | __SYSCALL(__NR_recvmmsg, sys_recvmmsg) | 665 | __SYSCALL(__NR_recvmmsg, sys_recvmmsg) |
666 | #define __NR_fanotify_init 300 | 666 | #define __NR_fanotify_init 300 |
667 | __SYSCALL(__NR_fanotify_init, sys_fanotify_init) | 667 | __SYSCALL(__NR_fanotify_init, sys_fanotify_init) |
668 | #define __NR_fanotify_mark 301 | ||
669 | __SYSCALL(__NR_fanotify_mark, sys_fanotify_mark) | ||
668 | 670 | ||
669 | #ifndef __NO_STUBS | 671 | #ifndef __NO_STUBS |
670 | #define __ARCH_WANT_OLD_READDIR | 672 | #define __ARCH_WANT_OLD_READDIR |
diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S index e38793b50e1d..07ad5eb7cc5c 100644 --- a/arch/x86/kernel/syscall_table_32.S +++ b/arch/x86/kernel/syscall_table_32.S | |||
@@ -338,3 +338,4 @@ ENTRY(sys_call_table) | |||
338 | .long sys_perf_event_open | 338 | .long sys_perf_event_open |
339 | .long sys_recvmmsg | 339 | .long sys_recvmmsg |
340 | .long sys_fanotify_init | 340 | .long sys_fanotify_init |
341 | .long sys_fanotify_mark | ||
diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 67c0b5e4a488..55d6e379f2b6 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c | |||
@@ -70,3 +70,9 @@ out_put_group: | |||
70 | fsnotify_put_group(group); | 70 | fsnotify_put_group(group); |
71 | return fd; | 71 | return fd; |
72 | } | 72 | } |
73 | |||
74 | SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags, | ||
75 | __u64, mask, int, dfd, const char __user *, pathname) | ||
76 | { | ||
77 | return -ENOSYS; | ||
78 | } | ||
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 198dcc9bd025..5b05c37059e9 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -815,6 +815,9 @@ asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int, | |||
815 | size_t); | 815 | size_t); |
816 | asmlinkage long sys_fanotify_init(unsigned int flags, unsigned int event_f_flags, | 816 | asmlinkage long sys_fanotify_init(unsigned int flags, unsigned int event_f_flags, |
817 | unsigned int priority); | 817 | unsigned int priority); |
818 | asmlinkage long sys_fanotify_mark(int fanotify_fd, unsigned int flags, | ||
819 | u64 mask, int fd, | ||
820 | const char __user *pathname); | ||
818 | 821 | ||
819 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]); | 822 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]); |
820 | 823 | ||
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index 2c4adc2decc3..bad369ec5403 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c | |||
@@ -184,3 +184,4 @@ cond_syscall(sys_perf_event_open); | |||
184 | 184 | ||
185 | /* fanotify! */ | 185 | /* fanotify! */ |
186 | cond_syscall(sys_fanotify_init); | 186 | cond_syscall(sys_fanotify_init); |
187 | cond_syscall(sys_fanotify_mark); | ||