Commit 4ae8978c authored by Michael Kerrisk's avatar Michael Kerrisk Committed by Al Viro

inotify: fix type errors in interfaces

The problems lie in the types used for some inotify interfaces, both at the kernel level and at the glibc level. This mail addresses the kernel problem. I will follow up with some suggestions for glibc changes.

For the sys_inotify_rm_watch() interface, the type of the 'wd' argument is
currently 'u32', it should be '__s32' .  That is Robert's suggestion, and
is consistent with the other declarations of watch descriptors in the
kernel source, in particular, the inotify_event structure in
include/linux/inotify.h:

struct inotify_event {
        __s32           wd;             /* watch descriptor */
        __u32           mask;           /* watch mask */
        __u32           cookie;         /* cookie to synchronize two events */
        __u32           len;            /* length (including nulls) of name */
        char            name[0];        /* stub for possible name */
};

The patch makes the changes needed for inotify_rm_watch().
Signed-off-by: default avatarMichael Kerrisk <mtk.manpages@googlemail.com>
Cc: Robert Love <rlove@google.com>
Cc: Vegard Nossum <vegard.nossum@gmail.com>
Cc: Ulrich Drepper <drepper@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2f1169e2
...@@ -704,7 +704,7 @@ fput_and_out: ...@@ -704,7 +704,7 @@ fput_and_out:
return ret; return ret;
} }
asmlinkage long sys_inotify_rm_watch(int fd, u32 wd) asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd)
{ {
struct file *filp; struct file *filp;
struct inotify_device *dev; struct inotify_device *dev;
......
...@@ -549,7 +549,7 @@ asmlinkage long sys_inotify_init(void); ...@@ -549,7 +549,7 @@ asmlinkage long sys_inotify_init(void);
asmlinkage long sys_inotify_init1(int flags); asmlinkage long sys_inotify_init1(int flags);
asmlinkage long sys_inotify_add_watch(int fd, const char __user *path, asmlinkage long sys_inotify_add_watch(int fd, const char __user *path,
u32 mask); u32 mask);
asmlinkage long sys_inotify_rm_watch(int fd, u32 wd); asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd);
asmlinkage long sys_spu_run(int fd, __u32 __user *unpc, asmlinkage long sys_spu_run(int fd, __u32 __user *unpc,
__u32 __user *ustatus); __u32 __user *ustatus);
......
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