Document that these functions expect access_ok() to be performed on dirent between reception from user-space and call to these functions.
Signed-off-by: Mathieu Desnoyers <[email protected]> CC: Al Viro <[email protected]> --- fs/compat.c | 4 ++-- fs/readdir.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) Index: linux/fs/compat.c =================================================================== --- linux.orig/fs/compat.c +++ linux/fs/compat.c @@ -834,7 +834,7 @@ struct compat_readdir_callback { int result; }; -static int compat_fillonedir(void *__buf, const char *name, int namlen, +static int __compat_fillonedir(void *__buf, const char *name, int namlen, loff_t offset, u64 ino, unsigned int d_type) { struct compat_readdir_callback *buf = __buf; @@ -879,7 +879,7 @@ asmlinkage long compat_sys_old_readdir(u buf.result = 0; buf.dirent = dirent; - error = vfs_readdir(f.file, compat_fillonedir, &buf); + error = vfs_readdir(f.file, __compat_fillonedir, &buf); if (buf.result) error = buf.result; Index: linux/fs/readdir.c =================================================================== --- linux.orig/fs/readdir.c +++ linux/fs/readdir.c @@ -52,7 +52,7 @@ EXPORT_SYMBOL(vfs_readdir); * * "count=1" is a special case, meaning that the buffer is one * dirent-structure in size and that the code can't handle more - * anyway. Thus the special "fillonedir()" function for that + * anyway. Thus the special "__fillonedir()" function for that * case (the low-level handlers don't need to care about this). */ @@ -70,7 +70,7 @@ struct readdir_callback { int result; }; -static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset, +static int __fillonedir(void * __buf, const char * name, int namlen, loff_t offset, u64 ino, unsigned int d_type) { struct readdir_callback * buf = (struct readdir_callback *) __buf; @@ -115,7 +115,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned in buf.result = 0; buf.dirent = dirent; - error = vfs_readdir(f.file, fillonedir, &buf); + error = vfs_readdir(f.file, __fillonedir, &buf); if (buf.result) error = buf.result; @@ -143,7 +143,7 @@ struct getdents_callback { int error; }; -static int filldir(void * __buf, const char * name, int namlen, loff_t offset, +static int __filldir(void * __buf, const char * name, int namlen, loff_t offset, u64 ino, unsigned int d_type) { struct linux_dirent __user * dirent; @@ -206,7 +206,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, buf.count = count; buf.error = 0; - error = vfs_readdir(f.file, filldir, &buf); + error = vfs_readdir(f.file, __filldir, &buf); if (error >= 0) error = buf.error; lastdirent = buf.previous; @@ -227,7 +227,7 @@ struct getdents_callback64 { int error; }; -static int filldir64(void * __buf, const char * name, int namlen, loff_t offset, +static int __filldir64(void * __buf, const char * name, int namlen, loff_t offset, u64 ino, unsigned int d_type) { struct linux_dirent64 __user *dirent; @@ -286,7 +286,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int buf.count = count; buf.error = 0; - error = vfs_readdir(f.file, filldir64, &buf); + error = vfs_readdir(f.file, __filldir64, &buf); if (error >= 0) error = buf.error; lastdirent = buf.previous; -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

