The three functions set_vmcore_list_offsets_elf64(), set_vmcore_list_offsets_elf32(), and set_vmcore_list_offsets_newmem() can be merged to a single fuction set_vmcore_list_offsets() Signed-off-by: Michael Holzheu <holzheu at linux.vnet.ibm.com> --- fs/proc/vmcore.c | 50 +++++--------------------------------------------- 1 file changed, 5 insertions(+), 45 deletions(-) diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c index 71db4e6..3ddfc73 100644 --- a/fs/proc/vmcore.c +++ b/fs/proc/vmcore.c @@ -487,7 +487,7 @@ static int __init process_ptload_program_headers_elf32(char *elfptr, } /* Sets offset fields of vmcore elements. */ -static void __init set_vmcore_list_offsets_newmem(struct list_head *vc_list) +static void __init set_vmcore_list_offsets(struct list_head *vc_list) { loff_t vmcore_off = elfcorebuf_sz; struct vmcore *m; @@ -498,46 +498,6 @@ static void __init set_vmcore_list_offsets_newmem(struct list_head *vc_list) } } -/* Sets offset fields of vmcore elements. */ -static void __init set_vmcore_list_offsets_elf64(char *elfptr, - struct list_head *vc_list) -{ - loff_t vmcore_off; - Elf64_Ehdr *ehdr_ptr; - struct vmcore *m; - - ehdr_ptr = (Elf64_Ehdr *)elfptr; - - /* Skip Elf header and program headers. */ - vmcore_off = sizeof(Elf64_Ehdr) + - (ehdr_ptr->e_phnum) * sizeof(Elf64_Phdr); - - list_for_each_entry(m, vc_list, list) { - m->offset = vmcore_off; - vmcore_off += m->size; - } -} - -/* Sets offset fields of vmcore elements. */ -static void __init set_vmcore_list_offsets_elf32(char *elfptr, - struct list_head *vc_list) -{ - loff_t vmcore_off; - Elf32_Ehdr *ehdr_ptr; - struct vmcore *m; - - ehdr_ptr = (Elf32_Ehdr *)elfptr; - - /* Skip Elf header and program headers. */ - vmcore_off = sizeof(Elf32_Ehdr) + - (ehdr_ptr->e_phnum) * sizeof(Elf32_Phdr); - - list_for_each_entry(m, vc_list, list) { - m->offset = vmcore_off; - vmcore_off += m->size; - } -} - static int __init parse_crash_elf64_headers(void) { int rc=0; @@ -589,7 +549,7 @@ static int __init parse_crash_elf64_headers(void) kfree(elfcorebuf); return rc; } - set_vmcore_list_offsets_elf64(elfcorebuf, &vmcore_list); + set_vmcore_list_offsets(&vmcore_list); return 0; } @@ -644,7 +604,7 @@ static int __init parse_crash_elf32_headers(void) kfree(elfcorebuf); return rc; } - set_vmcore_list_offsets_elf32(elfcorebuf, &vmcore_list); + set_vmcore_list_offsets(&vmcore_list); return 0; } @@ -713,7 +673,7 @@ static int parse_crash_elf_headers_newmem(void) &vmcore_list); if (rc) goto fail; - set_vmcore_list_offsets_newmem(&vmcore_list); + set_vmcore_list_offsets(&vmcore_list); vmcore_size = get_vmcore_size_elf64(elfcorebuf); } else if (e_ident[EI_CLASS] == ELFCLASS32) { rc = process_ptload_program_headers_elf32(elfcorebuf, @@ -721,7 +681,7 @@ static int parse_crash_elf_headers_newmem(void) &vmcore_list); if (rc) goto fail; - set_vmcore_list_offsets_newmem(&vmcore_list); + set_vmcore_list_offsets(&vmcore_list); vmcore_size = get_vmcore_size_elf32(elfcorebuf); } return 0; -- 1.8.1.6