summaryrefslogtreecommitdiffstats
path: root/arch/sandbox/Kconfig
diff options
context:
space:
mode:
authorAhmad Fatoum <ahmad@a3f.at>2021-03-19 09:46:21 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2021-03-22 10:46:47 +0100
commit412806653a147177cba75fb62ea633d74c5ad1ee (patch)
treee7315f967421ede9e02a7c8047191a5930fcd55f /arch/sandbox/Kconfig
parentce45167dbcb35fb6b8a45869084ab1505fb4a3d4 (diff)
downloadbarebox-412806653a147177cba75fb62ea633d74c5ad1ee.tar.gz
barebox-412806653a147177cba75fb62ea633d74c5ad1ee.tar.xz
bthread: disable ASan accounting for fibers on 32-bit sandbox
For the sandbox architecture, we use __sanitizer_start_switch_fiber and __sanitizer_finish_switch_fiber to tell ASan when we switch stacks. If we don't, ASan complains that: ==2472828==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0xff9fc000; bottom 0xf3be8000; size: 0x0be14000 (199311360) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 This works on 64-bit sandbox, but 32-bit sandbox currently crashes on bthread -v: ==2469590==AddressSanitizer CHECK failed: ../../../../../src/libsanitizer/asan/asan_poisoning.cpp:37 "((AddrIsAlignedByGranularity(addr + size))) != (0)" (0x0, 0x0) #0 0xf7a4aa46 in AsanCheckFailed ../../../../../src/libsanitizer/asan/asan_rtl.cpp:73 #1 0xf7a6b5cf in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) ../../../../../src/libsanitizer/sanitizer_common/sanitizer_termination.cpp:78 #2 0xf7a4489f in __asan::PoisonShadow(unsigned long, unsigned long, unsigned char) ../../../../../src/libsanitizer/asan/asan_poisoning.cpp:37 #3 0xf7a4c81b in __asan_handle_no_return ../../../../../src/libsanitizer/asan/asan_rtl.cpp:595 #4 0x566a1ce7 in bthread_schedule /home/a3f/dl/barebox-stm32mp/common/bthread.c:178 #5 0x566a1d54 in bthread_reschedule /home/a3f/dl/barebox-stm32mp/common/bthread.c:165 #6 0x566a1d80 in bthread_trampoline /home/a3f/dl/barebox-stm32mp/common/bthread.c:56 #7 0x567f5bfb in coroutine_bootstrap (/home/a3f/dl/build/barebox/sandbox/barebox+0x1bdbfb) #8 0x567f5c4b in coroutine_trampoline (/home/a3f/dl/build/barebox/sandbox/barebox+0x1bdc4b) #9 0xf7f7056f (linux-gate.so.1+0x56f) #10 0xf7f70558 (linux-gate.so.1+0x558) #11 0x56892fff (/home/a3f/dl/build/barebox/sandbox/barebox+0x25afff) Just disable the special ASan accounting there until this is figured out. bthreads still function there, but ASan may yield false positives according to the message. This does not affect non-sandbox platforms. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/sandbox/Kconfig')
-rw-r--r--arch/sandbox/Kconfig3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
index cef8e9fb7a..01078bca97 100644
--- a/arch/sandbox/Kconfig
+++ b/arch/sandbox/Kconfig
@@ -43,6 +43,9 @@ config 64BIT
select ARCH_DMA_ADDR_T_64BIT
select PHYS_ADDR_T_64BIT
+config 32BIT
+ def_bool !64BIT
+
config SANDBOX_LINUX_I386
bool "32-bit x86 barebox" if CC_HAS_LINUX_I386_SUPPORT