From 242acd25db83d99a8f6ea48d14c215dd64f3635f Mon Sep 17 00:00:00 2001 From: Cliff Wickman Date: Mon, 23 Aug 2010 16:18:05 -0500 Subject: kexec: extend KCORE_ELF_HEADERS_SIZE for large memory A customer has seen the kexec command exhaust its buffer for the ELF headers from /proc/kcore. It found 147 program headers, which requires a buffer of over 8k. (This overflow was on an SGI UV with an extremely large memory, hence many ram ranges.) The default buffer size of 4k is configured in KCORE_ELF_HEADERS_SIZE. The easy solution would probably be to increase the buffer to 16k. That is room for 291 entries, on x86_64. You might want to make the command dynamically enlarge the buffer when it is found to be too small, but I don't think this command's use of a little more memory is of concern. So there is probably no reason to change the program logic in this area. Diffed against kexec-tools-2.0.2 Signed-off-by: Cliff Wickman Signed-off-by: Simon Horman --- kexec/crashdump.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'kexec/crashdump.h') diff --git a/kexec/crashdump.h b/kexec/crashdump.h index b6e60cc..31f711c 100644 --- a/kexec/crashdump.h +++ b/kexec/crashdump.h @@ -7,8 +7,8 @@ extern int get_xen_vmcoreinfo(uint64_t *addr, uint64_t *len); /* Need to find a better way to determine per cpu notes section size. */ #define MAX_NOTE_BYTES 1024 -/* Expecting ELF headers to fit in 4K. Increase it if you need more. */ -#define KCORE_ELF_HEADERS_SIZE 4096 +/* Expecting ELF headers to fit in 16K. Increase it if you need more. */ +#define KCORE_ELF_HEADERS_SIZE 16384 /* The address of the ELF header is passed to the secondary kernel * using the kernel command line option memmap=nnn. * The smallest unit the kernel accepts is in kilobytes, -- cgit