The start and the size are 0 for online nodes without any memory. Avoid the underflow, resulting in a very long loop and soft lockups. Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx> Cc: linux-mm@xxxxxxxxx Reported-by: Qian Cai <cai@xxxxxx> Signed-off-by: David Hildenbrand <david@xxxxxxxxxx> --- @Andrew, Stephen - sorry for the noise *again*. Feel feel to either apply this patch or drop the respective patches for now. --- drivers/base/memory.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 972c5336bebf..7595a4f0068f 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c @@ -868,6 +868,9 @@ int walk_memory_blocks(unsigned long start, unsigned long size, unsigned long block_id; int ret = 0; + if (!size) + return 0; + for (block_id = start_block_id; block_id <= end_block_id; block_id++) { mem = find_memory_block_by_id(block_id); if (!mem) -- 2.21.0