forked from Minki/linux
kcsan: Only test clear_bit_unlock_is_negative_byte if arch defines it
Some architectures do not define clear_bit_unlock_is_negative_byte(). Only test it when it is actually defined (similar to other usage, such as in lib/test_kasan.c). Link: https://lkml.kernel.org/r/202112050757.x67rHnFU-lkp@intel.com Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Marco Elver <elver@google.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
e3d2b72bbf
commit
b473a3891c
@ -598,7 +598,6 @@ static void test_barrier_nothreads(struct kunit *test)
|
||||
KCSAN_EXPECT_READ_BARRIER(test_and_change_bit(0, &test_var), true);
|
||||
KCSAN_EXPECT_READ_BARRIER(clear_bit_unlock(0, &test_var), true);
|
||||
KCSAN_EXPECT_READ_BARRIER(__clear_bit_unlock(0, &test_var), true);
|
||||
KCSAN_EXPECT_READ_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var), true);
|
||||
KCSAN_EXPECT_READ_BARRIER(arch_spin_lock(&arch_spinlock), false);
|
||||
KCSAN_EXPECT_READ_BARRIER(arch_spin_unlock(&arch_spinlock), true);
|
||||
KCSAN_EXPECT_READ_BARRIER(spin_lock(&test_spinlock), false);
|
||||
@ -644,7 +643,6 @@ static void test_barrier_nothreads(struct kunit *test)
|
||||
KCSAN_EXPECT_WRITE_BARRIER(test_and_change_bit(0, &test_var), true);
|
||||
KCSAN_EXPECT_WRITE_BARRIER(clear_bit_unlock(0, &test_var), true);
|
||||
KCSAN_EXPECT_WRITE_BARRIER(__clear_bit_unlock(0, &test_var), true);
|
||||
KCSAN_EXPECT_WRITE_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var), true);
|
||||
KCSAN_EXPECT_WRITE_BARRIER(arch_spin_lock(&arch_spinlock), false);
|
||||
KCSAN_EXPECT_WRITE_BARRIER(arch_spin_unlock(&arch_spinlock), true);
|
||||
KCSAN_EXPECT_WRITE_BARRIER(spin_lock(&test_spinlock), false);
|
||||
@ -690,7 +688,6 @@ static void test_barrier_nothreads(struct kunit *test)
|
||||
KCSAN_EXPECT_RW_BARRIER(test_and_change_bit(0, &test_var), true);
|
||||
KCSAN_EXPECT_RW_BARRIER(clear_bit_unlock(0, &test_var), true);
|
||||
KCSAN_EXPECT_RW_BARRIER(__clear_bit_unlock(0, &test_var), true);
|
||||
KCSAN_EXPECT_RW_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var), true);
|
||||
KCSAN_EXPECT_RW_BARRIER(arch_spin_lock(&arch_spinlock), false);
|
||||
KCSAN_EXPECT_RW_BARRIER(arch_spin_unlock(&arch_spinlock), true);
|
||||
KCSAN_EXPECT_RW_BARRIER(spin_lock(&test_spinlock), false);
|
||||
@ -698,6 +695,11 @@ static void test_barrier_nothreads(struct kunit *test)
|
||||
KCSAN_EXPECT_RW_BARRIER(mutex_lock(&test_mutex), false);
|
||||
KCSAN_EXPECT_RW_BARRIER(mutex_unlock(&test_mutex), true);
|
||||
|
||||
#ifdef clear_bit_unlock_is_negative_byte
|
||||
KCSAN_EXPECT_READ_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var), true);
|
||||
KCSAN_EXPECT_WRITE_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var), true);
|
||||
KCSAN_EXPECT_RW_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var), true);
|
||||
#endif
|
||||
kcsan_nestable_atomic_end();
|
||||
}
|
||||
|
||||
|
@ -169,7 +169,6 @@ static bool __init test_barrier(void)
|
||||
KCSAN_CHECK_READ_BARRIER(test_and_change_bit(0, &test_var));
|
||||
KCSAN_CHECK_READ_BARRIER(clear_bit_unlock(0, &test_var));
|
||||
KCSAN_CHECK_READ_BARRIER(__clear_bit_unlock(0, &test_var));
|
||||
KCSAN_CHECK_READ_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var));
|
||||
arch_spin_lock(&arch_spinlock);
|
||||
KCSAN_CHECK_READ_BARRIER(arch_spin_unlock(&arch_spinlock));
|
||||
spin_lock(&test_spinlock);
|
||||
@ -199,7 +198,6 @@ static bool __init test_barrier(void)
|
||||
KCSAN_CHECK_WRITE_BARRIER(test_and_change_bit(0, &test_var));
|
||||
KCSAN_CHECK_WRITE_BARRIER(clear_bit_unlock(0, &test_var));
|
||||
KCSAN_CHECK_WRITE_BARRIER(__clear_bit_unlock(0, &test_var));
|
||||
KCSAN_CHECK_WRITE_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var));
|
||||
arch_spin_lock(&arch_spinlock);
|
||||
KCSAN_CHECK_WRITE_BARRIER(arch_spin_unlock(&arch_spinlock));
|
||||
spin_lock(&test_spinlock);
|
||||
@ -232,12 +230,16 @@ static bool __init test_barrier(void)
|
||||
KCSAN_CHECK_RW_BARRIER(test_and_change_bit(0, &test_var));
|
||||
KCSAN_CHECK_RW_BARRIER(clear_bit_unlock(0, &test_var));
|
||||
KCSAN_CHECK_RW_BARRIER(__clear_bit_unlock(0, &test_var));
|
||||
KCSAN_CHECK_RW_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var));
|
||||
arch_spin_lock(&arch_spinlock);
|
||||
KCSAN_CHECK_RW_BARRIER(arch_spin_unlock(&arch_spinlock));
|
||||
spin_lock(&test_spinlock);
|
||||
KCSAN_CHECK_RW_BARRIER(spin_unlock(&test_spinlock));
|
||||
|
||||
#ifdef clear_bit_unlock_is_negative_byte
|
||||
KCSAN_CHECK_RW_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var));
|
||||
KCSAN_CHECK_READ_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var));
|
||||
KCSAN_CHECK_WRITE_BARRIER(clear_bit_unlock_is_negative_byte(0, &test_var));
|
||||
#endif
|
||||
kcsan_nestable_atomic_end();
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user