[PATCH] mm/sparse: simplify the vmemmap alignment check

From: Kaitao Cheng

Date: Wed Oct 28 2026 - 08:15:16 EST


From: Kaitao Cheng <chengkaitao@xxxxxxxxxx>

sparse_init() is called only once during boot, and the vmemmap alignment
check is outside any loop, so VM_WARN_ON_ONCE() provides no benefit over
VM_WARN_ON() here.

Use VM_WARN_ON() and fold compound_info_has_mask() into its condition,
preserving short-circuit evaluation.

Signed-off-by: Kaitao Cheng <chengkaitao@xxxxxxxxxx>
---
mm/sparse.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/mm/sparse.c b/mm/sparse.c
index 6acb628c8a73..248bee2d39b9 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -277,10 +277,8 @@ static void __init sparse_metadata_init(void)
*/
void __init sparse_init(void)
{
- if (compound_info_has_mask()) {
- VM_WARN_ON_ONCE(!IS_ALIGNED((unsigned long) pfn_to_page(0),
- MAX_FOLIO_VMEMMAP_ALIGN));
- }
+ VM_WARN_ON(compound_info_has_mask() && !IS_ALIGNED(
+ (unsigned long)pfn_to_page(0), MAX_FOLIO_VMEMMAP_ALIGN));

sparse_metadata_init();
sparse_init_subsection_map();
--
2.53.0