From: Brian Gerst > Sent: 07 May 2020 07:18 ... > > --- a/arch/x86/include/asm/bitops.h > > +++ b/arch/x86/include/asm/bitops.h > > @@ -54,7 +54,7 @@ arch_set_bit(long nr, volatile unsigned long *addr) > > if (__builtin_constant_p(nr)) { > > asm volatile(LOCK_PREFIX "orb %1,%0" > > : CONST_MASK_ADDR(nr, addr) > > - : "iq" (CONST_MASK(nr) & 0xff) > > + : "iq" ((u8)(CONST_MASK(nr) & 0xff)) > > I think a better fix would be to make CONST_MASK() return a u8 value > rather than have to cast on every use. Or assign to a local variable - then it doesn't matter how the value is actually calculated. So: u8 mask = CONST_MASK(nr); asm volatile(LOCK_PREFIX "orb %1,%0" : CONST_MASK_ADDR(nr, addr) : "iq" mask David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)