linux/kernel/kcsan
Marco Elver bd3cc16d1d kcsan: test: Do not count report printing time against test duration
Since commit d353934702 ("serial: 8250: Switch to nbcon console, take
2"), several KCSAN tests fail with CONFIG_KCSAN_VERBOSE=y when using the
8250 console.

With CONFIG_KCSAN_VERBOSE=y, the report prints the racing tasks' IRQ
trace events via print_irqtrace_events(), which marks its output as a
printk emergency section. Within an emergency section, printk() flushes
all pending messages to nbcon consoles synchronously. With a slow
console, the reporting thread can therefore stall for over a second
while holding report_lock, i.e. before the remaining lines of the report
are stored.

The test, however, stops checking for reports after a fixed deadline,
which is easily exceeded by a single slow report:

| [    5.360278] BUG: KCSAN: data-race in test_kernel_read / test_kernel_write
| [    5.360303] write to 0xffffffffab95a478 of 8 bytes by task 237 on cpu 7:
| ...
| [    5.360411] irq event stamp: 23
| [    6.059836]     # test_basic: EXPECTATION FAILED at kernel/kcsan/kcsan_test.c:735
| ...
| [    6.616416] read to 0xffffffffab95a478 of 8 bytes by task 238 on cpu 9:

Waiting for in-progress reports to complete is insufficient: a slow
report that does not match the expected report still uses up the time
to observe the expected report.

Fix it by pausing the test's time budget while a test-related report is
being printed, bounded by an upper limit to avoid stalling the test
forever. Once a report completes, always check it at least once.

Assisted-by: Antigravity
Signed-off-by: Marco Elver <elver@google.com>
2026-10-10 13:03:13 +00:00
..
.kunitconfig
core.c kcsan: Avoid division by zero in kcsan_prandom_u32_max() 2026-09-30 14:48:10 +00:00
debugfs.c kcsan: Remove redundant call of kallsyms_lookup_name() 2024-10-14 16:44:56 +02:00
encoding.h
kcsan_test.c kcsan: test: Do not count report printing time against test duration 2026-10-10 13:03:13 +00:00
kcsan.h
Makefile kcsan: Enable context analysis 2026-01-05 16:43:35 +01:00
permissive.h
report.c kcsan: Enable context analysis 2026-01-05 16:43:35 +01:00
selftest.c mm: delete checks for xor_unlock_is_negative_byte() 2023-10-18 14:34:17 -07:00