From: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx> Subject: mm/memblock.c: warn if zero alignment was requested After updating all memblock users to explicitly specify SMP_CACHE_BYTES alignment rather than use 0, it is still possible that uncovered users may sneak in. Add a WARN_ON_ONCE for such cases. [sfr@xxxxxxxxxxxxxxxx: use dump_stack() instead of WARN_ON_ONCE for the alignment checks] Link: http://lkml.kernel.org/r/20181016131927.6ceba6ab@xxxxxxxxxxxxxxxx [akpm@xxxxxxxxxxxxxxxxxxxx: add apologetic comment] Link: http://lkml.kernel.org/r/20181011060850.GA19822@rapoport-lnx Signed-off-by: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx> Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Reviewed-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/memblock.c | 11 +++++++++++ 1 file changed, 11 insertions(+) --- a/mm/memblock.c~memblock-warn-if-zero-alignment-was-requested +++ a/mm/memblock.c @@ -1247,6 +1247,12 @@ static phys_addr_t __init memblock_alloc { phys_addr_t found; + if (!align) { + /* Can't use WARNs this early in boot on powerpc */ + dump_stack(); + align = SMP_CACHE_BYTES; + } + found = memblock_find_in_range_node(size, align, start, end, nid, flags); if (found && !memblock_reserve(found, size)) { @@ -1369,6 +1375,11 @@ static void * __init memblock_alloc_inte if (WARN_ON_ONCE(slab_is_available())) return kzalloc_node(size, GFP_NOWAIT, nid); + if (!align) { + dump_stack(); + align = SMP_CACHE_BYTES; + } + if (max_addr > memblock.current_limit) max_addr = memblock.current_limit; again: _