Patch "powerpc/fadump: fix PT_LOAD segment for boot memory area" has been added to the 5.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    powerpc/fadump: fix PT_LOAD segment for boot memory area

to the 5.18-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     powerpc-fadump-fix-pt_load-segment-for-boot-memory-a.patch
and it can be found in the queue-5.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 03c8c2971a65d5708b7f9298a1d4d6d342e9e865
Author: Hari Bathini <hbathini@xxxxxxxxxxxxx>
Date:   Wed Apr 6 15:08:37 2022 +0530

    powerpc/fadump: fix PT_LOAD segment for boot memory area
    
    [ Upstream commit 15eb77f873255cf9f4d703b63cfbd23c46579654 ]
    
    Boot memory area is setup as separate PT_LOAD segment in the vmcore
    as it is moved by f/w, on crash, to a destination address provided by
    the kernel. Having separate PT_LOAD segment helps in handling the
    different physical address and offset for boot memory area in the
    vmcore.
    
    Commit ced1bf52f477 ("powerpc/fadump: merge adjacent memory ranges to
    reduce PT_LOAD segements") inadvertly broke this pre-condition for
    cases where some of the first kernel memory is available adjacent to
    boot memory area. This scenario is rare but possible when memory for
    fadump could not be reserved adjacent to boot memory area owing to
    memory hole or such. Reading memory from a vmcore exported in such
    scenario provides incorrect data.  Fix it by ensuring no other region
    is folded into boot memory area.
    
    Fixes: ced1bf52f477 ("powerpc/fadump: merge adjacent memory ranges to reduce PT_LOAD segements")
    Signed-off-by: Hari Bathini <hbathini@xxxxxxxxxxxxx>
    Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20220406093839.206608-2-hbathini@xxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index 65562c4a0a69..dc2350b288cf 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -867,7 +867,6 @@ static int fadump_alloc_mem_ranges(struct fadump_mrange_info *mrange_info)
 				       sizeof(struct fadump_memory_range));
 	return 0;
 }
-
 static inline int fadump_add_mem_range(struct fadump_mrange_info *mrange_info,
 				       u64 base, u64 end)
 {
@@ -886,7 +885,12 @@ static inline int fadump_add_mem_range(struct fadump_mrange_info *mrange_info,
 		start = mem_ranges[mrange_info->mem_range_cnt - 1].base;
 		size  = mem_ranges[mrange_info->mem_range_cnt - 1].size;
 
-		if ((start + size) == base)
+		/*
+		 * Boot memory area needs separate PT_LOAD segment(s) as it
+		 * is moved to a different location at the time of crash.
+		 * So, fold only if the region is not boot memory area.
+		 */
+		if ((start + size) == base && start >= fw_dump.boot_mem_top)
 			is_adjacent = true;
 	}
 	if (!is_adjacent) {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux