• Vineet Gupta's avatar
    memblock: add assertion for zero allocation alignment · 94f3d3af
    Vineet Gupta authored
    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: default avatarVineet Gupta <vgupta@synopsys.com>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    94f3d3af
memblock.c 29.6 KB