[Ocfs2-tools-devel] [PATCH] Correct range check of ocfs2_read_backup_super()

Sunil Mushran sunil.mushran at oracle.com
Wed Jul 13 09:17:44 PDT 2011


Thanks. Yes the fsck convention is more user friendly.

Acked-by

On 07/13/2011 08:10 AM, Goldwyn Rodrigues wrote:
> debugfs.ocfs2 is unable to access the backup at block[0] of the offset array.
> This is because of the incorrect range check and evaluation of block offset.
> Correct the range check and usage of the function.
>
> Not sure if I am changing the convention on how you perceive the block indexes
> here though. In any case, I am following the fsck.ocfs2 user interface
> [1,sbnum], and internally [0,sbnum).
>
> Signed-off-by: Goldwyn Rodrigues
> ---
> diff --git a/debugfs.ocfs2/commands.c b/debugfs.ocfs2/commands.c
> index 663164f..e2daa11 100644
> --- a/debugfs.ocfs2/commands.c
> +++ b/debugfs.ocfs2/commands.c
> @@ -1005,7 +1005,7 @@ static void do_stats (char **args)
>   	if (!sb_num)
>   		in = gbls.fs->fs_super;
>   	else {
> -		ret = ocfs2_read_backup_super(gbls.fs, sb_num, buf);
> +		ret = ocfs2_read_backup_super(gbls.fs, sb_num - 1, buf);
>   		if (ret) {
>   			com_err(gbls.cmd, ret, "while reading backup "
>   				"superblock");
> diff --git a/libocfs2/backup_super.c b/libocfs2/backup_super.c
> index 4de1699..3fb026e 100644
> --- a/libocfs2/backup_super.c
> +++ b/libocfs2/backup_super.c
> @@ -198,7 +198,7 @@ errcode_t ocfs2_read_backup_super(ocfs2_filesys
> *fs, int backup, char *sbbuf)
>
>   	numsb = ocfs2_get_backup_super_offsets(fs, blocks,
>   					       ARRAY_SIZE(blocks));
> -	if (backup<  1 || backup>  numsb)
> +	if (backup<  0 || backup>= numsb)
>   		return OCFS2_ET_NO_BACKUP_SUPER;
>
>   	return ocfs2_read_super(fs, blocks[backup], sbbuf);
>




More information about the Ocfs2-tools-devel mailing list