summaryrefslogtreecommitdiff
path: root/elf_info.c
diff options
context:
space:
mode:
authorPratyush Anand <panand@redhat.com>2017-03-02 17:37:16 +0900
committerAtsushi Kumagai <ats-kumagai@wm.jp.nec.com>2017-03-03 13:52:45 +0900
commitf4ab6897a716d3f3959f6cb8cab27744eaecb5a6 (patch)
treeebc9ef57e4da677ec2c0429b1ed5616a07a137c0 /elf_info.c
parentf1363023b909df886eca5efcb64b78be9b8e6086 (diff)
[PATCH v3 4/7] elf_info: kcore: check for invalid physical address
kcore passes correct phys_start for direct mapped region and an invalid value (-1) for all other regions after the kernel commit 464920104bf7(/proc/kcore: update physical address for kcore ram and text). arch specific function is_phys_addr() accepts only virt_start. Therefore, check for valid phys_start in get_kcore_dump_loads(). Signed-off-by: Pratyush Anand <panand@redhat.com>
Diffstat (limited to 'elf_info.c')
-rw-r--r--elf_info.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/elf_info.c b/elf_info.c
index 65ff333..c5743b3 100644
--- a/elf_info.c
+++ b/elf_info.c
@@ -881,7 +881,8 @@ int get_kcore_dump_loads(void)
for (i = 0; i < num_pt_loads; ++i) {
struct pt_load_segment *p = &pt_loads[i];
- if (!is_phys_addr(p->virt_start))
+ if (p->phys_start == NOT_PADDR
+ || !is_phys_addr(p->virt_start))
continue;
loads++;
}
@@ -901,7 +902,8 @@ int get_kcore_dump_loads(void)
for (i = 0, j = 0; i < num_pt_loads; ++i) {
struct pt_load_segment *p = &pt_loads[i];
- if (!is_phys_addr(p->virt_start))
+ if (p->phys_start == NOT_PADDR
+ || !is_phys_addr(p->virt_start))
continue;
if (j >= loads)
return FALSE;