KCSAN_ACCESS_ATOMIC
kcsan_check_access(ptr, size, KCSAN_ACCESS_ATOMIC)
kcsan_check_access(ptr, size, KCSAN_ACCESS_ATOMIC | KCSAN_ACCESS_WRITE)
kcsan_check_access(ptr, size, KCSAN_ACCESS_ATOMIC | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_COMPOUND)
check_access(ptr, size, is_atomic ? KCSAN_ACCESS_ATOMIC : 0, \
(is_atomic ? KCSAN_ACCESS_ATOMIC : 0), \
check_access(ptr, bits / BITS_PER_BYTE, KCSAN_ACCESS_ATOMIC, _RET_IP_); \
KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC, _RET_IP_); \
KCSAN_ACCESS_ATOMIC, _RET_IP_); \
KCSAN_ACCESS_ATOMIC, _RET_IP_); \
KCSAN_ACCESS_ATOMIC, _RET_IP_); \
if (type & KCSAN_ACCESS_ATOMIC)
int type = !(iters & 0x7f) ? KCSAN_ACCESS_ATOMIC :
KCSAN_ACCESS_WRITE | (IS_ENABLED(CONFIG_KCSAN_IGNORE_ATOMICS) ? 0 : KCSAN_ACCESS_ATOMIC) },
const bool is_atomic = (ty & KCSAN_ACCESS_ATOMIC);
{ test_kernel_write_atomic, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC },
KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC },
case KCSAN_ACCESS_ATOMIC:
case KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC:
case KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC:
case KCSAN_ACCESS_SCOPED | KCSAN_ACCESS_ATOMIC:
case KCSAN_ACCESS_SCOPED | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC:
case KCSAN_ACCESS_SCOPED | KCSAN_ACCESS_COMPOUND | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC: