Hello HATAYAMA-san, >Kumagai-san, > >Could you review these patches? Thanks for fixing them, I've reviewed the patches. I'll merge the patches into v1.6.1. Regards, Atsushi Kumagai >On 2016/06/20 14:57, HATAYAMA Daisuke wrote: >> Currently, makedumpfile results in segmentation fault on >> sadump-related formats: >> >> # ~/makedumpfile --message-level 31 -l -d 31 -x ./vmlinux vmcore >> sadump: read dump device as single partition >> sadump: single partition configuration >> page_size : 4096 >> Segmentation fault >> >> This is because although commit >> 5fc24bf754fa6d2c0bd0f1c6f5655de371efb9d5 started dynamically >> allocating the buffer of struct dump_bitmap, the sadump source code >> doesn't follow the change. >> >> This commit fixes this by following the change. >> >> Signed-off-by: HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> >> --- >> makedumpfile.c | 5 ++++- >> sadump_info.c | 28 ++++++++++++++++++++++++++-- >> 2 files changed, 30 insertions(+), 3 deletions(-) >> >> diff --git a/makedumpfile.c b/makedumpfile.c >> index 853b999..90cfc3e 100644 >> --- a/makedumpfile.c >> +++ b/makedumpfile.c >> @@ -11229,8 +11229,11 @@ out: >> free(info->kh_memory); >> if (info->valid_pages) >> free(info->valid_pages); >> - if (info->bitmap_memory) >> + if (info->bitmap_memory) { >> + if (info->bitmap_memory->buf) >> + free(info->bitmap_memory->buf); >> free(info->bitmap_memory); >> + } >> if (info->fd_memory) >> close(info->fd_memory); >> if (info->fd_dumpfile) >> diff --git a/sadump_info.c b/sadump_info.c >> index 20376f0..8716167 100644 >> --- a/sadump_info.c >> +++ b/sadump_info.c >> @@ -832,18 +832,28 @@ sadump_initialize_bitmap_memory(void) >> strerror(errno)); >> return FALSE; >> } >> + >> bmp->fd = info->fd_memory; >> bmp->file_name = info->name_memory; >> bmp->no_block = -1; >> - memset(bmp->buf, 0, BUFSIZE_BITMAP); >> bmp->offset = dumpable_bitmap_offset; >> >> + bmp->buf = malloc(BUFSIZE_BITMAP); >> + if (!bmp->buf) { >> + ERRMSG("Can't allocate memory for the memory-bitmap's buffer. %s\n", >> + strerror(errno)); >> + free(bmp); >> + return FALSE; >> + } >> + memset(bmp->buf, 0, BUFSIZE_BITMAP); >> + >> max_section = divideup(si->max_mapnr, SADUMP_PF_SECTION_NUM); >> >> block_table = calloc(sizeof(unsigned long long), max_section); >> if (block_table == NULL) { >> ERRMSG("Can't allocate memory for the block_table. %s\n", >> strerror(errno)); >> + free(bmp->buf); >> free(bmp); >> return FALSE; >> } >> @@ -870,8 +880,17 @@ sadump_initialize_bitmap_memory(void) >> bmp->fd = info->fd_memory; >> bmp->file_name = info->name_memory; >> bmp->no_block = -1; >> - memset(bmp->buf, 0, BUFSIZE_BITMAP); >> bmp->offset = si->sub_hdr_offset + sh->block_size * sh->sub_hdr_size; >> + >> + bmp->buf = malloc(BUFSIZE_BITMAP); >> + if (!bmp->buf) { >> + ERRMSG("Can't allocate memory for the memory-bitmap's buffer. %s\n", >> + strerror(errno)); >> + free(bmp); >> + return FALSE; >> + } >> + memset(bmp->buf, 0, BUFSIZE_BITMAP); >> + >> si->ram_bitmap = bmp; >> >> /* >> @@ -1904,6 +1923,11 @@ free_sadump_info(void) >> fclose(si->file_elf_note); >> if (si->cpu_online_mask_buf) >> free(si->cpu_online_mask_buf); >> + if (si->ram_bitmap) { >> + if (si->ram_bitmap->buf) >> + free(si->ram_bitmap->buf); >> + free(si->ram_bitmap); >> + } >> } >> >> void >> > >-- >Thanks. >HATAYAMA, Daisuke