On Wed, Mar 6, 2013 at 2:44 PM, <[email protected]> wrote: > ------------------------------------------------------ > From: Vineet Gupta <[email protected]> > Subject: memblock: add assertion for zero allocation alignment > > This came to light when calling memblock allocator from arc port (for > copying flattended DT). If a "0" alignment is passed, the allocator > round_up() call incorrectly rounds up the size to 0. > > round_up(num, alignto) => ((num - 1) | (alignto -1)) + 1 > > While the obvious allocation failure causes kernel to panic, it is better > to warn the caller to fix the code. > > Tejun suggested that instead of BUG_ON(!align) - which might be > ineffective due to pending console init and such, it is better to WARN_ON, > and continue the boot with a reasonable default align. > > Caller passing @size need not be handled similarly as the subsequent > panic will indicate that anyhow. > > Signed-off-by: Vineet Gupta <[email protected]> > Cc: Yinghai Lu <[email protected]> > Cc: Wanpeng Li <[email protected]> > Cc: Ingo Molnar <[email protected]> > Acked-by: Tejun Heo <[email protected]> > Signed-off-by: Andrew Morton <[email protected]> > --- > > mm/memblock.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff -puN mm/memblock.c~memblock-add-assertion-for-zero-allocation-alignment > mm/memblock.c > --- a/mm/memblock.c~memblock-add-assertion-for-zero-allocation-alignment > +++ a/mm/memblock.c > @@ -771,6 +771,9 @@ static phys_addr_t __init memblock_alloc > { > phys_addr_t found; > > + if (WARN_ON(!align)) > + align = __alignof__(long long); > + > /* align @size to avoid excessive fragmentation on reserved array */ > size = round_up(size, align);
Hi, Peter, Do you agree that we should check align in round_up()? Thanks Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

