kasan: Disable validation of function parameters passed by value
It appears that the emitted code in the caller does not update shadow state for values passed on the stack to the callee, which it seemingly ought to do after pushing values on the stack and prior to the call itself. This leaves open a window where an interrupt handler can cause regions of the stack containing these values to be poisoned, resulting in rare false positive reports. This happens particularly in the amd64 TLB invalidation code, where we liberally pass cpuset_t's around by value. LLVM has a flag to disable validation of accesses of function parameters passed by value. Such validation is itself a relatively new feature. Turn it off for now. Reported by: pho, syzkaller MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
175d3380a3
commit
2a519c3b14
@ -100,7 +100,8 @@ SAN_CFLAGS+= -DSAN_NEEDS_INTERCEPTORS -DSAN_INTERCEPTOR_PREFIX=kasan \
|
|||||||
-mllvm -asan-instrument-dynamic-allocas=true \
|
-mllvm -asan-instrument-dynamic-allocas=true \
|
||||||
-mllvm -asan-globals=true \
|
-mllvm -asan-globals=true \
|
||||||
-mllvm -asan-use-after-scope=true \
|
-mllvm -asan-use-after-scope=true \
|
||||||
-mllvm -asan-instrumentation-with-call-threshold=0
|
-mllvm -asan-instrumentation-with-call-threshold=0 \
|
||||||
|
-mllvm -asan-instrument-byval=false
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
KCSAN_ENABLED!= grep KCSAN opt_global.h || true ; echo
|
KCSAN_ENABLED!= grep KCSAN opt_global.h || true ; echo
|
||||||
|
Loading…
Reference in New Issue
Block a user