If spanned_page is zero, it's pointless to calculate the number of absent_page. Also, the real size can be assigned to zero directly. Signed-off-by: Haifeng Xu <haifeng.xu@xxxxxxxxxx> --- mm/mm_init.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/mm/mm_init.c b/mm/mm_init.c index cf55bba04b23..898af4eb9ce2 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -1260,31 +1260,30 @@ static void __init calculate_node_totalpages(struct pglist_data *pgdat, struct zone *zone = pgdat->node_zones + i; unsigned long zone_start_pfn, zone_end_pfn; unsigned long spanned, absent; - unsigned long size, real_size; + unsigned long real_size; spanned = zone_spanned_pages_in_node(pgdat->node_id, i, node_start_pfn, node_end_pfn, &zone_start_pfn, &zone_end_pfn); - absent = zone_absent_pages_in_node(pgdat->node_id, i, - node_start_pfn, - node_end_pfn); - - size = spanned; - real_size = size - absent; - - if (size) + if (spanned) { + absent = zone_absent_pages_in_node(pgdat->node_id, i, + node_start_pfn, + node_end_pfn); + real_size = spanned - absent; zone->zone_start_pfn = zone_start_pfn; - else + } else { + real_size = 0; zone->zone_start_pfn = 0; - zone->spanned_pages = size; + } + zone->spanned_pages = spanned; zone->present_pages = real_size; #if defined(CONFIG_MEMORY_HOTPLUG) zone->present_early_pages = real_size; #endif - totalpages += size; + totalpages += spanned; realtotalpages += real_size; } -- 2.25.1