[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <41d62605-0d17-4504-8dae-8e9d126eb58b@citrix.com>
Date: Fri, 17 Oct 2025 14:37:11 +0100
From: Andrew Cooper <andrew.cooper@...rix.com>
To: Thomas Gleixner <tglx@...utronix.de>, LKML <linux-kernel@...r.kernel.org>
Cc: x86@...nel.org, kernel test robot <lkp@...el.com>,
Russell King <linux@...linux.org.uk>, linux-arm-kernel@...ts.infradead.org,
Linus Torvalds <torvalds@...ux-foundation.org>,
Madhavan Srinivasan <maddy@...ux.ibm.com>,
Michael Ellerman <mpe@...erman.id.au>, Nicholas Piggin <npiggin@...il.com>,
Christophe Leroy <christophe.leroy@...roup.eu>,
linuxppc-dev@...ts.ozlabs.org, Paul Walmsley <pjw@...nel.org>,
Palmer Dabbelt <palmer@...belt.com>, linux-riscv@...ts.infradead.org,
Heiko Carstens <hca@...ux.ibm.com>,
Christian Borntraeger <borntraeger@...ux.ibm.com>,
Sven Schnelle <svens@...ux.ibm.com>, linux-s390@...r.kernel.org,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Andrew Cooper <andrew.cooper3@...rix.com>,
Julia Lawall <Julia.Lawall@...ia.fr>, Nicolas Palix <nicolas.palix@...g.fr>,
Peter Zijlstra <peterz@...radead.org>, Darren Hart <dvhart@...radead.org>,
Davidlohr Bueso <dave@...olabs.net>, André Almeida
<andrealmeid@...lia.com>, Alexander Viro <viro@...iv.linux.org.uk>,
Christian Brauner <brauner@...nel.org>, Jan Kara <jack@...e.cz>,
linux-fsdevel@...r.kernel.org
Subject: Re: [patch V3 11/12] x86/futex: Convert to scoped masked user access
On 17/10/2025 11:09 am, Thomas Gleixner wrote:
> @@ -86,21 +79,19 @@ static inline int futex_atomic_cmpxchg_i
> {
> int ret = 0;
>
> - if (can_do_masked_user_access())
> - uaddr = masked_user_access_begin(uaddr);
> - else if (!user_access_begin(uaddr, sizeof(u32)))
> - return -EFAULT;
> - asm volatile("\n"
> - "1:\t" LOCK_PREFIX "cmpxchgl %3, %2\n"
> - "2:\n"
> - _ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_EFAULT_REG, %0) \
> - : "+r" (ret), "=a" (oldval), "+m" (*uaddr)
> - : "r" (newval), "1" (oldval)
> - : "memory"
> - );
> - user_access_end();
> - *uval = oldval;
> + scoped_masked_user_rw_access(uaddr, Efault) {
> + asm volatile("\n"
> + "1:\t" LOCK_PREFIX "cmpxchgl %3, %2\n"
> + "2:\n"
> + _ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_EFAULT_REG, %0) \
> + : "+r" (ret), "=a" (oldval), "+m" (*uaddr)
> + : "r" (newval), "1" (oldval)
> + : "memory");
Minor points, but as you're rewriting this, it wants to be asm_inline
volatile.
There's also a useless line continuation on the end of the ASM_EXTABLE
which can be dropped.
~Andrew
Powered by blists - more mailing lists