aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Egorenkov <[email protected]>2021-11-15 07:40:25 +0100
committerHeiko Carstens <[email protected]>2021-11-18 17:25:34 +0100
commit3b90954419d4c05651de9cce6d7632bcf6977678 (patch)
tree26a9c9c48af9907701f2760ebf87c8d2a938d8fc
parent6c122360cf2f4c5a856fcbd79b4485b7baec942a (diff)
s390/dump: fix copying to user-space of swapped kdump oldmem
This commit fixes a bug introduced by commit e9e7870f90e3 ("s390/dump: introduce boot data 'oldmem_data'"). OLDMEM_BASE was mistakenly replaced by oldmem_data.size instead of oldmem_data.start. This bug caused the following error during kdump: kdump.sh[878]: No program header covering vaddr 0x3434f5245found kexec bug? Fixes: e9e7870f90e3 ("s390/dump: introduce boot data 'oldmem_data'") Cc: [email protected] # 5.15+ Signed-off-by: Alexander Egorenkov <[email protected]> Reviewed-by: Marc Hartmayer <[email protected]> Reviewed-by: Heiko Carstens <[email protected]> Signed-off-by: Heiko Carstens <[email protected]>
-rw-r--r--arch/s390/kernel/crash_dump.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/s390/kernel/crash_dump.c b/arch/s390/kernel/crash_dump.c
index d72a6df058d7..785d54c9350c 100644
--- a/arch/s390/kernel/crash_dump.c
+++ b/arch/s390/kernel/crash_dump.c
@@ -191,8 +191,8 @@ static int copy_oldmem_user(void __user *dst, void *src, size_t count)
return rc;
} else {
/* Check for swapped kdump oldmem areas */
- if (oldmem_data.start && from - oldmem_data.size < oldmem_data.size) {
- from -= oldmem_data.size;
+ if (oldmem_data.start && from - oldmem_data.start < oldmem_data.size) {
+ from -= oldmem_data.start;
len = min(count, oldmem_data.size - from);
} else if (oldmem_data.start && from < oldmem_data.size) {
len = min(count, oldmem_data.size - from);