On Wed, May 22, 2013 at 11:56:12AM +0900, HATAYAMA Daisuke wrote: [..] > -static u64 __init get_vmcore_size_elf64(char *elfptr, size_t elfsz) > +static u64 __init get_vmcore_size_elf64(size_t elfsz, size_t elfnotesegsz, > + struct list_head *vc_list) > { > - int i; > u64 size; > - Elf64_Ehdr *ehdr_ptr; > - Elf64_Phdr *phdr_ptr; > + struct vmcore *m; > > - ehdr_ptr = (Elf64_Ehdr *)elfptr; > - phdr_ptr = (Elf64_Phdr*)(elfptr + sizeof(Elf64_Ehdr)); > - size = elfsz; > - for (i = 0; i < ehdr_ptr->e_phnum; i++) { > - size += phdr_ptr->p_memsz; > - phdr_ptr++; > + size = elfsz + elfnotesegsz; > + list_for_each_entry(m, vc_list, list) { > + size += m->size; > } > return size; > } > > -static u64 __init get_vmcore_size_elf32(char *elfptr, size_t elfsz) > +static u64 __init get_vmcore_size_elf32(size_t elfsz, size_t elfnotesegsz, > + struct list_head *vc_list) > { > - int i; > u64 size; > - Elf32_Ehdr *ehdr_ptr; > - Elf32_Phdr *phdr_ptr; > + struct vmcore *m; > > - ehdr_ptr = (Elf32_Ehdr *)elfptr; > - phdr_ptr = (Elf32_Phdr*)(elfptr + sizeof(Elf32_Ehdr)); > - size = elfsz; > - for (i = 0; i < ehdr_ptr->e_phnum; i++) { > - size += phdr_ptr->p_memsz; > - phdr_ptr++; > + size = elfsz + elfnotesegsz; > + list_for_each_entry(m, vc_list, list) { > + size += m->size; Now get_vmcore_size_elf64() and get_vmcore_size_elf32() function are same. We can get rid of one and rename other get_vmcore_size(). Thanks Vivek