From: Peter Zijlstra <peterz@infradead•org>
To: Andrew Cooper <andrew.cooper@citrix•com>
Cc: "Thomas Gleixner" <tglx@linutronix•de>,
LKML <linux-kernel@vger•kernel.org>,
"Christophe Leroy" <christophe.leroy@csgroup•eu>,
"Mathieu Desnoyers" <mathieu.desnoyers@efficios•com>,
"Andrew Cooper" <andrew.cooper3@citrix•com>,
"Linus Torvalds" <torvalds@linux-foundation•org>,
"kernel test robot" <lkp@intel•com>,
"Russell King" <linux@armlinux•org.uk>,
linux-arm-kernel@lists•infradead.org, x86@kernel•org,
"Madhavan Srinivasan" <maddy@linux•ibm.com>,
"Michael Ellerman" <mpe@ellerman•id.au>,
"Nicholas Piggin" <npiggin@gmail•com>,
linuxppc-dev@lists•ozlabs.org, "Paul Walmsley" <pjw@kernel•org>,
"Palmer Dabbelt" <palmer@dabbelt•com>,
linux-riscv@lists•infradead.org,
"Heiko Carstens" <hca@linux•ibm.com>,
"Christian Borntraeger" <borntraeger@linux•ibm.com>,
"Sven Schnelle" <svens@linux•ibm.com>,
linux-s390@vger•kernel.org,
"Julia Lawall" <Julia.Lawall@inria•fr>,
"Nicolas Palix" <nicolas.palix@imag•fr>,
"Darren Hart" <dvhart@infradead•org>,
"Davidlohr Bueso" <dave@stgolabs•net>,
"André Almeida" <andrealmeid@igalia•com>,
"Alexander Viro" <viro@zeniv•linux.org.uk>,
"Christian Brauner" <brauner@kernel•org>,
"Jan Kara" <jack@suse•cz>,
linux-fsdevel@vger•kernel.org
Subject: Re: [patch V3 07/12] uaccess: Provide scoped masked user access regions
Date: Fri, 17 Oct 2025 13:25:04 +0200 [thread overview]
Message-ID: <20251017112504.GE3245006@noisy.programming.kicks-ass.net> (raw)
In-Reply-To: <adba2f37-85fc-45fa-b93b-9b86ab3493f3@citrix.com>
On Fri, Oct 17, 2025 at 12:08:24PM +0100, Andrew Cooper wrote:
> On 17/10/2025 11:09 am, Thomas Gleixner wrote:
> > --- a/include/linux/uaccess.h
> > +++ b/include/linux/uaccess.h
> > +#define __scoped_masked_user_access(_mode, _uptr, _size, _elbl) \
> > +for (bool ____stop = false; !____stop; ____stop = true) \
> > + for (typeof((_uptr)) _tmpptr = __scoped_user_access_begin(_mode, _uptr, _size, _elbl); \
> > + !____stop; ____stop = true) \
> > + for (CLASS(masked_user_##_mode##_access, scope) (_tmpptr); !____stop; \
> > + ____stop = true) \
> > + /* Force modified pointer usage within the scope */ \
> > + for (const typeof((_uptr)) _uptr = _tmpptr; !____stop; ____stop = true) \
> > + if (1)
> > +
>
> Truly a thing of beauty. At least the end user experience is nice.
>
> One thing to be aware of is that:
>
> scoped_masked_user_rw_access(ptr, efault) {
> unsafe_get_user(rval, &ptr->rval, efault);
> unsafe_put_user(wval, &ptr->wval, efault);
> } else {
> // unreachable
> }
>
> will compile. Instead, I think you want the final line of the macro to
> be "if (0) {} else" to prevent this.
>
>
> While we're on the subject, can we find some C standards people to lobby.
>
> C2Y has a proposal to introduce "if (int foo =" syntax to generalise the
> for() loop special case. Can we please see about fixing the restriction
> of only allowing a single type per loop? This example could be a
> single loop if it weren't for that restriction.
So elsewhere, Linus suggested to use a struct to get around that. See
for example this lovely thing:
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?h=locking/core&id=1bc5d8cefd0d9768dc03c83140dd54c552bea470
next prev parent reply other threads:[~2025-10-17 11:25 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-17 10:08 [patch V3 00/12] uaccess: Provide and use scopes for user masked access Thomas Gleixner
2025-10-17 10:08 ` [patch V3 01/12] ARM: uaccess: Implement missing __get_user_asm_dword() Thomas Gleixner
2025-10-17 12:36 ` Mathieu Desnoyers
2025-10-17 10:08 ` [patch V3 02/12] uaccess: Provide ASM GOTO safe wrappers for unsafe_*_user() Thomas Gleixner
2025-10-17 12:43 ` Mathieu Desnoyers
2025-10-17 12:48 ` Mathieu Desnoyers
2025-10-17 10:09 ` [patch V3 03/12] x86/uaccess: Use unsafe wrappers for ASM GOTO Thomas Gleixner
2025-10-17 10:09 ` [patch V3 04/12] powerpc/uaccess: " Thomas Gleixner
2025-10-17 10:09 ` [patch V3 05/12] riscv/uaccess: " Thomas Gleixner
2025-10-17 10:09 ` [patch V3 06/12] s390/uaccess: " Thomas Gleixner
2025-10-17 10:09 ` [patch V3 07/12] uaccess: Provide scoped masked user access regions Thomas Gleixner
2025-10-17 11:08 ` Andrew Cooper
2025-10-17 11:21 ` Thomas Gleixner
2025-10-17 11:29 ` Andrew Cooper
2025-10-17 11:25 ` Peter Zijlstra [this message]
2025-10-17 13:23 ` Mathieu Desnoyers
2025-10-20 18:28 ` David Laight
2025-10-21 14:29 ` Thomas Gleixner
2025-10-21 14:42 ` Thomas Gleixner
2025-10-21 20:52 ` David Laight
2025-10-21 14:44 ` Peter Zijlstra
2025-10-21 15:06 ` Linus Torvalds
2025-10-21 15:45 ` Thomas Gleixner
2025-10-21 15:51 ` Linus Torvalds
2025-10-21 18:55 ` David Laight
2025-10-17 10:09 ` [patch V3 08/12] uaccess: Provide put/get_user_masked() Thomas Gleixner
2025-10-17 13:41 ` Mathieu Desnoyers
2025-10-17 13:45 ` Mathieu Desnoyers
2025-10-20 6:50 ` Thomas Gleixner
2025-10-17 10:09 ` [patch V3 09/12] [RFC] coccinelle: misc: Add scoped_masked_$MODE_access() checker script Thomas Gleixner
2025-10-17 10:51 ` Julia Lawall
2025-10-17 10:09 ` [patch V3 10/12] futex: Convert to scoped masked user access Thomas Gleixner
2025-10-17 10:09 ` [patch V3 11/12] x86/futex: " Thomas Gleixner
2025-10-17 13:37 ` Andrew Cooper
2025-10-17 10:09 ` [patch V3 12/12] select: " Thomas Gleixner
2025-10-17 10:35 ` Peter Zijlstra
2025-10-17 11:12 ` Thomas Gleixner
2025-10-17 10:37 ` [patch V3 00/12] uaccess: Provide and use scopes for user masked access Peter Zijlstra
2025-10-17 10:50 ` Andrew Cooper
2025-10-17 12:25 ` Mathieu Desnoyers
2025-12-19 8:10 ` patchwork-bot+linux-riscv
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=20251017112504.GE3245006@noisy.programming.kicks-ass.net \
--to=peterz@infradead$(echo .)org \
--cc=Julia.Lawall@inria$(echo .)fr \
--cc=andrealmeid@igalia$(echo .)com \
--cc=andrew.cooper3@citrix$(echo .)com \
--cc=andrew.cooper@citrix$(echo .)com \
--cc=borntraeger@linux$(echo .)ibm.com \
--cc=brauner@kernel$(echo .)org \
--cc=christophe.leroy@csgroup$(echo .)eu \
--cc=dave@stgolabs$(echo .)net \
--cc=dvhart@infradead$(echo .)org \
--cc=hca@linux$(echo .)ibm.com \
--cc=jack@suse$(echo .)cz \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
--cc=linux-fsdevel@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linux-riscv@lists$(echo .)infradead.org \
--cc=linux-s390@vger$(echo .)kernel.org \
--cc=linux@armlinux$(echo .)org.uk \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=lkp@intel$(echo .)com \
--cc=maddy@linux$(echo .)ibm.com \
--cc=mathieu.desnoyers@efficios$(echo .)com \
--cc=mpe@ellerman$(echo .)id.au \
--cc=nicolas.palix@imag$(echo .)fr \
--cc=npiggin@gmail$(echo .)com \
--cc=palmer@dabbelt$(echo .)com \
--cc=pjw@kernel$(echo .)org \
--cc=svens@linux$(echo .)ibm.com \
--cc=tglx@linutronix$(echo .)de \
--cc=torvalds@linux-foundation$(echo .)org \
--cc=viro@zeniv$(echo .)linux.org.uk \
--cc=x86@kernel$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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