lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240718021822.1545976-3-quic_obabatun@quicinc.com>
Date: Wed, 17 Jul 2024 19:18:22 -0700
From: Oreoluwa Babatunde <quic_obabatun@...cinc.com>
To: <dalias@...c.org>, <glaubitz@...sik.fu-berlin.de>,
        <ysato@...rs.sourceforge.jp>
CC: <kernel@...cinc.com>, <linux-kernel@...r.kernel.org>,
        <linux-sh@...r.kernel.org>, <robh+dt@...nel.org>,
        Oreoluwa Babatunde
	<quic_obabatun@...cinc.com>
Subject: [PATCH v5 2/2] sh: Restructure setup code to reserve memory regions earlier

The unflatten_device_tree() function contains a call to
memblock_alloc(). This is a problem because this allocation is done
before any of the reserved memory regions are set aside in
paging_init().
As a result, there is a possibility for memblock to unknowingly allocate
from any of the memory regions that are meant to be reserved.

Hence, restructure the setup code to reserve the memory regions before
any allocation is done by the unflatten_devicetree*() using memblock.

Signed-off-by: Oreoluwa Babatunde <quic_obabatun@...cinc.com>
---
 arch/sh/mm/init.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 643e3617c6a6..857ce8cc84bd 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -249,6 +249,7 @@ void __init early_reserve_mem(void)
 	u32 zero_base = (u32)__MEMORY_START + (u32)PHYSICAL_OFFSET;
 	u32 start = zero_base + (u32)CONFIG_ZERO_PAGE_OFFSET;
 
+	sh_mv.mv_mem_init();
 	/*
 	 * Partially used pages are not usable - thus
 	 * we are rounding upwards:
@@ -274,14 +275,6 @@ void __init early_reserve_mem(void)
 	 */
 	check_for_initrd();
 	reserve_crashkernel();
-}
-
-void __init paging_init(void)
-{
-	unsigned long max_zone_pfns[MAX_NR_ZONES];
-	unsigned long vaddr, end;
-
-	sh_mv.mv_mem_init();
 
 	/*
 	 * Once the early reservations are out of the way, give the
@@ -289,6 +282,12 @@ void __init paging_init(void)
 	 */
 	if (sh_mv.mv_mem_reserve)
 		sh_mv.mv_mem_reserve();
+}
+
+void __init paging_init(void)
+{
+	unsigned long max_zone_pfns[MAX_NR_ZONES];
+	unsigned long vaddr, end;
 
 	memblock_enforce_memory_limit(memory_limit);
 	memblock_allow_resize();
-- 
2.34.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ