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