]> git.baikalelectronics.ru Git - kernel.git/commitdiff
s390/dump: fix os_info virtual vs physical address confusion
authorAlexander Gordeev <agordeev@linux.ibm.com>
Wed, 26 Jan 2022 12:47:59 +0000 (13:47 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:24:12 +0000 (14:24 +0200)
[ Upstream commit 1e40fc2a1c38c88e68858c2e9194cfc3e397814b ]

Due to historical reasons os_info handling functions misuse
the notion of physical vs virtual addresses difference.

Note: this does not fix a bug currently, since virtual
and physical addresses are identical.

Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/os_info.c

index e548844dde28d358ae13429037bb3b0847b0d856..6b5b64e67eee06fb1e2f93de934cdaf5a72c7712 100644 (file)
@@ -46,7 +46,7 @@ void os_info_crashkernel_add(unsigned long base, unsigned long size)
  */
 void os_info_entry_add(int nr, void *ptr, u64 size)
 {
-       os_info.entry[nr].addr = (u64)(unsigned long)ptr;
+       os_info.entry[nr].addr = __pa(ptr);
        os_info.entry[nr].size = size;
        os_info.entry[nr].csum = (__force u32)csum_partial(ptr, size, 0);
        os_info.csum = os_info_csum(&os_info);
@@ -63,7 +63,7 @@ void __init os_info_init(void)
        os_info.version_minor = OS_INFO_VERSION_MINOR;
        os_info.magic = OS_INFO_MAGIC;
        os_info.csum = os_info_csum(&os_info);
-       mem_assign_absolute(S390_lowcore.os_info, (unsigned long) ptr);
+       mem_assign_absolute(S390_lowcore.os_info, __pa(ptr));
 }
 
 #ifdef CONFIG_CRASH_DUMP