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 <[email protected]> Cc: Stephen Rothwell <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: "Rafael J. Wysocki" <[email protected]> Cc: [email protected] Reported-by: Qian Cai <[email protected]> Signed-off-by: David Hildenbrand <[email protected]> --- @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

