mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge branch 'kcsan' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into locking/core
Pull v5.9 KCSAN bits from Paul E. McKenney. Perhaps the most important change is that GCC 11 now has all fixes in place to support KCSAN, so GCC support can be enabled again. Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -776,6 +776,7 @@ EXPORT_SYMBOL(__kcsan_check_access);
|
||||
*/
|
||||
|
||||
#define DEFINE_TSAN_READ_WRITE(size) \
|
||||
void __tsan_read##size(void *ptr); \
|
||||
void __tsan_read##size(void *ptr) \
|
||||
{ \
|
||||
check_access(ptr, size, 0); \
|
||||
@@ -784,6 +785,7 @@ EXPORT_SYMBOL(__kcsan_check_access);
|
||||
void __tsan_unaligned_read##size(void *ptr) \
|
||||
__alias(__tsan_read##size); \
|
||||
EXPORT_SYMBOL(__tsan_unaligned_read##size); \
|
||||
void __tsan_write##size(void *ptr); \
|
||||
void __tsan_write##size(void *ptr) \
|
||||
{ \
|
||||
check_access(ptr, size, KCSAN_ACCESS_WRITE); \
|
||||
@@ -799,12 +801,14 @@ DEFINE_TSAN_READ_WRITE(4);
|
||||
DEFINE_TSAN_READ_WRITE(8);
|
||||
DEFINE_TSAN_READ_WRITE(16);
|
||||
|
||||
void __tsan_read_range(void *ptr, size_t size);
|
||||
void __tsan_read_range(void *ptr, size_t size)
|
||||
{
|
||||
check_access(ptr, size, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(__tsan_read_range);
|
||||
|
||||
void __tsan_write_range(void *ptr, size_t size);
|
||||
void __tsan_write_range(void *ptr, size_t size)
|
||||
{
|
||||
check_access(ptr, size, KCSAN_ACCESS_WRITE);
|
||||
@@ -821,6 +825,7 @@ EXPORT_SYMBOL(__tsan_write_range);
|
||||
* the size-check of compiletime_assert_rwonce_type().
|
||||
*/
|
||||
#define DEFINE_TSAN_VOLATILE_READ_WRITE(size) \
|
||||
void __tsan_volatile_read##size(void *ptr); \
|
||||
void __tsan_volatile_read##size(void *ptr) \
|
||||
{ \
|
||||
const bool is_atomic = size <= sizeof(long long) && \
|
||||
@@ -833,6 +838,7 @@ EXPORT_SYMBOL(__tsan_write_range);
|
||||
void __tsan_unaligned_volatile_read##size(void *ptr) \
|
||||
__alias(__tsan_volatile_read##size); \
|
||||
EXPORT_SYMBOL(__tsan_unaligned_volatile_read##size); \
|
||||
void __tsan_volatile_write##size(void *ptr); \
|
||||
void __tsan_volatile_write##size(void *ptr) \
|
||||
{ \
|
||||
const bool is_atomic = size <= sizeof(long long) && \
|
||||
@@ -858,14 +864,17 @@ DEFINE_TSAN_VOLATILE_READ_WRITE(16);
|
||||
* The below are not required by KCSAN, but can still be emitted by the
|
||||
* compiler.
|
||||
*/
|
||||
void __tsan_func_entry(void *call_pc);
|
||||
void __tsan_func_entry(void *call_pc)
|
||||
{
|
||||
}
|
||||
EXPORT_SYMBOL(__tsan_func_entry);
|
||||
void __tsan_func_exit(void);
|
||||
void __tsan_func_exit(void)
|
||||
{
|
||||
}
|
||||
EXPORT_SYMBOL(__tsan_func_exit);
|
||||
void __tsan_init(void);
|
||||
void __tsan_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user