[Ocfs2-tools-devel] [PATCH V2] debugfs.ocfs2: Fix a bug in process_open_args()

Goldwyn Rodrigues rgoldwyn at suse.de
Wed May 6 08:01:08 PDT 2015



On 05/05/2015 11:44 PM, piaojun wrote:
> Hi Junxiao,
> 	
> 	This patch is based on V1 and used to fix the bug in V1.
> 	

I agree with Junxiao. This is a completely new patch.

In any case, I have pushed the patch in the git along with the necessary 
commit header changes and signed-off-by's.

-- 
Goldwyn

> 	Thanks
> 	Piao
>
> 在 2015/5/6 11:44, Junxiao Bi 写道:
>> Hi Piaojun,
>>
>> Is this V2 patch based on V1? This is not the right way to post V2. You
>> should include all the stuff in V2 and drop V1.
>>
>> Thanks,
>> Junxiao.
>>
>> On 05/06/2015 10:25 AM, piaojun wrote:
>>> In process_open_args(), 'dev' get the wrong value because getopt() will
>>> change the value of args[1]. This problem will cause failure in
>>> debugfs.ocfs2. ocfs2. So we should assign 'dev' before getopt().
>>>
>>> Signed-off-by: Jun Piao <piaojun at huawei.com>
>>> Reviewed-by: Alex Chen <alex.chen at huawei.com>
>>>
>>> ---
>>>   debugfs.ocfs2/commands.c | 20 +++++++++++++-------
>>>   1 file changed, 13 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/debugfs.ocfs2/commands.c b/debugfs.ocfs2/commands.c
>>> index 1b0b2d9..6da396a 100644
>>> --- a/debugfs.ocfs2/commands.c
>>> +++ b/debugfs.ocfs2/commands.c
>>> @@ -534,6 +534,7 @@ static int process_open_args(char **args,
>>>   	int num, argc, c;
>>>
>>>   	for (argc = 0; (args[argc]); ++argc);
>>> +	dev = strdup(args[1]);
>>>   	optind = 0;
>>>   	while ((c = getopt(argc, args, "is:")) != EOF) {
>>>   		switch (c) {
>>> @@ -544,26 +545,31 @@ static int process_open_args(char **args,
>>>   				s = strtoul(optarg, &ptr, 0);
>>>   				break;
>>>   			default:
>>> -				return 1;
>>> +				ret = 1;
>>> +				goto bail;
>>>   				break;
>>>   		}
>>>   	}
>>>
>>> -	if (!s)
>>> -		return 0;
>>> +	if (!s) {
>>> +		ret = 0;
>>> +		goto bail;
>>> +	}
>>>
>>>   	num = ocfs2_get_backup_super_offsets(NULL, byte_off,
>>>   					     ARRAY_SIZE(byte_off));
>>> -	if (!num)
>>> -		return -1;
>>> +	if (!num) {
>>> +		ret = -1;
>>> +		goto bail;
>>> +	}
>>>
>>>   	if (s < 1 || s > num) {
>>>   		fprintf(stderr, "Backup super block is outside of valid range"
>>>   			"(between 1 and %d)\n", num);
>>> -		return -1;
>>> +		ret = -1;
>>> +		goto bail;
>>>   	}
>>>
>>> -	dev = strdup(args[1]);
>>>   	ret = get_blocksize(dev, byte_off[s-1], &blksize, s);
>>>   	if (ret) {
>>>   		com_err(args[0],ret, "Can't get the blocksize from the device"
>>>
>>
>>
>> .
>>
>
>
>

-- 
Goldwyn



More information about the Ocfs2-tools-devel mailing list