aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2014-01-27 20:06:52 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-28 00:02:39 -0500
commitfb5bb60cd004a00c1d11db680a37942ecdedb1c5 (patch)
tree4abcd05569f18c8d1d5b08ccbefd54aacc9ed0ad /mm
parent4ce7a8697cb795fda6bdf082c14743b4bcd551c3 (diff)
memblock: don't silently align size in memblock_virt_alloc()
In original __alloc_memory_core_early() for bootmem wrapper, we do not align size silently. We should not do that, as later free with old size will leave some range not freed. It's obvious that code is copied from memblock_base_nid(), and that code is wrong for the same reason. Also remove that in memblock_alloc_base. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/memblock.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/mm/memblock.c b/mm/memblock.c
index 9c0aeef19440..87d21a6ff63c 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -984,9 +984,6 @@ static phys_addr_t __init memblock_alloc_base_nid(phys_addr_t size,
984 if (!align) 984 if (!align)
985 align = SMP_CACHE_BYTES; 985 align = SMP_CACHE_BYTES;
986 986
987 /* align @size to avoid excessive fragmentation on reserved array */
988 size = round_up(size, align);
989
990 found = memblock_find_in_range_node(size, align, 0, max_addr, nid); 987 found = memblock_find_in_range_node(size, align, 0, max_addr, nid);
991 if (found && !memblock_reserve(found, size)) 988 if (found && !memblock_reserve(found, size))
992 return found; 989 return found;
@@ -1080,9 +1077,6 @@ static void * __init memblock_virt_alloc_internal(
1080 if (!align) 1077 if (!align)
1081 align = SMP_CACHE_BYTES; 1078 align = SMP_CACHE_BYTES;
1082 1079
1083 /* align @size to avoid excessive fragmentation on reserved array */
1084 size = round_up(size, align);
1085
1086again: 1080again:
1087 alloc = memblock_find_in_range_node(size, align, min_addr, max_addr, 1081 alloc = memblock_find_in_range_node(size, align, min_addr, max_addr,
1088 nid); 1082 nid);