[Ocfs2-tools-devel] [PATCH] mkfs.ocfs2: Let system_dir_blocks_needed return block num.

Tao Ma tao.ma at oracle.com
Mon Apr 6 23:36:04 PDT 2009



Sunil Mushran wrote:
> Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
> 
> You may want to remove bytes_needed's declaration too.
yeah, I will removed it and commit. Thanks.

Regards,
Tao
> 
> 
> Tao Ma wrote:
>> system_dir_blocks_needed is deemed to return block number needed
>> for system dir. But it return the wrong cluster number. It causes
>> memory overflow in following case.
>>
>> mkfs.ocfs2 -b 2048 -C 4096 -N 48 /dev/sdX.
>> Writing system files: *** glibc detected *** mkfs.ocfs2: double free
>> or corruption (!prev): 0x081f8000 ***
>>
>> Signed-off-by: Tao Ma <tao.ma at oracle.com>
>> Reported-by: Dyno Fu <dyno.fu at oracle.com>
>> ---
>>  mkfs.ocfs2/mkfs.c |    6 ++----
>>  1 files changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/mkfs.ocfs2/mkfs.c b/mkfs.ocfs2/mkfs.c
>> index 033af88..da343dc 100644
>> --- a/mkfs.ocfs2/mkfs.c
>> +++ b/mkfs.ocfs2/mkfs.c
>> @@ -1882,10 +1882,8 @@ system_dir_blocks_needed(State *s)
>>      int each = OCFS2_DIR_REC_LEN(SYSTEM_FILE_NAME_MAX);
>>      int entries_per_block = s->blocksize / each;
>>  
>> -    bytes_needed = ((sys_blocks_needed(s->initial_slots) +
>> -             entries_per_block - 1) / entries_per_block) << 
>> s->blocksize_bits;
>> -
>> -    return (bytes_needed + s->cluster_size - 1) >> s->cluster_size_bits;
>> +    return (sys_blocks_needed(s->initial_slots) +
>> +            entries_per_block - 1) / entries_per_block;
>>  }
>>  #if 0
>>  /* This breaks stuff that depends on volume_size_in_clusters and
>>   
> 



More information about the Ocfs2-tools-devel mailing list