Skip to contentSkip to conversation

initialize the array of fs/ncpfs/inode.c

PATCH In review Harry Wei 3 participants 4 messages Apr 10, 2011 – Apr 12, 2011

lore
Share & tools
lore

Harry Wei

author
#0 lore raw

PATCH 1/1 initialize the array of fs/ncpfs/inode.c

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&current=patched.png

So i patch for it below.

Thanks.
Harry Wei.

From: Harry Wei <[email protected]>

---
 fs/ncpfs/inode.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
fs/ncpfs/inode.c +2 -0
index 00a1d1c..15f0ebb 100644
@@ -30,6 +30,7 @@
 #include <linux/mount.h>
 #include <linux/seq_file.h>
 #include <linux/namei.h>
+#include <linux/ncp.h>
 
 #include <net/sock.h>
 
@@ -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)
Signature · 1 line
1.7.0.4
#1 lore raw
Quoted 10 lines · On Sun, 10 Apr 2011 18:08:18 +0800 Harry Wei <[email protected]> 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&current=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.

Review static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent) · line 468

Quoted 8 lines
(quoted diff) +1 -0
@@ -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 <[email protected]>

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().

---

 fs/ncpfs/inode.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
fs/ncpfs/inode.c renamed from fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning +1 -3
diff -puN fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning 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:

_

#2 lore raw
Quoted 56 lines · Andrew Morton
Quoted 10 lines · On Sun, 10 Apr 2011 18:08:18 +0800 Harry Wei<[email protected]> 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&current=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.

fs/ncpfs/inode.c static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent) · line 468

Quoted 8 lines
fs/ncpfs/inode.c renamed from fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning +1 -0
@@ -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<[email protected]>

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().

---

  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

fs/ncpfs/inode.c static int ncp_fill_super(struct super_b · line 464

Quoted 5 lines
fs/ncpfs/inode.c renamed from fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning +1 -1
@@ -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));

Needs '&' ?

	memset(&data, 0, sizeof(data));
Quoted 26 lines
fs/ncpfs/inode.c renamed from fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning +0 -2
  	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:

_

--
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/

Signature · 1 line
Tim Gardner [email protected]
author
#3 lore raw
In reply to Andrew Morton
Quoted 16 lines · Andrew Morton
Quoted 2 lines · On Sun, 10 Apr 2011 18:08:18 +0800 Harry Wei <[email protected]> wrote:

fs/ncpfs/inode.c: In function 'ncp_fill_super':
fs/ncpfs/inode.c:451: warning: 'data.mounted_vol[1u]' may be used

It's notabug, but we can easily fix it with a memset().

---

 fs/ncpfs/inode.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Review

Quoted 2 lines
(quoted diff) +1 -1
-	data.wdog_pid = NULL;
+	memset(data, 0, sizeof(data));

Hi Morton,
It really need a '&' for data, i think. So i have corrected
your patch like following.

Thanks.
Harry Wei.

---

 fs/ncpfs/inode.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
fs/ncpfs/inode.c renamed from fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning +1 -1
diff -puN fs/ncpfs/inode.c~fs-ncpfs-inodec-suppress-used-uninitialised-warning 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:

_