[Cluster-devel] [2.6 patch] fs/gfs2/dir.c:gfs2_dir_write_data(): don't use an uninitialized variable

Adrian Bunk bunk at stusta.de
Thu Oct 19 13:20:04 UTC 2006


In the "if (extlen)" case, "new" might be used uninitialized.

Looking at the code, it should be initialized to 0.

Spotted by the Coverity checker.

Signed-off-by: Adrian Bunk <bunk at stusta.de>

--- linux-2.6/fs/gfs2/dir.c.old	2006-10-19 01:08:00.000000000 +0200
+++ linux-2.6/fs/gfs2/dir.c	2006-10-19 01:08:18.000000000 +0200
@@ -169,37 +169,37 @@ static int gfs2_dir_write_data(struct gf
 		return gfs2_dir_write_stuffed(ip, buf, (unsigned int)offset,
 					      size);
 
 	if (gfs2_assert_warn(sdp, gfs2_is_jdata(ip)))
 		return -EINVAL;
 
 	if (gfs2_is_stuffed(ip)) {
 		error = gfs2_unstuff_dinode(ip, NULL);
 		if (error)
 			return error;
 	}
 
 	lblock = offset;
 	o = do_div(lblock, sdp->sd_jbsize) + sizeof(struct gfs2_meta_header);
 
 	while (copied < size) {
 		unsigned int amount;
 		struct buffer_head *bh;
-		int new;
+		int new = 0;
 
 		amount = size - copied;
 		if (amount > sdp->sd_sb.sb_bsize - o)
 			amount = sdp->sd_sb.sb_bsize - o;
 
 		if (!extlen) {
 			new = 1;
 			error = gfs2_extent_map(&ip->i_inode, lblock, &new,
 						&dblock, &extlen);
 			if (error)
 				goto fail;
 			error = -EIO;
 			if (gfs2_assert_withdraw(sdp, dblock))
 				goto fail;
 		}
 
 		if (amount == sdp->sd_jbsize || new)
 			error = gfs2_dir_get_new_buffer(ip, dblock, &bh);




More information about the Cluster-devel mailing list