lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <20230525040150.1588-2-haifeng.xu@shopee.com>
Date:   Thu, 25 May 2023 04:01:49 +0000
From:   Haifeng Xu <haifeng.xu@...pee.com>
To:     akpm@...ux-foundation.org
Cc:     mhocko@...e.com, david@...hat.com, linux-mm@...ck.org,
        linux-kernel@...r.kernel.org, Haifeng Xu <haifeng.xu@...pee.com>
Subject: [PATCH 2/3] mm/mm_init.c: account absent_page only if spanned_page is non-zero

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@...pee.com>
---
 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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ