# git rev-parse -q --verify b791d1bdf9212d944d749a5c7ff6febdba241771^{commit} b791d1bdf9212d944d749a5c7ff6febdba241771 already have revision, skipping fetch # git checkout -q -f -B kisskb b791d1bdf9212d944d749a5c7ff6febdba241771 # git clean -qxdf # < git log -1 # commit b791d1bdf9212d944d749a5c7ff6febdba241771 # Merge: 9716e57a0195 1f44328ea24c # Author: Linus Torvalds # Date: Thu Jun 11 18:55:43 2020 -0700 # # Merge tag 'locking-kcsan-2020-06-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip # # Pull the Kernel Concurrency Sanitizer from Thomas Gleixner: # "The Kernel Concurrency Sanitizer (KCSAN) is a dynamic race detector, # which relies on compile-time instrumentation, and uses a # watchpoint-based sampling approach to detect races. # # The feature was under development for quite some time and has already # found legitimate bugs. # # Unfortunately it comes with a limitation, which was only understood # late in the development cycle: # # It requires an up to date CLANG-11 compiler # # CLANG-11 is not yet released (scheduled for June), but it's the only # compiler today which handles the kernel requirements and especially # the annotations of functions to exclude them from KCSAN # instrumentation correctly. # # These annotations really need to work so that low level entry code and # especially int3 text poke handling can be completely isolated. # # A detailed discussion of the requirements and compiler issues can be # found here: # # https://lore.kernel.org/lkml/CANpmjNMTsY_8241bS7=XAfqvZHFLrVEkv_uM4aDUWE_kh3Rvbw@mail.gmail.com/ # # We came to the conclusion that trying to work around compiler # limitations and bugs again would end up in a major trainwreck, so # requiring a working compiler seemed to be the best choice. # # For Continous Integration purposes the compiler restriction is # manageable and that's where most xxSAN reports come from. # # For a change this limitation might make GCC people actually look at # their bugs. Some issues with CSAN in GCC are 7 years old and one has # been 'fixed' 3 years ago with a half baken solution which 'solved' the # reported issue but not the underlying problem. # # The KCSAN developers also ponder to use a GCC plugin to become # independent, but that's not something which will show up in a few # days. # # Blocking KCSAN until wide spread compiler support is available is not # a really good alternative because the continuous growth of lockless # optimizations in the kernel demands proper tooling support" # # * tag 'locking-kcsan-2020-06-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (76 commits) # compiler_types.h, kasan: Use __SANITIZE_ADDRESS__ instead of CONFIG_KASAN to decide inlining # compiler.h: Move function attributes to compiler_types.h # compiler.h: Avoid nested statement expression in data_race() # compiler.h: Remove data_race() and unnecessary checks from {READ,WRITE}_ONCE() # kcsan: Update Documentation to change supported compilers # kcsan: Remove 'noinline' from __no_kcsan_or_inline # kcsan: Pass option tsan-instrument-read-before-write to Clang # kcsan: Support distinguishing volatile accesses # kcsan: Restrict supported compilers # kcsan: Avoid inserting __tsan_func_entry/exit if possible # ubsan, kcsan: Don't combine sanitizer with kcov on clang # objtool, kcsan: Add kcsan_disable_current() and kcsan_enable_current_nowarn() # kcsan: Add __kcsan_{enable,disable}_current() variants # checkpatch: Warn about data_race() without comment # kcsan: Use GFP_ATOMIC under spin lock # Improve KCSAN documentation a bit # kcsan: Make reporting aware of KCSAN tests # kcsan: Fix function matching in report # kcsan: Change data_race() to no longer require marking racing accesses # kcsan: Move kcsan_{disable,enable}_current() to kcsan-checks.h # ... # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux-ld --version # < git log --format=%s --max-count=1 b791d1bdf9212d944d749a5c7ff6febdba241771 # < make -s -j 48 ARCH=s390 O=/kisskb/build/linus_s390-allmodconfig_s390x-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux- allmodconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_SAMPLES=n # < make -s -j 48 ARCH=s390 O=/kisskb/build/linus_s390-allmodconfig_s390x-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux- help # make -s -j 48 ARCH=s390 O=/kisskb/build/linus_s390-allmodconfig_s390x-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux- olddefconfig # make -s -j 48 ARCH=s390 O=/kisskb/build/linus_s390-allmodconfig_s390x-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux- /kisskb/src/lib/test_kasan.c: In function 'kasan_alloca_oob_left': /kisskb/src/lib/test_kasan.c:555:1: warning: 'kasan_alloca_oob_left' uses dynamic stack allocation } ^ /kisskb/src/lib/test_kasan.c: In function 'kasan_alloca_oob_right': /kisskb/src/lib/test_kasan.c:565:1: warning: 'kasan_alloca_oob_right' uses dynamic stack allocation } ^ /kisskb/src/drivers/input/joystick/analog.c:160:2: warning: #warning Precise timer not defined for this architecture. [-Wcpp] #warning Precise timer not defined for this architecture. ^~~~~~~ /kisskb/src/drivers/scsi/dc395x.c: In function '__dc395x_eh_bus_reset': /kisskb/src/drivers/scsi/dc395x.c:155:36: warning: value computed is not used [-Wunused-value] #define DC395x_read8(acb,address) (u8)(inb(acb->io_port_base + (address))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/dc395x.c:1197:2: note: in expansion of macro 'DC395x_read8' DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS); ^~~~~~~~~~~~ /kisskb/src/drivers/scsi/dc395x.c: In function 'set_basic_config': /kisskb/src/drivers/scsi/dc395x.c:155:36: warning: value computed is not used [-Wunused-value] #define DC395x_read8(acb,address) (u8)(inb(acb->io_port_base + (address))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/dc395x.c:3489:2: note: in expansion of macro 'DC395x_read8' DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS); ^~~~~~~~~~~~ /kisskb/src/drivers/scsi/dc395x.c: In function 'adapter_uninit_chip': /kisskb/src/drivers/scsi/dc395x.c:155:36: warning: value computed is not used [-Wunused-value] #define DC395x_read8(acb,address) (u8)(inb(acb->io_port_base + (address))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/dc395x.c:4435:2: note: in expansion of macro 'DC395x_read8' DC395x_read8(acb, TRM_S1040_SCSI_INTSTATUS); ^~~~~~~~~~~~ In file included from ./arch/s390/include/generated/asm/cacheflush.h:1, from /kisskb/src/drivers/media/platform/omap3isp/isp.c:42: /kisskb/src/include/asm-generic/cacheflush.h:16:42: warning: 'struct mm_struct' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_cache_mm(struct mm_struct *mm) ^~~~~~~~~ /kisskb/src/include/asm-generic/cacheflush.h:22:46: warning: 'struct mm_struct' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_cache_dup_mm(struct mm_struct *mm) ^~~~~~~~~ /kisskb/src/include/asm-generic/cacheflush.h:28:45: warning: 'struct vm_area_struct' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_cache_range(struct vm_area_struct *vma, ^~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cacheflush.h:36:44: warning: 'struct vm_area_struct' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_cache_page(struct vm_area_struct *vma, ^~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cacheflush.h:44:45: warning: 'struct page' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_dcache_page(struct page *page) ^~~~ /kisskb/src/include/asm-generic/cacheflush.h:52:50: warning: 'struct address_space' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_dcache_mmap_lock(struct address_space *mapping) ^~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cacheflush.h:58:52: warning: 'struct address_space' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_dcache_mmap_unlock(struct address_space *mapping) ^~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cacheflush.h:75:17: warning: 'struct page' declared inside parameter list will not be visible outside of this definition or declaration struct page *page) ^~~~ /kisskb/src/include/asm-generic/cacheflush.h:74:45: warning: 'struct vm_area_struct' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_icache_page(struct vm_area_struct *vma, ^~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cacheflush.h:82:16: warning: 'struct page' declared inside parameter list will not be visible outside of this definition or declaration struct page *page, ^~~~ /kisskb/src/include/asm-generic/cacheflush.h:81:50: warning: 'struct vm_area_struct' declared inside parameter list will not be visible outside of this definition or declaration static inline void flush_icache_user_page(struct vm_area_struct *vma, ^~~~~~~~~~~~~~ /kisskb/src/drivers/mailbox/imx-mailbox.c:638:12: warning: 'imx_mu_runtime_resume' defined but not used [-Wunused-function] static int imx_mu_runtime_resume(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/mailbox/imx-mailbox.c:629:12: warning: 'imx_mu_runtime_suspend' defined but not used [-Wunused-function] static int imx_mu_runtime_suspend(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/mailbox/imx-mailbox.c:611:12: warning: 'imx_mu_resume_noirq' defined but not used [-Wunused-function] static int imx_mu_resume_noirq(struct device *dev) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/mailbox/imx-mailbox.c:601:12: warning: 'imx_mu_suspend_noirq' defined but not used [-Wunused-function] static int imx_mu_suspend_noirq(struct device *dev) ^~~~~~~~~~~~~~~~~~~~ In file included from /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:40: /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c: In function 'mvpp2_setup_bm_pool': /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2.h:634:2: warning: overflow in conversion from 'long unsigned int' to 'int' changes value from '18446744073709551584' to '-32' [-Woverflow] ((total_size) - NET_SKB_PAD - MVPP2_SKB_SHINFO_SIZE) ^ /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2.h:699:33: note: in expansion of macro 'MVPP2_RX_MAX_PKT_SIZE' #define MVPP2_BM_SHORT_PKT_SIZE MVPP2_RX_MAX_PKT_SIZE(MVPP2_BM_SHORT_FRAME_SIZE) ^~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:580:41: note: in expansion of macro 'MVPP2_BM_SHORT_PKT_SIZE' mvpp2_pools[MVPP2_BM_SHORT].pkt_size = MVPP2_BM_SHORT_PKT_SIZE; ^~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/intel/e1000e/netdev.c:137:13: warning: 'e1000e_check_me' defined but not used [-Wunused-function] static bool e1000e_check_me(u16 device_id) ^~~~~~~~~~~~~~~ Completed OK # rm -rf /kisskb/build/linus_s390-allmodconfig_s390x-gcc8 # Build took: 0:19:22.981863