Messages in this thread Patch in this message | | | Date | Mon, 11 Apr 2011 16:18:38 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH]initialize the array of fs/ncpfs/inode.c |
| |
On Sun, 10 Apr 2011 18:08:18 +0800 Harry Wei <jiaweiwei.xiyou@gmail.com> wrote:
> Hi us, > When i compile the linux-2.6.38.2, some warnings happened > to me. One of them is like following. > > fs/ncpfs/inode.c: In function 'ncp_fill_super': > fs/ncpfs/inode.c:451: warning: 'data.mounted_vol[1u]' may be used > uninitialized in this function > ... > See details by the URL: > http://s1202.photobucket.com/albums/bb364/harrywei/Kernel/?action=view¤t=patched.png
Yup. The compiler is "wrong" because it doesn't know that the uninitialised bytes will never be read, because they fall after the '\0' in a null-terminated string.
> @@ -461,6 +462,7 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent) > #endif > struct ncp_entry_info finfo; > > + data.mounted_vol[NCP_VOLNAME_LEN + 1] = {0}; > data.wdog_pid = NULL; > server = kzalloc(sizeof(struct ncp_server), GFP_KERNEL); > if (!server)
hm. I'm not sure that this fixed data.mounted_vol[2u], data.mounted_vol[3u], etc.
How about we use the big hammer?
From: Andrew Morton <akpm@linux-foundation.org>
fs/ncpfs/inode.c: In function 'ncp_fill_super': fs/ncpfs/inode.c:451: warning: 'data.mounted_vol[1u]' may be used uninitialized in this function fs/ncpfs/inode.c:451: warning: 'data.mounted_vol[2u]' may be used uninitialized in this function fs/ncpfs/inode.c:451: warning: 'data.mounted_vol[3u]' may be used uninitialized in this function ...
It's notabug, but we can easily fix it with a memset().
Reported-by: Harry Wei <jiaweiwei.xiyou@gmail.com> Cc: Petr Vandrovec <petr@vandrovec.name> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> ---
fs/ncpfs/inode.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff -puN fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning fs/ncpfs/inode.c --- a/fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning +++ a/fs/ncpfs/inode.c @@ -461,7 +461,7 @@ static int ncp_fill_super(struct super_b #endif struct ncp_entry_info finfo; - data.wdog_pid = NULL; + memset(data, 0, sizeof(data)); server = kzalloc(sizeof(struct ncp_server), GFP_KERNEL); if (!server) return -ENOMEM; @@ -496,7 +496,6 @@ static int ncp_fill_super(struct super_b struct ncp_mount_data_v4* md = (struct ncp_mount_data_v4*)raw_data; data.flags = md->flags; - data.int_flags = 0; data.mounted_uid = md->mounted_uid; data.wdog_pid = find_get_pid(md->wdog_pid); data.ncp_fd = md->ncp_fd; @@ -507,7 +506,6 @@ static int ncp_fill_super(struct super_b data.file_mode = md->file_mode; data.dir_mode = md->dir_mode; data.info_fd = -1; - data.mounted_vol[0] = 0; } break; default: _
| |