diff options
author | Pratyush Anand <panand@redhat.com> | 2017-03-02 17:37:16 +0900 |
---|---|---|
committer | Atsushi Kumagai <ats-kumagai@wm.jp.nec.com> | 2017-03-03 13:52:45 +0900 |
commit | f4ab6897a716d3f3959f6cb8cab27744eaecb5a6 (patch) | |
tree | ebc9ef57e4da677ec2c0429b1ed5616a07a137c0 /elf_info.c | |
parent | f1363023b909df886eca5efcb64b78be9b8e6086 (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.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -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; |