Lines Matching refs:test_var
301 static long test_var;
329 static noinline void test_kernel_read(void) { sink_value(test_var); }
333 test_var = READ_ONCE_NOCHECK(test_sink) + 1;
336 static noinline void test_kernel_write_nochange(void) { test_var = 42; }
339 static noinline void test_kernel_write_nochange_rcu(void) { test_var = 42; }
343 sink_value(READ_ONCE(test_var));
348 WRITE_ONCE(test_var, READ_ONCE_NOCHECK(test_sink) + 1);
354 __atomic_fetch_add(&test_var, 1, __ATOMIC_RELAXED);
358 static noinline void test_kernel_write_uninstrumented(void) { test_var++; }
360 static noinline void test_kernel_data_race(void) { data_race(test_var++); }
366 ASSERT_EXCLUSIVE_WRITER(test_var);
371 ASSERT_EXCLUSIVE_ACCESS(test_var);
384 test_var ^= TEST_CHANGE_BITS;
387 WRITE_ONCE(test_var, READ_ONCE(test_var) ^ TEST_CHANGE_BITS);
392 ASSERT_EXCLUSIVE_BITS(test_var, TEST_CHANGE_BITS);
397 ASSERT_EXCLUSIVE_BITS(test_var, ~TEST_CHANGE_BITS);
415 ASSERT_EXCLUSIVE_WRITER_SCOPED(test_var);
421 ASSERT_EXCLUSIVE_ACCESS_SCOPED(test_var);
462 sink_value(test_var);
471 test_var++;
481 __atomic_load_n(&test_var, __ATOMIC_RELAXED);
488 test_var ^= 0x10000;
500 test_var++; \
544 reorder_access->size = sizeof(test_var); \
547 order_before ? 0 : sizeof(test_var), \
564 test_var = 0;
565 while (test_var++ < 1000000 && reorder_access->size != sizeof(test_var))
566 __kcsan_check_read(&test_var, sizeof(test_var));
567 KUNIT_ASSERT_EQ(test, reorder_access->size, sizeof(test_var));
582 KCSAN_EXPECT_READ_BARRIER(smp_store_mb(test_var, 0), true);
583 KCSAN_EXPECT_READ_BARRIER(smp_load_acquire(&test_var), false);
584 KCSAN_EXPECT_READ_BARRIER(smp_store_release(&test_var, 0), true);
585 KCSAN_EXPECT_READ_BARRIER(xchg(&test_var, 0), true);
586 KCSAN_EXPECT_READ_BARRIER(xchg_release(&test_var, 0), true);
587 KCSAN_EXPECT_READ_BARRIER(xchg_relaxed(&test_var, 0), false);
588 KCSAN_EXPECT_READ_BARRIER(cmpxchg(&test_var, 0, 0), true);
589 KCSAN_EXPECT_READ_BARRIER(cmpxchg_release(&test_var, 0, 0), true);
590 KCSAN_EXPECT_READ_BARRIER(cmpxchg_relaxed(&test_var, 0, 0), false);
604 KCSAN_EXPECT_READ_BARRIER(test_and_set_bit(0, &test_var), true);
605 KCSAN_EXPECT_READ_BARRIER(test_and_clear_bit(0, &test_var), true);
606 KCSAN_EXPECT_READ_BARRIER(test_and_change_bit(0, &test_var), true);
607 KCSAN_EXPECT_READ_BARRIER(clear_bit_unlock(0, &test_var), true);
608 KCSAN_EXPECT_READ_BARRIER(__clear_bit_unlock(0, &test_var), true);
627 KCSAN_EXPECT_WRITE_BARRIER(smp_store_mb(test_var, 0), true);
628 KCSAN_EXPECT_WRITE_BARRIER(smp_load_acquire(&test_var), false);
629 KCSAN_EXPECT_WRITE_BARRIER(smp_store_release(&test_var, 0), true);
630 KCSAN_EXPECT_WRITE_BARRIER(xchg(&test_var, 0), true);
631 KCSAN_EXPECT_WRITE_BARRIER(xchg_release(&test_var, 0), true);
632 KCSAN_EXPECT_WRITE_BARRIER(xchg_relaxed(&test_var, 0), false);
633 KCSAN_EXPECT_WRITE_BARRIER(cmpxchg(&test_var, 0, 0), true);
634 KCSAN_EXPECT_WRITE_BARRIER(cmpxchg_release(&test_var, 0, 0), true);
635 KCSAN_EXPECT_WRITE_BARRIER(cmpxchg_relaxed(&test_var, 0, 0), false);
649 KCSAN_EXPECT_WRITE_BARRIER(test_and_set_bit(0, &test_var), true);
650 KCSAN_EXPECT_WRITE_BARRIER(test_and_clear_bit(0, &test_var), true);
651 KCSAN_EXPECT_WRITE_BARRIER(test_and_change_bit(0, &test_var), true);
652 KCSAN_EXPECT_WRITE_BARRIER(clear_bit_unlock(0, &test_var), true);
653 KCSAN_EXPECT_WRITE_BARRIER(__clear_bit_unlock(0, &test_var), true);
672 KCSAN_EXPECT_RW_BARRIER(smp_store_mb(test_var, 0), true);
673 KCSAN_EXPECT_RW_BARRIER(smp_load_acquire(&test_var), false);
674 KCSAN_EXPECT_RW_BARRIER(smp_store_release(&test_var, 0), true);
675 KCSAN_EXPECT_RW_BARRIER(xchg(&test_var, 0), true);
676 KCSAN_EXPECT_RW_BARRIER(xchg_release(&test_var, 0), true);
677 KCSAN_EXPECT_RW_BARRIER(xchg_relaxed(&test_var, 0), false);
678 KCSAN_EXPECT_RW_BARRIER(cmpxchg(&test_var, 0, 0), true);
679 KCSAN_EXPECT_RW_BARRIER(cmpxchg_release(&test_var, 0, 0), true);
680 KCSAN_EXPECT_RW_BARRIER(cmpxchg_relaxed(&test_var, 0, 0), false);
694 KCSAN_EXPECT_RW_BARRIER(test_and_set_bit(0, &test_var), true);
695 KCSAN_EXPECT_RW_BARRIER(test_and_clear_bit(0, &test_var), true);
696 KCSAN_EXPECT_RW_BARRIER(test_and_change_bit(0, &test_var), true);
697 KCSAN_EXPECT_RW_BARRIER(clear_bit_unlock(0, &test_var), true);
698 KCSAN_EXPECT_RW_BARRIER(__clear_bit_unlock(0, &test_var), true);
705 KCSAN_EXPECT_READ_BARRIER(xor_unlock_is_negative_byte(1, &test_var), true);
706 KCSAN_EXPECT_WRITE_BARRIER(xor_unlock_is_negative_byte(1, &test_var), true);
707 KCSAN_EXPECT_RW_BARRIER(xor_unlock_is_negative_byte(1, &test_var), true);
717 { test_kernel_write, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
718 { test_kernel_read, &test_var, sizeof(test_var), 0 },
723 { test_kernel_read, &test_var, sizeof(test_var), 0 },
724 { test_kernel_read, &test_var, sizeof(test_var), 0 },
777 { test_kernel_write_nochange, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
778 { test_kernel_read, &test_var, sizeof(test_var), 0 },
783 { test_kernel_write_nochange, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
784 { test_kernel_write_nochange, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
809 { test_kernel_write_nochange_rcu, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
810 { test_kernel_read, &test_var, sizeof(test_var), 0 },
815 { test_kernel_write_nochange_rcu, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
816 { test_kernel_write_nochange_rcu, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
835 { test_kernel_read, &test_var, sizeof(test_var), 0 },
857 { test_kernel_write, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
858 { test_kernel_write, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
865 sink_value(READ_ONCE(test_var)); /* induce value-change */
937 { test_kernel_read, &test_var, sizeof(test_var), 0 },
938 { test_kernel_write_atomic, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE | KCSAN_ACCESS_ATOMIC },
958 { test_kernel_read, &test_var, sizeof(test_var), 0 },
959 { test_kernel_atomic_rmw, &test_var, sizeof(test_var),
1033 { test_kernel_assert_writer, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT },
1034 { test_kernel_write_nochange, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
1051 { test_kernel_assert_access, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_WRITE },
1052 { test_kernel_read, &test_var, sizeof(test_var), 0 },
1069 { test_kernel_assert_access, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_WRITE },
1070 { test_kernel_assert_writer, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT },
1075 { test_kernel_assert_access, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_WRITE },
1076 { test_kernel_assert_access, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_WRITE },
1081 { test_kernel_assert_writer, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT },
1082 { test_kernel_assert_writer, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT },
1105 { test_kernel_assert_bits_change, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT },
1106 { test_kernel_change_bits, &test_var, sizeof(test_var),
1136 { test_kernel_assert_writer_scoped, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_SCOPED },
1137 { test_kernel_write_nochange, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
1142 { test_enter_scope, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_SCOPED },
1143 { test_kernel_write_nochange, &test_var, sizeof(test_var), KCSAN_ACCESS_WRITE },
1163 { test_kernel_assert_access_scoped, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_SCOPED },
1164 { test_kernel_read, &test_var, sizeof(test_var), 0 },
1172 { test_enter_scope, &test_var, sizeof(test_var), KCSAN_ACCESS_ASSERT | KCSAN_ACCESS_WRITE | KCSAN_ACCESS_SCOPED },
1173 { test_kernel_read, &test_var, sizeof(test_var), 0 },
1236 __atomic_store_n(&test_var, 42L, __ATOMIC_RELAXED);
1237 KUNIT_EXPECT_EQ(test, 42L, __atomic_load_n(&test_var, __ATOMIC_RELAXED));
1239 KUNIT_EXPECT_EQ(test, 42L, __atomic_exchange_n(&test_var, 20, __ATOMIC_RELAXED));
1240 KUNIT_EXPECT_EQ(test, 20L, test_var);
1243 KUNIT_EXPECT_TRUE(test, __atomic_compare_exchange_n(&test_var, &tmp, 30L,
1247 KUNIT_EXPECT_EQ(test, test_var, 30L);
1248 KUNIT_EXPECT_FALSE(test, __atomic_compare_exchange_n(&test_var, &tmp, 40L,
1252 KUNIT_EXPECT_EQ(test, test_var, 30L);
1254 KUNIT_EXPECT_EQ(test, 30L, __atomic_fetch_add(&test_var, 1, __ATOMIC_RELAXED));
1255 KUNIT_EXPECT_EQ(test, 31L, __atomic_fetch_sub(&test_var, 1, __ATOMIC_RELAXED));
1256 KUNIT_EXPECT_EQ(test, 30L, __atomic_fetch_and(&test_var, 0xf, __ATOMIC_RELAXED));
1257 KUNIT_EXPECT_EQ(test, 14L, __atomic_fetch_xor(&test_var, 0xf, __ATOMIC_RELAXED));
1258 KUNIT_EXPECT_EQ(test, 1L, __atomic_fetch_or(&test_var, 0xf0, __ATOMIC_RELAXED));
1259 KUNIT_EXPECT_EQ(test, 241L, __atomic_fetch_nand(&test_var, 0xf, __ATOMIC_RELAXED));
1260 KUNIT_EXPECT_EQ(test, -2L, test_var);
1277 { test_kernel_read, &test_var, sizeof(test_var), 0 },
1278 { test_kernel_xor_1bit, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(KCSAN_ACCESS_WRITE) },
1300 { test_kernel_with_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(KCSAN_ACCESS_WRITE) },
1301 { test_kernel_with_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(0) },
1319 { test_kernel_wrong_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(KCSAN_ACCESS_WRITE) },
1320 { test_kernel_wrong_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(0) },
1341 { test_kernel_atomic_builtin_with_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(KCSAN_ACCESS_WRITE) },
1342 { test_kernel_atomic_builtin_with_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(0) },
1361 { test_kernel_atomic_builtin_wrong_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(KCSAN_ACCESS_WRITE) },
1362 { test_kernel_atomic_builtin_wrong_memorder, &test_var, sizeof(test_var), __KCSAN_ACCESS_RW(0) },