OpenBSD CVS

CVS log for src/sys/kern/subr_kubsan.c


[BACK] Up to [local] / src / sys / kern

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.12 / (download) - annotate - [select for diffs], Wed Nov 6 19:16:48 2019 UTC (4 years, 7 months ago) by anton
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2, OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7, HEAD
Changes since 1.11: +6 -6 lines
Diff to previous 1.11 (colored)

Use atomic operations consistently while writing to kubsan_slot.
Otherwise, reports might go by unnoticed.

Prodded by and ok visa@

Revision 1.11 / (download) - annotate - [select for diffs], Mon Nov 4 17:51:22 2019 UTC (4 years, 7 months ago) by anton
Branch: MAIN
Changes since 1.10: +14 -17 lines
Diff to previous 1.10 (colored)

Regularly poll and report kubsan findings using the timeout(9) API
instead of task(9). Undefined behavior can potentially be present in any
context and calling task_add() isn't always safe.

ok visa@

Revision 1.10 / (download) - annotate - [select for diffs], Sun Nov 3 16:23:36 2019 UTC (4 years, 7 months ago) by anton
Branch: MAIN
Changes since 1.9: +5 -7 lines
Diff to previous 1.9 (colored)

rework kubsan_state into simpler boolean named kubsan_cold

Revision 1.9 / (download) - annotate - [select for diffs], Sun Nov 3 16:16:06 2019 UTC (4 years, 7 months ago) by anton
Branch: MAIN
Changes since 1.8: +41 -1 lines
Diff to previous 1.8 (colored)

add missing handler for float cast overflow; caused by code in
sys/dev/pci/drm/amd/display/dc/calcs/dcn_calc_auto.c

Revision 1.8 / (download) - annotate - [select for diffs], Thu Jun 20 14:55:22 2019 UTC (4 years, 11 months ago) by anton
Branch: MAIN
CVS Tags: OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.7: +380 -218 lines
Diff to previous 1.7 (colored)

Undefined behavior (UB) can potentially be present anywhere in the
kernel. kubsan reports findings using printf() and assuming that calling
printf() is safe in all contexts can be problematic. Instead, defer
reporting of findings to the systq task queue.

Storage for findings is allocated early in the boot process in order to
catch potential UB during boot. The same findings are reported once the
task queue subsystem has been initialized.

Feedback from kettenis@ and ok mpi@

Revision 1.7 / (download) - annotate - [select for diffs], Mon Jun 3 19:39:16 2019 UTC (5 years ago) by anton
Branch: MAIN
Changes since 1.6: +5 -5 lines
Diff to previous 1.6 (colored)

sort struct declarations

Revision 1.6 / (download) - annotate - [select for diffs], Fri May 24 18:51:05 2019 UTC (5 years ago) by anton
Branch: MAIN
Changes since 1.5: +7 -5 lines
Diff to previous 1.5 (colored)

rename struct for consistency

Revision 1.5 / (download) - annotate - [select for diffs], Fri May 24 18:48:05 2019 UTC (5 years ago) by anton
Branch: MAIN
Changes since 1.4: +3 -3 lines
Diff to previous 1.4 (colored)

fix incorrect order of arguments

Revision 1.4 / (download) - annotate - [select for diffs], Fri May 24 18:43:58 2019 UTC (5 years ago) by anton
Branch: MAIN
Changes since 1.3: +31 -3 lines
Diff to previous 1.3 (colored)

A source location in kubsan is an absolute path making reports quite
long. Instead, use everything after the first /sys/ segment as the path.

Revision 1.3 / (download) - annotate - [select for diffs], Fri May 24 18:35:41 2019 UTC (5 years ago) by anton
Branch: MAIN
Changes since 1.2: +48 -4 lines
Diff to previous 1.2 (colored)

The latest inteldrm update brought along code making use of
__attribute__((nonnull)); which the undefined behavior sanitizer in
clang is aware of. A new handler is therefore needed in order to compile
a kernel with kubsan enabled.

ok visa@

Revision 1.2 / (download) - annotate - [select for diffs], Tue Mar 19 20:13:54 2019 UTC (5 years, 2 months ago) by anton
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5
Changes since 1.1: +2 -2 lines
Diff to previous 1.1 (colored)

correct LOCATION_REPORTED mask

Revision 1.1 / (download) - annotate - [select for diffs], Mon Mar 18 17:30:08 2019 UTC (5 years, 2 months ago) by anton
Branch: MAIN

Add kubsan(4), a undefined behavior sanitizer for the kernel. It's
capable of detecting undefined behavior at runtime and all findings are
printed to the system console, including the offending line in the
source code.

kubsan is limited to architectures using Clang as their default compiler
and is not enabled by default.

Derived from the NetBSD implementation.

ok kettenis@ visa@

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.