From: Nathan Chancellor <nathan@kernel.org>
To: Rosen Penev <rosenp@gmail.com>
Cc: sparclinux@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
Andreas Larsson <andreas@gaisler.com>,
Nick Desaulniers <ndesaulniers@google.com>,
Bill Wendling <morbo@google.com>,
Justin Stitt <justinstitt@google.com>,
open list <linux-kernel@vger.kernel.org>,
"open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b"
<llvm@lists.linux.dev>
Subject: Re: [PATCH v2] sparc64: Define p4d_page() instead of stubbing it to NULL
Date: Fri, 9 Oct 2026 21:13:00 +0200 [thread overview]
Message-ID: <20261009191300.GA757048@ax162> (raw)
In-Reply-To: <20261008191711.223236-1-rosenp@gmail.com>
On Thu, Oct 08, 2026 at 12:17:11PM -0700, Rosen Penev wrote:
> A sparc64 allmodconfig build with LLVM fails in vmalloc_to_page():
>
> mm/vmalloc.c: error: performing pointer arithmetic on a null pointer
> has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
>
> sparc64 defines p4d_page() as NULL, on the assumption that it is only
> used by stubbed out hugetlb gup code. Generic code now uses it in
> vmalloc_to_page(), ptdump and KASAN. In vmalloc_to_page() the NULL is
> used in pointer arithmetic, which clang diagnoses even though the
> branch is unreachable on sparc64.
>
> Define p4d_page() as a NULL function to silence clang's warning on an
> unreachable branch. sparc64 has no p4d leaf mappings, so there is no
> functional change.
>
> Assisted-by: LLM
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
> v2: use a NULL function instead.
> arch/sparc/include/asm/pgtable_64.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h
> index 35a217bf6e5c..54e563eb0efd 100644
> --- a/arch/sparc/include/asm/pgtable_64.h
> +++ b/arch/sparc/include/asm/pgtable_64.h
> @@ -851,7 +851,7 @@ static inline pmd_t *pud_pgtable(pud_t pud)
> #define p4d_clear(p4dp) (p4d_val(*(p4dp)) = 0UL)
>
> /* only used by the stubbed out hugetlb gup code, should never be called */
> -#define p4d_page(p4d) NULL
> +#define p4d_page(p4d) static inline struct page *p4d_page(p4d_t p4d) { return NULL; }
Huh? Why did you keep the macro instead of replacing it with the static
inline function wholesale? This should have just be
-#define p4d_page(p4d) NULL
+static inline struct page *p4d_page(p4d_t p4d) { return NULL; }
no?
> #define pud_leaf pud_leaf
> static inline bool pud_leaf(pud_t pud)
> --
> 2.56.0
>
--
Cheers,
Nathan
next prev parent reply other threads:[~2026-10-09 19:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-08 19:17 [PATCH v2] sparc64: Define p4d_page() instead of stubbing it to NULL Rosen Penev
2026-10-09 10:12 ` kernel test robot
2026-10-09 19:13 ` Nathan Chancellor [this message]
2026-10-09 21:33 ` Rosen Penev
2026-10-09 20:51 ` kernel test robot
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=20261009191300.GA757048@ax162 \
--to=nathan@kernel.org \
--cc=andreas@gaisler.com \
--cc=davem@davemloft.net \
--cc=justinstitt@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=morbo@google.com \
--cc=ndesaulniers@google.com \
--cc=rosenp@gmail.com \
--cc=sparclinux@vger.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.