Unverified Commit b160ef62 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14780 CVE-2024-56677

Merge Pull Request from: @ci-robot 
 
PR sync from: Liao Chen <liaochen4@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/MAGXKRV37O6OKX2TL7KICGR7YJZPW5NY/ 
fix CVE-2024-56677

Ritesh Harjani (IBM) (2):
  powerpc/fadump: Refactor and prepare fadump_cma_init for late init
  powerpc/fadump: Move fadump_cma_init to setup_arch() after
    initmem_init()


-- 
2.34.1
 
https://gitee.com/src-openeuler/kernel/issues/IBEDPC 
 
Link:https://gitee.com/openeuler/kernel/pulls/14780

 

Reviewed-by: default avatarZhang Jianhua <chris.zjh@huawei.com>
Signed-off-by: default avatarZhang Peng <zhangpeng362@huawei.com>
parents c7146093 5d5c4533
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -32,4 +32,11 @@ extern int early_init_dt_scan_fw_dump(unsigned long node, const char *uname,
				      int depth, void *data);
extern int fadump_reserve_mem(void);
#endif

#if defined(CONFIG_FA_DUMP) && defined(CONFIG_CMA)
void fadump_cma_init(void);
#else
static inline void fadump_cma_init(void) { }
#endif

#endif /* _ASM_POWERPC_FADUMP_H */
+7 −16
Original line number Diff line number Diff line
@@ -80,27 +80,23 @@ static struct cma *fadump_cma;
 * But for some reason even if it fails we still have the memory reservation
 * with us and we can still continue doing fadump.
 */
static int __init fadump_cma_init(void)
void __init fadump_cma_init(void)
{
	unsigned long long base, size;
	int rc;

	if (!fw_dump.fadump_enabled)
		return 0;

	if (!fw_dump.fadump_supported || !fw_dump.fadump_enabled ||
			fw_dump.dump_active)
		return;
	/*
	 * Do not use CMA if user has provided fadump=nocma kernel parameter.
	 * Return 1 to continue with fadump old behaviour.
	 */
	if (fw_dump.nocma)
		return 1;
	if (fw_dump.nocma || !fw_dump.boot_memory_size)
		return;

	base = fw_dump.reserve_dump_area_start;
	size = fw_dump.boot_memory_size;

	if (!size)
		return 0;

	rc = cma_init_reserved_mem(base, size, 0, "fadump_cma", &fadump_cma);
	if (rc) {
		pr_err("Failed to init cma area for firmware-assisted dump,%d\n", rc);
@@ -110,7 +106,7 @@ static int __init fadump_cma_init(void)
		 * blocked from production system usage.  Hence return 1,
		 * so that we can continue with fadump.
		 */
		return 1;
		return;
	}

	/*
@@ -127,10 +123,7 @@ static int __init fadump_cma_init(void)
		cma_get_size(fadump_cma),
		(unsigned long)cma_get_base(fadump_cma) >> 20,
		fw_dump.reserve_dump_area_size);
	return 1;
}
#else
static int __init fadump_cma_init(void) { return 1; }
#endif /* CONFIG_CMA */

/* Scan the Firmware Assisted dump configuration details. */
@@ -647,8 +640,6 @@ int __init fadump_reserve_mem(void)

		pr_info("Reserved %lldMB of memory at %#016llx (System RAM: %lldMB)\n",
			(size >> 20), base, (memblock_phys_mem_size() >> 20));

		ret = fadump_cma_init();
	}

	return ret;
+4 −2
Original line number Diff line number Diff line
@@ -988,9 +988,11 @@ void __init setup_arch(char **cmdline_p)
	initmem_init();

	/*
	 * Reserve large chunks of memory for use by CMA for KVM and hugetlb. These must
	 * be called after initmem_init(), so that pageblock_order is initialised.
	 * Reserve large chunks of memory for use by CMA for fadump, KVM and
	 * hugetlb. These must be called after initmem_init(), so that
	 * pageblock_order is initialised.
	 */
	fadump_cma_init();
	kvm_cma_reserve();
	gigantic_hugetlb_cma_reserve();