From d5d126a225e78071fbb5db126744bc2a36d511df Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 2 Sep 2026 08:30:49 +0200 Subject: [PATCH] x86/bitops: don't cast away volatile-ness Doing so, besides being a bad idea in general, violates Misra rule 11.8. No functional change intended. Fixes: f1879b2c2584 ("xen: introduce generic non-atomic test_*bit()") Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Reviewed-by: Teddy Astie --- xen/arch/x86/include/asm/bitops.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/include/asm/bitops.h b/xen/arch/x86/include/asm/bitops.h index b806002a96..557cee03ba 100644 --- a/xen/arch/x86/include/asm/bitops.h +++ b/xen/arch/x86/include/asm/bitops.h @@ -191,7 +191,9 @@ static inline int arch__test_and_set_bit(int nr, volatile void *addr) asm volatile ( "btsl %[nr], %[addr]\n\t" ASM_FLAG_OUT(, "sbbl %[old], %[old]\n\t") : [old] ASM_FLAG_OUT("=@ccc", "=r") (oldbit), - [addr] "+m" (*(int *)addr) : [nr] "Ir" (nr) : "memory" ); + [addr] "+m" (*(volatile int *)addr) + : [nr] "Ir" (nr) + : "memory" ); return oldbit; } @@ -239,7 +241,9 @@ static inline int arch__test_and_clear_bit(int nr, volatile void *addr) asm volatile ( "btrl %[nr], %[addr]\n\t" ASM_FLAG_OUT(, "sbbl %[old], %[old]\n\t") : [old] ASM_FLAG_OUT("=@ccc", "=r") (oldbit), - [addr] "+m" (*(int *)addr) : [nr] "Ir" (nr) : "memory" ); + [addr] "+m" (*(volatile int *)addr) + : [nr] "Ir" (nr) + : "memory" ); return oldbit; } @@ -253,7 +257,9 @@ static inline int arch__test_and_change_bit(int nr, volatile void *addr) asm volatile ( "btcl %[nr], %[addr]\n\t" ASM_FLAG_OUT(, "sbbl %[old], %[old]\n\t") : [old] ASM_FLAG_OUT("=@ccc", "=r") (oldbit), - [addr] "+m" (*(int *)addr) : [nr] "Ir" (nr) : "memory" ); + [addr] "+m" (*(volatile int *)addr) + : [nr] "Ir" (nr) + : "memory" ); return oldbit; }