diff options
author | Kevin Winchester <kjwinchester@gmail.com> | 2010-08-09 20:20:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-09 23:45:05 -0400 |
commit | 85c9fe8fcaf630225b26047b3a7cc5167739eced (patch) | |
tree | 7af001a80ea43c22411f80cd35bd4aceae60e6aa | |
parent | d89b1945b760a6e0e887da004d68432c0bff899a (diff) |
vfs: fix warning: 'dirent' is used uninitialized in this function
Using:
gcc (GCC) 4.5.0 20100610 (prerelease)
The following warnings appear:
fs/readdir.c: In function `filldir64':
fs/readdir.c:240:15: warning: `dirent' is used uninitialized in this function
fs/readdir.c: In function `filldir':
fs/readdir.c:155:15: warning: `dirent' is used uninitialized in this function
fs/compat.c: In function `compat_filldir64':
fs/compat.c:1071:11: warning: `dirent' is used uninitialized in this function
fs/compat.c: In function `compat_filldir':
fs/compat.c:984:15: warning: `dirent' is used uninitialized in this function
The warnings are related to the use of the NAME_OFFSET() macro. Luckily,
it appears as though the standard offsetof() macro is what is being
implemented by NAME_OFFSET(), thus we can fix the warning and use a more
standard code construct at the same time.
Signed-off-by: Kevin Winchester <kjwinchester@gmail.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | fs/compat.c | 10 | ||||
-rw-r--r-- | fs/readdir.c | 8 |
2 files changed, 10 insertions, 8 deletions
diff --git a/fs/compat.c b/fs/compat.c index c6fda9aeb864..5976bad85f65 100644 --- a/fs/compat.c +++ b/fs/compat.c | |||
@@ -15,6 +15,7 @@ | |||
15 | * published by the Free Software Foundation. | 15 | * published by the Free Software Foundation. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #include <linux/stddef.h> | ||
18 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
19 | #include <linux/linkage.h> | 20 | #include <linux/linkage.h> |
20 | #include <linux/compat.h> | 21 | #include <linux/compat.h> |
@@ -891,8 +892,6 @@ asmlinkage long compat_sys_mount(char __user * dev_name, char __user * dir_name, | |||
891 | return retval; | 892 | return retval; |
892 | } | 893 | } |
893 | 894 | ||
894 | #define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de))) | ||
895 | |||
896 | struct compat_old_linux_dirent { | 895 | struct compat_old_linux_dirent { |
897 | compat_ulong_t d_ino; | 896 | compat_ulong_t d_ino; |
898 | compat_ulong_t d_offset; | 897 | compat_ulong_t d_offset; |
@@ -981,7 +980,8 @@ static int compat_filldir(void *__buf, const char *name, int namlen, | |||
981 | struct compat_linux_dirent __user * dirent; | 980 | struct compat_linux_dirent __user * dirent; |
982 | struct compat_getdents_callback *buf = __buf; | 981 | struct compat_getdents_callback *buf = __buf; |
983 | compat_ulong_t d_ino; | 982 | compat_ulong_t d_ino; |
984 | int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 2, sizeof(compat_long_t)); | 983 | int reclen = ALIGN(offsetof(struct compat_linux_dirent, d_name) + |
984 | namlen + 2, sizeof(compat_long_t)); | ||
985 | 985 | ||
986 | buf->error = -EINVAL; /* only used if we fail.. */ | 986 | buf->error = -EINVAL; /* only used if we fail.. */ |
987 | if (reclen > buf->count) | 987 | if (reclen > buf->count) |
@@ -1068,8 +1068,8 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t | |||
1068 | { | 1068 | { |
1069 | struct linux_dirent64 __user *dirent; | 1069 | struct linux_dirent64 __user *dirent; |
1070 | struct compat_getdents_callback64 *buf = __buf; | 1070 | struct compat_getdents_callback64 *buf = __buf; |
1071 | int jj = NAME_OFFSET(dirent); | 1071 | int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1, |
1072 | int reclen = ALIGN(jj + namlen + 1, sizeof(u64)); | 1072 | sizeof(u64)); |
1073 | u64 off; | 1073 | u64 off; |
1074 | 1074 | ||
1075 | buf->error = -EINVAL; /* only used if we fail.. */ | 1075 | buf->error = -EINVAL; /* only used if we fail.. */ |
diff --git a/fs/readdir.c b/fs/readdir.c index 7723401f8d8b..356f71528ad6 100644 --- a/fs/readdir.c +++ b/fs/readdir.c | |||
@@ -4,6 +4,7 @@ | |||
4 | * Copyright (C) 1995 Linus Torvalds | 4 | * Copyright (C) 1995 Linus Torvalds |
5 | */ | 5 | */ |
6 | 6 | ||
7 | #include <linux/stddef.h> | ||
7 | #include <linux/kernel.h> | 8 | #include <linux/kernel.h> |
8 | #include <linux/module.h> | 9 | #include <linux/module.h> |
9 | #include <linux/time.h> | 10 | #include <linux/time.h> |
@@ -54,7 +55,6 @@ EXPORT_SYMBOL(vfs_readdir); | |||
54 | * anyway. Thus the special "fillonedir()" function for that | 55 | * anyway. Thus the special "fillonedir()" function for that |
55 | * case (the low-level handlers don't need to care about this). | 56 | * case (the low-level handlers don't need to care about this). |
56 | */ | 57 | */ |
57 | #define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de))) | ||
58 | 58 | ||
59 | #ifdef __ARCH_WANT_OLD_READDIR | 59 | #ifdef __ARCH_WANT_OLD_READDIR |
60 | 60 | ||
@@ -152,7 +152,8 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset, | |||
152 | struct linux_dirent __user * dirent; | 152 | struct linux_dirent __user * dirent; |
153 | struct getdents_callback * buf = (struct getdents_callback *) __buf; | 153 | struct getdents_callback * buf = (struct getdents_callback *) __buf; |
154 | unsigned long d_ino; | 154 | unsigned long d_ino; |
155 | int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 2, sizeof(long)); | 155 | int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2, |
156 | sizeof(long)); | ||
156 | 157 | ||
157 | buf->error = -EINVAL; /* only used if we fail.. */ | 158 | buf->error = -EINVAL; /* only used if we fail.. */ |
158 | if (reclen > buf->count) | 159 | if (reclen > buf->count) |
@@ -237,7 +238,8 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset, | |||
237 | { | 238 | { |
238 | struct linux_dirent64 __user *dirent; | 239 | struct linux_dirent64 __user *dirent; |
239 | struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf; | 240 | struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf; |
240 | int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 1, sizeof(u64)); | 241 | int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1, |
242 | sizeof(u64)); | ||
241 | 243 | ||
242 | buf->error = -EINVAL; /* only used if we fail.. */ | 244 | buf->error = -EINVAL; /* only used if we fail.. */ |
243 | if (reclen > buf->count) | 245 | if (reclen > buf->count) |