diff mbox series

arm64: kdump: update ppos when reading elfcorehdr

Message ID 20210319205054.743368-1-pasha.tatashin@soleen.com (mailing list archive)
State New, archived
Headers show
Series arm64: kdump: update ppos when reading elfcorehdr | expand

Commit Message

Pasha Tatashin March 19, 2021, 8:50 p.m. UTC
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>
---
 arch/arm64/kernel/crash_dump.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Tyler Hicks March 19, 2021, 9:07 p.m. UTC | #1
On 2021-03-19 16:50:54, Pavel Tatashin wrote:
> 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.
> 

Fixes: e62aaeac426a ("arm64: kdump: provide /proc/vmcore file")
Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>

Tyler

> Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
> ---
>  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.25.1
>
Will Deacon March 22, 2021, 1:19 p.m. UTC | #2
On Fri, 19 Mar 2021 16:50:54 -0400, Pavel Tatashin wrote:
> 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.

Applied to arm64 (for-next/fixes), thanks!

[1/1] arm64: kdump: update ppos when reading elfcorehdr
      https://git.kernel.org/arm64/c/141f8202cfa4

Cheers,
diff mbox series

Patch

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;
 }