Am 24.01.2013 13:43, schrieb Markus Armbruster:
> Kevin Wolf <kw...@redhat.com> writes:
> 
>> Return -errno instead of -1 on errors. While touching the
>> code, fix a memory leak.
>>
>> Signed-off-by: Kevin Wolf <kw...@redhat.com>
>> ---
>>  block/bochs.c |   22 +++++++++++++++-------
>>  1 files changed, 15 insertions(+), 7 deletions(-)
>>
>> diff --git a/block/bochs.c b/block/bochs.c
>> index 3737583..a6eb33d 100644
>> --- a/block/bochs.c
>> +++ b/block/bochs.c
>> @@ -114,11 +114,13 @@ static int bochs_open(BlockDriverState *bs, int flags)
>>      int i;
>>      struct bochs_header bochs;
>>      struct bochs_header_v1 header_v1;
>> +    int ret;
>>  
>>      bs->read_only = 1; // no write support yet
>>  
>> -    if (bdrv_pread(bs->file, 0, &bochs, sizeof(bochs)) != sizeof(bochs)) {
>> -        goto fail;
>> +    ret = bdrv_pread(bs->file, 0, &bochs, sizeof(bochs));
>> +    if (ret < 0) {
>> +        return ret;
>>      }
>>  
>>      if (strcmp(bochs.magic, HEADER_MAGIC) ||
>            strcmp(bochs.type, REDOLOG_TYPE) ||
>            strcmp(bochs.subtype, GROWING_TYPE) ||
>            ((le32_to_cpu(bochs.version) != HEADER_VERSION) &&
>            (le32_to_cpu(bochs.version) != HEADER_V1))) {
> 
> I'm afraid you need to set ret here.  I wonder why the compiler didn't
> flag it.
> 
>            goto fail;
>        }

This is against the block branch with Stefan's patches applied, so it's
actually 'return -EMEDIUMTYPE' instead of 'goto fail'.

Kevin

Reply via email to