diff options
author | Alexander Egorenkov <egorenar@linux.ibm.com> | 2021-11-15 07:40:25 +0100 |
---|---|---|
committer | Heiko Carstens <hca@linux.ibm.com> | 2021-11-18 17:25:34 +0100 |
commit | 3b90954419d4c05651de9cce6d7632bcf6977678 (patch) | |
tree | 26a9c9c48af9907701f2760ebf87c8d2a938d8fc /arch/s390 | |
parent | 6c122360cf2f4c5a856fcbd79b4485b7baec942a (diff) | |
download | linux-stable-3b90954419d4c05651de9cce6d7632bcf6977678.tar.gz linux-stable-3b90954419d4c05651de9cce6d7632bcf6977678.tar.bz2 linux-stable-3b90954419d4c05651de9cce6d7632bcf6977678.zip |
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: stable@vger.kernel.org # 5.15+
Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/crash_dump.c | 4 |
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); |