Skip to content

Commit 9dd979b

Browse files
melverpaulmckrcu
authored andcommitted
kcsan: Silence -Wmissing-prototypes warning with W=1
The functions here should not be forward declared for explicit use elsewhere in the kernel, as they should only be emitted by the compiler due to sanitizer instrumentation. Add forward declarations a line above their definition to shut up warnings in W=1 builds. Link: https://lkml.kernel.org/r/202006060103.jSCpnV1g%[email protected] Reported-by: kernel test robot <[email protected]> Signed-off-by: Marco Elver <[email protected]> Signed-off-by: Paul E. McKenney <[email protected]>
1 parent 2888557 commit 9dd979b

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

kernel/kcsan/core.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -754,6 +754,7 @@ EXPORT_SYMBOL(__kcsan_check_access);
754754
*/
755755

756756
#define DEFINE_TSAN_READ_WRITE(size) \
757+
void __tsan_read##size(void *ptr); \
757758
void __tsan_read##size(void *ptr) \
758759
{ \
759760
check_access(ptr, size, 0); \
@@ -762,6 +763,7 @@ EXPORT_SYMBOL(__kcsan_check_access);
762763
void __tsan_unaligned_read##size(void *ptr) \
763764
__alias(__tsan_read##size); \
764765
EXPORT_SYMBOL(__tsan_unaligned_read##size); \
766+
void __tsan_write##size(void *ptr); \
765767
void __tsan_write##size(void *ptr) \
766768
{ \
767769
check_access(ptr, size, KCSAN_ACCESS_WRITE); \
@@ -777,12 +779,14 @@ DEFINE_TSAN_READ_WRITE(4);
777779
DEFINE_TSAN_READ_WRITE(8);
778780
DEFINE_TSAN_READ_WRITE(16);
779781

782+
void __tsan_read_range(void *ptr, size_t size);
780783
void __tsan_read_range(void *ptr, size_t size)
781784
{
782785
check_access(ptr, size, 0);
783786
}
784787
EXPORT_SYMBOL(__tsan_read_range);
785788

789+
void __tsan_write_range(void *ptr, size_t size);
786790
void __tsan_write_range(void *ptr, size_t size)
787791
{
788792
check_access(ptr, size, KCSAN_ACCESS_WRITE);
@@ -799,6 +803,7 @@ EXPORT_SYMBOL(__tsan_write_range);
799803
* the size-check of compiletime_assert_rwonce_type().
800804
*/
801805
#define DEFINE_TSAN_VOLATILE_READ_WRITE(size) \
806+
void __tsan_volatile_read##size(void *ptr); \
802807
void __tsan_volatile_read##size(void *ptr) \
803808
{ \
804809
const bool is_atomic = size <= sizeof(long long) && \
@@ -811,6 +816,7 @@ EXPORT_SYMBOL(__tsan_write_range);
811816
void __tsan_unaligned_volatile_read##size(void *ptr) \
812817
__alias(__tsan_volatile_read##size); \
813818
EXPORT_SYMBOL(__tsan_unaligned_volatile_read##size); \
819+
void __tsan_volatile_write##size(void *ptr); \
814820
void __tsan_volatile_write##size(void *ptr) \
815821
{ \
816822
const bool is_atomic = size <= sizeof(long long) && \
@@ -836,14 +842,17 @@ DEFINE_TSAN_VOLATILE_READ_WRITE(16);
836842
* The below are not required by KCSAN, but can still be emitted by the
837843
* compiler.
838844
*/
845+
void __tsan_func_entry(void *call_pc);
839846
void __tsan_func_entry(void *call_pc)
840847
{
841848
}
842849
EXPORT_SYMBOL(__tsan_func_entry);
850+
void __tsan_func_exit(void);
843851
void __tsan_func_exit(void)
844852
{
845853
}
846854
EXPORT_SYMBOL(__tsan_func_exit);
855+
void __tsan_init(void);
847856
void __tsan_init(void)
848857
{
849858
}

0 commit comments

Comments
 (0)