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 for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <4BACF1CB020000780003737A@vpn.id2.novell.com>
Date:	Fri, 26 Mar 2010 16:41:31 +0000
From:	"Jan Beulich" <JBeulich@...ell.com>
To:	<yinghai@...nel.org>, <hpa@...or.com>
Cc:	<linux-kernel@...r.kernel.org>
Subject: [PATCH] fix allocation done in get_free_all_memory_range()

Even when get_max_mapped() returns a value beyond the DMA32 range,
this can't be taken to mean an alocation from that range will succeed.
Hence, the code should still fall back to an allocation starting at
the bottom of memory if the first one failed.

Signed-off-by: Jan Beulich <jbeulich@...ell.com>

---
 kernel/early_res.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

--- linux-2.6.34-rc2/kernel/early_res.c	2010-03-25 15:23:45.000000000 +0100
+++ 2.6.34-rc2-get_free_all_memory_range-retry-alloc/kernel/early_res.c	2010-03-26 14:49:41.000000000 +0100
@@ -387,9 +387,7 @@ static void __init subtract_early_res(st
 int __init get_free_all_memory_range(struct range **rangep, int nodeid)
 {
 	int i, count;
-	u64 start = 0, end;
-	u64 size;
-	u64 mem;
+	u64 end, size, mem = -1ULL;
 	struct range *range;
 	int nr_range;
 
@@ -403,9 +401,11 @@ int __init get_free_all_memory_range(str
 	end = get_max_mapped();
 #ifdef MAX_DMA32_PFN
 	if (end > (MAX_DMA32_PFN << PAGE_SHIFT))
-		start = MAX_DMA32_PFN << PAGE_SHIFT;
+		mem = find_fw_memmap_area(MAX_DMA32_PFN << PAGE_SHIFT, end,
+					  size, sizeof(struct range));
 #endif
-	mem = find_fw_memmap_area(start, end, size, sizeof(struct range));
+	if (mem == -1ULL)
+		mem = find_fw_memmap_area(0, end, size, sizeof(struct range));
 	if (mem == -1ULL)
 		panic("can not find more space for range free");
 



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ