| From e10f3db11a27f349e4b8709e8dab7c96d275d1a5 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 19 Mar 2021 16:50:54 -0400 |
| Subject: arm64: kdump: update ppos when reading elfcorehdr |
| |
| From: Pavel Tatashin <pasha.tatashin@soleen.com> |
| |
| [ Upstream commit 141f8202cfa4192c3af79b6cbd68e7760bb01b5a ] |
| |
| The ppos points to a position in the old kernel memory (and in case of |
| arm64 in the crash kernel since elfcorehdr is passed as a segment). The |
| function should update the ppos by the amount that was read. This bug is |
| not exposed by accident, but other platforms update this value properly. |
| So, fix it in ARM64 version of elfcorehdr_read() as well. |
| |
| Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com> |
| Fixes: e62aaeac426a ("arm64: kdump: provide /proc/vmcore file") |
| Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com> |
| Link: https://lore.kernel.org/r/20210319205054.743368-1-pasha.tatashin@soleen.com |
| Signed-off-by: Will Deacon <will@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm64/kernel/crash_dump.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/arch/arm64/kernel/crash_dump.c b/arch/arm64/kernel/crash_dump.c |
| index e6e284265f19..58303a9ec32c 100644 |
| --- a/arch/arm64/kernel/crash_dump.c |
| +++ b/arch/arm64/kernel/crash_dump.c |
| @@ -64,5 +64,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf, |
| ssize_t elfcorehdr_read(char *buf, size_t count, u64 *ppos) |
| { |
| memcpy(buf, phys_to_virt((phys_addr_t)*ppos), count); |
| + *ppos += count; |
| + |
| return count; |
| } |
| -- |
| 2.30.1 |
| |