From: sashiko-bot@kernel.org
To: "David Hildenbrand (Arm)" <david@kernel.org>
Cc: linux-cxl@vger.kernel.org
Subject: Re: [PATCH v2 08/13] mm/sparse: move __highest_used_section_nr handling
Date: Mon, 21 Sep 2026 20:17:11 +0000 [thread overview]
Message-ID: <20260921201712.587C31F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-8-54d81d65e125@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] mm: uninitialized variable section_nr leads to build failure and logic error
--
commit c9ec175770a339f5cfe5ee3f81573978aba08b75
Author: David Hildenbrand (Arm) <david@kernel.org>
mm/sparse: move __highest_used_section_nr handling
This commit prepares for removing __section_mark_present() by moving
__highest_used_section_nr handling into its callers. In
sparse_sections_init(), it updates the highest used section number to
the last processed section_nr.
> diff --git a/mm/sparse.c b/mm/sparse.c
> index bb89017254f4d..a0f50ca5acf5a 100644
> --- a/mm/sparse.c
> +++ b/mm/sparse.c
> @@ -177,7 +177,7 @@ static inline unsigned long first_present_section_nr(void)
>
> void __init sparse_sections_init(void)
> {
> - unsigned long pfn, start_pfn, end_pfn;
> + unsigned long pfn, start_pfn, end_pfn, section_nr;
> int i, nid;
>
> sparse_extreme_init();
[ ... ]
> @@ -187,9 +187,9 @@ void __init sparse_sections_init(void)
> mminit_validate_memmodel_limits(&start_pfn, &end_pfn);
>
> for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) {
> - unsigned long section_nr = pfn_to_section_nr(pfn);
> struct mem_section *ms;
>
> + section_nr = pfn_to_section_nr(pfn);
> sparse_index_init(section_nr, nid);
[ ... ]
> @@ -201,6 +201,7 @@ void __init sparse_sections_init(void)
> __section_mark_present(ms, section_nr);
> }
> }
> + __highest_used_section_nr = section_nr;
[Severity: Medium]
Does this assignment introduce a regression by copying an uninitialized stack
value into __highest_used_section_nr?
In sparse_sections_init(), section_nr is declared without initialization.
If no memory regions exist, or if mminit_validate_memmodel_limits() clamps
start_pfn such that start_pfn >= end_pfn, the inner loop will not execute.
When the outer loops conclude, this unconditionally copies the potentially
uninitialized stack value into a global state variable. Because
__highest_used_section_nr bounds many loops across the mm subsystem, this
regression could cause infinite loops and kernel hangs during boot.
Additionally, without static proof that the loops execute at least once,
compilers might issue a -Wmaybe-uninitialized warning that breaks kernel
builds enforcing CONFIG_WERROR.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org?part=8
next prev parent reply other threads:[~2026-09-21 20:17 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 19:58 [PATCH v2 00/13] mm/sparse: remove SECTION_MARKED_PRESENT and further cleanups David Hildenbrand (Arm)
2026-09-21 19:58 ` [PATCH v2 01/13] mm/sparse: move mem_section init to sparse_extreme_init() David Hildenbrand (Arm)
2026-09-21 23:12 ` Zi Yan
2026-09-21 19:58 ` [PATCH v2 02/13] mm/sparse: refactor sparse_sections_init() David Hildenbrand (Arm)
2026-09-21 19:58 ` [PATCH v2 03/13] mm/sparse: move initialization of section metadata to sparse_metadata_init() David Hildenbrand (Arm)
2026-09-21 19:58 ` [PATCH v2 04/13] mm/sparse: rename and cleanup sparse_init_nid() David Hildenbrand (Arm)
2026-09-21 19:58 ` [PATCH v2 05/13] mm/sparse: cleanup sparse_init_one_section() David Hildenbrand (Arm)
2026-09-21 19:58 ` [PATCH v2 06/13] mm/sparse: rename __highest_present_section_nr to __highest_used_section_nr David Hildenbrand (Arm)
2026-09-21 19:58 ` [PATCH v2 07/13] mm/sparse: remove pfn_in_present_section() David Hildenbrand (Arm)
2026-09-21 19:59 ` [PATCH v2 08/13] mm/sparse: move __highest_used_section_nr handling David Hildenbrand (Arm)
2026-09-21 20:17 ` sashiko-bot [this message]
2026-09-22 4:24 ` Oscar Salvador (SUSE)
2026-09-22 10:22 ` David Hildenbrand (Arm)
2026-09-21 19:59 ` [PATCH v2 09/13] scripts/gdb: mm.py: remove fallbacks for SECTION_HAS_MEM_MAP and SECTION_IS_EARLY David Hildenbrand (Arm)
2026-09-22 6:49 ` Seongjun Hong
2026-09-21 19:59 ` [PATCH v2 10/13] mm/sparse: remove SECTION_MARKED_PRESENT David Hildenbrand (Arm)
2026-09-27 19:20 ` David Carlier
2026-09-28 7:28 ` David Hildenbrand (Arm)
2026-09-28 8:01 ` Dave Young
2026-09-28 8:50 ` David Hildenbrand (Arm)
2026-09-28 8:31 ` Baoquan He
2026-09-21 19:59 ` [PATCH v2 11/13] mm/sparse: remove flags parameter from sparse_init_one_section() David Hildenbrand (Arm)
2026-09-21 19:59 ` [PATCH v2 12/13] fs/proc/page: clarify comment in get_max_dump_pfn() David Hildenbrand (Arm)
2026-09-21 19:59 ` [PATCH v2 13/13] mm/memory_hotplug: drop CONFIG_HAVE_ARCH_PFN_VALID handling from pfn_to_online_page() David Hildenbrand (Arm)
2026-09-22 4:25 ` Oscar Salvador (SUSE)
2026-09-21 22:53 ` [PATCH v2 00/13] mm/sparse: remove SECTION_MARKED_PRESENT and further cleanups Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260921201712.587C31F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=david@kernel.org \
--cc=linux-cxl@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox