From: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>
To: Sayali Patil <sayalip@linux.ibm.com>,
linuxppc-dev@lists.ozlabs.org, maddy@linux.ibm.com
Cc: aboorvad@linux.ibm.com, sshegde@linux.ibm.com,
riteshh@linux.ibm.com, hbathini@linux.ibm.com,
ming.lei@redhat.com, csander@purestorage.com, czhong@redhat.com,
venkat88@linux.ibm.com
Subject: Re: [PATCH v2 1/2] powerpc: fix KUAP warning in VMX usercopy path
Date: Tue, 3 Mar 2026 16:10:40 +0100 [thread overview]
Message-ID: <5eaa620f-17cb-4ecb-a1bd-eadc7df81574@kernel.org> (raw)
In-Reply-To: <65abe055-38b4-44ec-a7a0-7b4161677ead@kernel.org>
Hi Again,
Le 03/03/2026 à 15:57, Christophe Leroy (CS GROUP) a écrit :
> Hi,
>
> Le 03/03/2026 à 10:19, Sayali Patil a écrit :
>>
>> On 02/03/26 16:42, Christophe Leroy (CS GROUP) wrote:
>>>
>> Hi Christophe,
>> Thanks for the review.
>> With the suggested change, we are hitting a compilation error.
>>
>> The issue is related to how KUAP enforces the access direction.
>> allow_user_access() contains:
>>
>> BUILD_BUG_ON(!__builtin_constant_p(dir));
>>
>> which requires that the access direction is a compile-time constant.
>> If we pass a runtime value (for example, an unsigned long), the
>> __builtin_constant_p() check fails and triggers the following build
>> error.
>>
>> Error:
>> In function 'allow_user_access', inlined from '__copy_tofrom_user_vmx'
>> at arch/powerpc/lib/vmx-helper.c:19:3:
>> BUILD_BUG_ON failed: !__builtin_constant_p(dir) 706
>>
>>
>> The previous implementation worked because allow_user_access() was
>> invoked with enum
>> constants (READ, WRITE, READ_WRITE), which satisfied the
>> __builtin_constant_p() requirement.
>> So in this case, the function must be called with a compile-time
>> constant to satisfy KUAP.
>>
>> Please let me know if you would prefer a different approach.
>>
>
> Ah, right, I missed that. The problem should only be in vmx-helper.c
>
Thinking about it once more, I realised that powerpc does not define
INLINE_COPY_FROM_USER nor INLINE_COPY_TO_USER.
This means that raw_copy_from_user() and raw_copy_to_user() will in
really not be called much. Therefore __copy_tofrom_user_vmx() could
remain in uaccess.h as static __always_inline allthough it requires
exporting enter_vmx_usercopy() and exit_vmx_usercopy().
Christophe
next prev parent reply other threads:[~2026-03-03 15:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-28 13:53 [PATCH v2 1/2] powerpc: fix KUAP warning in VMX usercopy path Sayali Patil
2026-02-28 13:53 ` [PATCH v2 2/2] powerpc/selftests/copyloops: extend selftest to exercise __copy_tofrom_user_power7_vmx Sayali Patil
2026-03-02 11:12 ` [PATCH v2 1/2] powerpc: fix KUAP warning in VMX usercopy path Christophe Leroy (CS GROUP)
2026-03-03 9:19 ` Sayali Patil
2026-03-03 14:57 ` Christophe Leroy (CS GROUP)
2026-03-03 15:10 ` Christophe Leroy (CS GROUP) [this message]
2026-03-03 15:17 ` Christophe Leroy (CS GROUP)
2026-03-04 5:40 ` Sayali Patil
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=5eaa620f-17cb-4ecb-a1bd-eadc7df81574@kernel.org \
--to=chleroy@kernel.org \
--cc=aboorvad@linux.ibm.com \
--cc=csander@purestorage.com \
--cc=czhong@redhat.com \
--cc=hbathini@linux.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=ming.lei@redhat.com \
--cc=riteshh@linux.ibm.com \
--cc=sayalip@linux.ibm.com \
--cc=sshegde@linux.ibm.com \
--cc=venkat88@linux.ibm.com \
/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.