[Ocfs2-tools-devel] [PATCH 1/2] extras/check_metaecc: fix of check_metaecc()

Coly Li coly.li at suse.de
Tue May 25 01:19:10 PDT 2010


check_metaecc() should clean zero to the memory area which an ocfs2_block_check
type pointer pointed to. This patch fixes the error.

Signed-off-by: Coly Li <coly.li at suse.de>
---
 extras/check_metaecc.c |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/extras/check_metaecc.c b/extras/check_metaecc.c
index 86bbb08..ff06068 100644
--- a/extras/check_metaecc.c
+++ b/extras/check_metaecc.c
@@ -59,7 +59,7 @@ static errcode_t check_metaecc(ocfs2_filesys *fs,
 {
 	char signature[8];
 	char name[256] = {0, };
-	struct ocfs2_block_check check;
+	struct ocfs2_block_check *check;
 	int do_check = 1;
 	errcode_t err = 0;
 
@@ -68,49 +68,49 @@ static errcode_t check_metaecc(ocfs2_filesys *fs,
 	if (!strncmp(signature, OCFS2_SUPER_BLOCK_SIGNATURE,
 			sizeof(OCFS2_SUPER_BLOCK_SIGNATURE))) {
 		struct ocfs2_dinode *di = (struct ocfs2_dinode *)block;
-		check = di->i_check;
+		check = &di->i_check;
 		snprintf(name, sizeof(name), OCFS2_SUPER_BLOCK_SIGNATURE);
 	} else if (!strncmp(signature, OCFS2_INODE_SIGNATURE,
 			sizeof(OCFS2_INODE_SIGNATURE))) {
 		struct ocfs2_dinode *di;
 		di = (struct ocfs2_dinode *)block;
-		check = di->i_check;
+		check = &di->i_check;
 		snprintf(name, sizeof(name), OCFS2_INODE_SIGNATURE);
 	} else if (!strncmp(signature, OCFS2_EXTENT_BLOCK_SIGNATURE,
 			sizeof(OCFS2_EXTENT_BLOCK_SIGNATURE))) {
 		struct ocfs2_extent_block *eb;
 		eb = (struct ocfs2_extent_block *)block;
-		check = eb->h_check;
+		check = &eb->h_check;
 		snprintf(name, sizeof(name), OCFS2_EXTENT_BLOCK_SIGNATURE);
 	} else if (!strncmp(signature, OCFS2_GROUP_DESC_SIGNATURE,
 			sizeof(OCFS2_GROUP_DESC_SIGNATURE))) {
 		struct ocfs2_group_desc *gd;
 		gd = (struct ocfs2_group_desc *)block;
-		check = gd->bg_check;
+		check = &gd->bg_check;
 		snprintf(name, sizeof(name), OCFS2_GROUP_DESC_SIGNATURE);
 	} else if (!strncmp(signature, OCFS2_XATTR_BLOCK_SIGNATURE,
 			sizeof(OCFS2_XATTR_BLOCK_SIGNATURE))) {
 		struct ocfs2_xattr_block *xb;
 		xb = (struct ocfs2_xattr_block *)block;
-		check = xb->xb_check;
+		check = &xb->xb_check;
 		snprintf(name, sizeof(name), OCFS2_XATTR_BLOCK_SIGNATURE);
 	} else if (!strncmp(signature, OCFS2_REFCOUNT_BLOCK_SIGNATURE,
 			sizeof(OCFS2_REFCOUNT_BLOCK_SIGNATURE))) {
 		struct ocfs2_refcount_block *rb;
 		rb = (struct ocfs2_refcount_block *)block;
-		check = rb->rf_check;
+		check = &rb->rf_check;
 		snprintf(name, sizeof(name), OCFS2_REFCOUNT_BLOCK_SIGNATURE);
 	} else if (!strncmp(signature, OCFS2_DX_ROOT_SIGNATURE,
 			sizeof(OCFS2_DX_ROOT_SIGNATURE))) {
 		struct ocfs2_dx_root_block *dx_root;
 		dx_root = (struct ocfs2_dx_root_block *)block;
-		check = dx_root->dr_check;
+		check = &dx_root->dr_check;
 		snprintf(name, sizeof(name), OCFS2_DX_ROOT_SIGNATURE);
 	} else if (!strncmp(signature, OCFS2_DX_LEAF_SIGNATURE,
 			sizeof(OCFS2_DX_LEAF_SIGNATURE))) {
 		struct ocfs2_dx_leaf *dx_leaf;
 		dx_leaf = (struct ocfs2_dx_leaf *)block;
-		check = dx_leaf->dl_check;
+		check = &dx_leaf->dl_check;
 		snprintf(name, sizeof(name), OCFS2_DX_LEAF_SIGNATURE);
 	} else {
 		if (ocfs2_supports_dir_trailer(fs)) {
@@ -119,7 +119,7 @@ static errcode_t check_metaecc(ocfs2_filesys *fs,
 			if (!strncmp((char *)trailer->db_signature,
 					OCFS2_DIR_TRAILER_SIGNATURE,
 					sizeof(OCFS2_DIR_TRAILER_SIGNATURE))) {
-				check = trailer->db_check;
+				check = &trailer->db_check;
 				snprintf(name, sizeof(name),
 					OCFS2_DIR_TRAILER_SIGNATURE);
 			}
@@ -145,9 +145,9 @@ static errcode_t check_metaecc(ocfs2_filesys *fs,
 		int crc_offset, result_offset, offset;
 		char outbuf[256] = {0,};
 
-		new_check.bc_crc32e = le32_to_cpu(check.bc_crc32e);
-		new_check.bc_ecc = le16_to_cpu(check.bc_ecc);
-		memset(&check, 0, sizeof(struct ocfs2_block_check));
+		new_check.bc_crc32e = le32_to_cpu(check->bc_crc32e);
+		new_check.bc_ecc = le16_to_cpu(check->bc_ecc);
+		memset(check, 0, sizeof(struct ocfs2_block_check));
 
 		crc_offset = snprintf(outbuf, sizeof(outbuf),
 				"Block %4"PRIu64"    ", blk);
@@ -193,8 +193,8 @@ static errcode_t check_metaecc(ocfs2_filesys *fs,
 		fprintf(stderr, outbuf);
 		err = -1;
 do_check_end:
-		check.bc_crc32e = cpu_to_le32(new_check.bc_crc32e);
-		check.bc_ecc = cpu_to_le16(new_check.bc_ecc);
+		check->bc_crc32e = cpu_to_le32(new_check.bc_crc32e);
+		check->bc_ecc = cpu_to_le16(new_check.bc_ecc);
 	}
 
 	return err;
-- 
1.7.0.3




More information about the Ocfs2-tools-devel mailing list