bpf: fix panic in stack_map_get_build_id() on i386 and arm32
[ Upstream commitbeaf3d1901] As Naresh reported, test_stacktrace_build_id() causes panic on i386 and arm32 systems. This is caused by page_address() returns NULL in certain cases. This patch fixes this error by using kmap_atomic/kunmap_atomic instead of page_address. Fixes:615755a77b(" bpf: extend stackmap to save binary_build_id+offset instead of address") Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org> Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
06b919a517
commit
2f3480e340
1 changed files with 2 additions and 1 deletions
|
|
@ -260,7 +260,7 @@ static int stack_map_get_build_id(struct vm_area_struct *vma,
|
|||
return -EFAULT; /* page not mapped */
|
||||
|
||||
ret = -EINVAL;
|
||||
page_addr = page_address(page);
|
||||
page_addr = kmap_atomic(page);
|
||||
ehdr = (Elf32_Ehdr *)page_addr;
|
||||
|
||||
/* compare magic x7f "ELF" */
|
||||
|
|
@ -276,6 +276,7 @@ static int stack_map_get_build_id(struct vm_area_struct *vma,
|
|||
else if (ehdr->e_ident[EI_CLASS] == ELFCLASS64)
|
||||
ret = stack_map_get_build_id_64(page_addr, build_id);
|
||||
out:
|
||||
kunmap_atomic(page_addr);
|
||||
put_page(page);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue