# 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/nds32le-linux/bin/nds32le-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux-ld --version # < git log --format=%s --max-count=1 b791d1bdf9212d944d749a5c7ff6febdba241771 # < make -s -j 24 ARCH=nds32 O=/kisskb/build/linus_nds32-allyesconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- allyesconfig # < make -s -j 24 ARCH=nds32 O=/kisskb/build/linus_nds32-allyesconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- help # make -s -j 24 ARCH=nds32 O=/kisskb/build/linus_nds32-allyesconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- olddefconfig # make -s -j 24 ARCH=nds32 O=/kisskb/build/linus_nds32-allyesconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- :1511:2: warning: #warning syscall clone3 not implemented [-Wcpp] In file included from /kisskb/src/include/linux/printk.h:7, from /kisskb/src/include/linux/kernel.h:15, from /kisskb/src/kernel/rcu/rcuperf.c:13: /kisskb/src/kernel/rcu/rcuperf.c: In function 'kfree_perf_init': /kisskb/src/include/linux/kern_levels.h:5:18: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'unsigned int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^~~~~~ /kisskb/src/include/linux/kern_levels.h:9:20: note: in expansion of macro 'KERN_SOH' #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ ^~~~~~~~ /kisskb/src/include/linux/printk.h:318:9: note: in expansion of macro 'KERN_ALERT' printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~ /kisskb/src/kernel/rcu/rcuperf.c:726:2: note: in expansion of macro 'pr_alert' pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); ^~~~~~~~ /kisskb/src/kernel/rcu/rcuperf.c:726:32: note: format string is defined here pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); ~~^ %u In file included from /kisskb/src/drivers/net/phy/mdio-cavium.c:11: /kisskb/src/drivers/net/phy/mdio-cavium.c: In function 'cavium_mdiobus_set_mode': /kisskb/src/drivers/net/phy/mdio-cavium.h:114:37: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_readq(addr) readq((void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:21:16: note: in expansion of macro 'oct_mdio_readq' smi_clk.u64 = oct_mdio_readq(p->register_base + SMI_CLK); ^~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:24:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_clk.u64, p->register_base + SMI_CLK); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.c: In function 'cavium_mdiobus_c45_addr': /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:39:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_wr.u64, p->register_base + SMI_WR_DAT); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:47:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.h:114:37: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_readq(addr) readq((void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:54:16: note: in expansion of macro 'oct_mdio_readq' smi_wr.u64 = oct_mdio_readq(p->register_base + SMI_WR_DAT); ^~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.c: In function 'cavium_mdiobus_read': /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:86:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.h:114:37: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_readq(addr) readq((void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:93:16: note: in expansion of macro 'oct_mdio_readq' smi_rd.u64 = oct_mdio_readq(p->register_base + SMI_RD_DAT); ^~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.c: In function 'cavium_mdiobus_write': /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:125:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_wr.u64, p->register_base + SMI_WR_DAT); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:131:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.h:114:37: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_readq(addr) readq((void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-cavium.c:138:16: note: in expansion of macro 'oct_mdio_readq' smi_wr.u64 = oct_mdio_readq(p->register_base + SMI_WR_DAT); ^~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-octeon.c: In function 'octeon_mdiobus_probe': /kisskb/src/drivers/net/phy/mdio-octeon.c:48:3: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] (u64)devm_ioremap(&pdev->dev, mdio_phys, regsize); ^ In file included from /kisskb/src/drivers/net/phy/mdio-octeon.c:14: /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-octeon.c:56:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-octeon.c:77:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/phy/mdio-octeon.c: In function 'octeon_mdiobus_remove': /kisskb/src/drivers/net/phy/mdio-cavium.h:113:48: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define oct_mdio_writeq(val, addr) writeq(val, (void *)addr) ^ /kisskb/src/drivers/net/phy/mdio-octeon.c:91:2: note: in expansion of macro 'oct_mdio_writeq' oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); ^~~~~~~~~~~~~~~ /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. ^~~~~~~ WARNING: modpost: EXPORT symbol "copy_page" [vmlinux] version generation failed, symbol will not be versioned. WARNING: modpost: EXPORT symbol "clear_page" [vmlinux] version generation failed, symbol will not be versioned. Completed OK # rm -rf /kisskb/build/linus_nds32-allyesconfig_nds32le-gcc8 # Build took: 0:15:52.856786