[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