Messages in this thread | | | Date | Tue, 7 Jun 2022 17:16:52 +0200 | Subject | Re: [PATCH] x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm() | From | Paolo Bonzini <> |
| |
On 6/7/22 17:00, Jan Beulich wrote: > As noted (and fixed) a couple of times in the past, "=@cc<cond>" outputs > and clobbering of "cc" don't work well together. The compiler appears to > mean to reject such, but doesn't - in its upstream form - quite manage > to yet for "cc". Furthermore two similar macros don't clobber "cc", and > clobbering "cc" is pointless in asm()-s for x86 anyway - the compiler > always assumes status flags to be clobbered there. > > Fixes: 989b5db215a2 ("x86/uaccess: Implement macros for CMPXCHG on user addresses") > Signed-off-by: Jan Beulich <jbeulich@suse.com> > --- > The change I continue to carry locally actually allows specifying that > "cc" is _not_ clobbered; it only happens to improve detection of bad > situations like the one here. > > --- a/arch/x86/include/asm/uaccess.h > +++ b/arch/x86/include/asm/uaccess.h > @@ -439,7 +439,7 @@ do { \ > [ptr] "+m" (*_ptr), \ > [old] "+a" (__old) \ > : [new] ltype (__new) \ > - : "memory", "cc"); \ > + : "memory"); \ > if (unlikely(__err)) \ > goto label; \ > if (unlikely(!success)) \ >
Queued, thanks.
Paolo
| |