From: Mike Rapoport <rppt@kernel.org>
To: Waiman Long <longman@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Ingo Molnar <mingo@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Justin Forbes <jforbes@redhat.com>,
Rafael Aquini <aquini@redhat.com>
Subject: Re: [PATCH] mm/sparsemem: Fix 'mem_section' will never be NULL gcc 12 warning
Date: Wed, 2 Feb 2022 08:07:55 +0200 [thread overview]
Message-ID: <Yfofu76KPbT2S9Ni@kernel.org> (raw)
In-Reply-To: <20220201192924.672675-1-longman@redhat.com>
On Tue, Feb 01, 2022 at 02:29:24PM -0500, Waiman Long wrote:
> The gcc 12 compiler reports a warning on the following code:
>
> static inline struct mem_section *__nr_to_section(unsigned long nr)
> {
> #ifdef CONFIG_SPARSEMEM_EXTREME
> if (!mem_section)
> return NULL;
> #endif
> :
>
> With CONFIG_SPARSEMEM_EXTREME on, the mem_section definition is
>
> extern struct mem_section **mem_section;
>
> Obviously, mem_section cannot be NULL, but *mem_section can be if memory
> hasn't been allocated for the dynamic mem_section[] array yet. Fix this
> warning by checking for "!*mem_section" instead.
Hmm, if mem_section cannot be NULL, it means if will be never allocated,
no?
static void __init memory_present(int nid, unsigned long start, unsigned long end)
{
unsigned long pfn;
#ifdef CONFIG_SPARSEMEM_EXTREME
if (unlikely(!mem_section)) {
unsigned long size, align;
size = sizeof(struct mem_section *) * NR_SECTION_ROOTS;
align = 1 << (INTERNODE_CACHE_SHIFT);
mem_section = memblock_alloc(size, align);
if (!mem_section)
panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
__func__, size, align);
}
#endif
...
>
> Fixes: 83e3c48729d9 ("mm/sparsemem: Allocate mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y")
> Signed-off-by: Waiman Long <longman@redhat.com>
> ---
> include/linux/mmzone.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index aed44e9b5d89..bd1b19925f3b 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -1390,7 +1390,7 @@ static inline unsigned long *section_to_usemap(struct mem_section *ms)
> static inline struct mem_section *__nr_to_section(unsigned long nr)
> {
> #ifdef CONFIG_SPARSEMEM_EXTREME
> - if (!mem_section)
> + if (!*mem_section)
> return NULL;
> #endif
> if (!mem_section[SECTION_NR_TO_ROOT(nr)])
> --
> 2.27.0
>
>
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2022-02-02 6:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-01 19:29 [PATCH] mm/sparsemem: Fix 'mem_section' will never be NULL gcc 12 warning Waiman Long
2022-02-01 19:34 ` Waiman Long
2022-02-02 6:07 ` Mike Rapoport [this message]
2022-02-19 10:27 ` Hector Martin
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=Yfofu76KPbT2S9Ni@kernel.org \
--to=rppt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=aquini@redhat.com \
--cc=jforbes@redhat.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=longman@redhat.com \
--cc=mingo@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.