From 6c4126592933e73d40c49a80808b59d43c8a492b Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Fri, 20 Apr 2012 08:31:34 -0700 Subject: [PATCH] --- yaml --- r: 299392 b: refs/heads/master c: b3dc627cabb33fc95f93da78457770c1b2a364d2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/memblock.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 4ed2b7306cfe..f8fc171f1e68 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 310eb776501af8412c570c4bcddc9ab5cecf3d7a +refs/heads/master: b3dc627cabb33fc95f93da78457770c1b2a364d2 diff --git a/trunk/mm/memblock.c b/trunk/mm/memblock.c index 99f285599501..a44eab3157f8 100644 --- a/trunk/mm/memblock.c +++ b/trunk/mm/memblock.c @@ -330,6 +330,9 @@ static int __init_memblock memblock_add_region(struct memblock_type *type, phys_addr_t end = base + memblock_cap_size(base, &size); int i, nr_new; + if (!size) + return 0; + /* special case for empty array */ if (type->regions[0].size == 0) { WARN_ON(type->cnt != 1 || type->total_size); @@ -430,6 +433,9 @@ static int __init_memblock memblock_isolate_range(struct memblock_type *type, *start_rgn = *end_rgn = 0; + if (!size) + return 0; + /* we'll create at most two more regions */ while (type->cnt + 2 > type->max) if (memblock_double_array(type) < 0) @@ -514,7 +520,6 @@ int __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size) (unsigned long long)base, (unsigned long long)base + size, (void *)_RET_IP_); - BUG_ON(0 == size); return memblock_add_region(_rgn, base, size, MAX_NUMNODES); }