diff --git a/[refs] b/[refs] index a3236ac9ad91..a2a13c0bbbfd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d9b2b2a277219d4812311d995054ce4f95067725 +refs/heads/master: eea89e13a9c61d3928223d2f9bf2295e22e0efb6 diff --git a/trunk/lib/lmb.c b/trunk/lib/lmb.c index 98078b4ec20e..6390d63a2a0e 100644 --- a/trunk/lib/lmb.c +++ b/trunk/lib/lmb.c @@ -245,6 +245,11 @@ static unsigned long lmb_align_down(unsigned long addr, unsigned long size) return addr & ~(size - 1); } +static unsigned long lmb_align_up(unsigned long addr, unsigned long size) +{ + return (addr + (size - 1)) & ~(size - 1); +} + unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align, unsigned long max_addr) { @@ -281,7 +286,8 @@ unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align, if (i < 0) return 0; - lmb_add_region(&lmb.reserved, base, size); + if (lmb_add_region(&lmb.reserved, base, lmb_align_up(size, align)) < 0) + return 0; return base; }