Add explicit KCSAN checks for bitops.
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Marco Elver <elver@google.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
 #ifndef _ASM_GENERIC_BITOPS_INSTRUMENTED_ATOMIC_H
 #define _ASM_GENERIC_BITOPS_INSTRUMENTED_ATOMIC_H
 
-#include <linux/kasan-checks.h>
+#include <linux/instrumented.h>
 
 /**
  * set_bit - Atomically set a bit in memory
  */
 static inline void set_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        arch_set_bit(nr, addr);
 }
 
  */
 static inline void clear_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        arch_clear_bit(nr, addr);
 }
 
  */
 static inline void change_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        arch_change_bit(nr, addr);
 }
 
  */
 static inline bool test_and_set_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        return arch_test_and_set_bit(nr, addr);
 }
 
  */
 static inline bool test_and_clear_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        return arch_test_and_clear_bit(nr, addr);
 }
 
  */
 static inline bool test_and_change_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        return arch_test_and_change_bit(nr, addr);
 }
 
 
 #ifndef _ASM_GENERIC_BITOPS_INSTRUMENTED_LOCK_H
 #define _ASM_GENERIC_BITOPS_INSTRUMENTED_LOCK_H
 
-#include <linux/kasan-checks.h>
+#include <linux/instrumented.h>
 
 /**
  * clear_bit_unlock - Clear a bit in memory, for unlock
  */
 static inline void clear_bit_unlock(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        arch_clear_bit_unlock(nr, addr);
 }
 
  */
 static inline void __clear_bit_unlock(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_write(addr + BIT_WORD(nr), sizeof(long));
        arch___clear_bit_unlock(nr, addr);
 }
 
  */
 static inline bool test_and_set_bit_lock(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        return arch_test_and_set_bit_lock(nr, addr);
 }
 
 static inline bool
 clear_bit_unlock_is_negative_byte(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_write(addr + BIT_WORD(nr), sizeof(long));
        return arch_clear_bit_unlock_is_negative_byte(nr, addr);
 }
 /* Let everybody know we have it. */
 
 #ifndef _ASM_GENERIC_BITOPS_INSTRUMENTED_NON_ATOMIC_H
 #define _ASM_GENERIC_BITOPS_INSTRUMENTED_NON_ATOMIC_H
 
-#include <linux/kasan-checks.h>
+#include <linux/instrumented.h>
 
 /**
  * __set_bit - Set a bit in memory
  */
 static inline void __set_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_write(addr + BIT_WORD(nr), sizeof(long));
        arch___set_bit(nr, addr);
 }
 
  */
 static inline void __clear_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_write(addr + BIT_WORD(nr), sizeof(long));
        arch___clear_bit(nr, addr);
 }
 
  */
 static inline void __change_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_write(addr + BIT_WORD(nr), sizeof(long));
        arch___change_bit(nr, addr);
 }
 
  */
 static inline bool __test_and_set_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_write(addr + BIT_WORD(nr), sizeof(long));
        return arch___test_and_set_bit(nr, addr);
 }
 
  */
 static inline bool __test_and_clear_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_write(addr + BIT_WORD(nr), sizeof(long));
        return arch___test_and_clear_bit(nr, addr);
 }
 
  */
 static inline bool __test_and_change_bit(long nr, volatile unsigned long *addr)
 {
-       kasan_check_write(addr + BIT_WORD(nr), sizeof(long));
+       instrument_write(addr + BIT_WORD(nr), sizeof(long));
        return arch___test_and_change_bit(nr, addr);
 }
 
  */
 static inline bool test_bit(long nr, const volatile unsigned long *addr)
 {
-       kasan_check_read(addr + BIT_WORD(nr), sizeof(long));
+       instrument_atomic_read(addr + BIT_WORD(nr), sizeof(long));
        return arch_test_bit(nr, addr);
 }