Thread (112 messages) 112 messages, 9 authors, 2016-05-29
STALE3666d

[PATCH kexec-tools 04/32] kdump: fix kdump mapping

From: Pratyush Anand <hidden>
Date: 2016-05-25 06:17:33
Also in: kexec

On Tue, May 3, 2016 at 3:51 PM, Russell King [off-list ref] wrote:
quoted hunk ↗ jump to hunk
When kdump tries to map the program header, it fails to take account
of ehdr->e_phoff being an offset from the start of the ELF "file",
which causes:

Cannot mmap /dev/mem offset: 64 size: 392: Invalid argument

Ensure that we take account of the start address when mapping this.

This fix has been extracted from a larger patch by Vitaly Andrianov
adding support for Keystone 2.

Signed-off-by: Russell King <redacted>
---
 kdump/kdump.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kdump/kdump.c b/kdump/kdump.c
index 1f5b984..34d2149 100644
--- a/kdump/kdump.c
+++ b/kdump/kdump.c
@@ -284,7 +284,8 @@ int main(int argc, char **argv)
        }

        /* Get the program header */
-       phdr = map_addr(fd, sizeof(*phdr)*(ehdr->e_phnum), ehdr->e_phoff);
+       phdr = map_addr(fd, sizeof(*phdr)*(ehdr->e_phnum),
+                       start_addr + ehdr->e_phoff);
This is fine. But at the same time should n't we also fix the offset
for mmap of memory segments?  For memory segments, offset is
phdr[i].p_offset, and I do not see generate_new_headers() taking care
of start_addr.
        /* Collect up the notes */
        note_bytes = 0;
--
1.9.1
~Pratyush
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help