On Fri, Nov 5, 2021 at 10:11 AM Alan Maguire [off-list ref] wrote:
Exception handling is triggered in BPF tracing programs when
a NULL pointer is dereferenced; the exception handler zeroes the
target register and execution of the BPF program progresses.
To test exception handling then, we need to trigger a NULL pointer
dereference for a field which should never be zero; if it is, the
only explanation is the exception handler ran. task->task_works
is the NULL pointer chosen (for a new task from fork() no work
is associated), and the task_works->func field should not be zero
if task_works is non-NULL. Test verifies task_works and
task_works->func are 0.
Signed-off-by: Alan Maguire <redacted>
---
tools/testing/selftests/bpf/prog_tests/exhandler.c | 43 ++++++++++++++++++++++
tools/testing/selftests/bpf/progs/exhandler_kern.c | 43 ++++++++++++++++++++++
2 files changed, 86 insertions(+)
create mode 100644 tools/testing/selftests/bpf/prog_tests/exhandler.c
create mode 100644 tools/testing/selftests/bpf/progs/exhandler_kern.c
The test looks good, thank you!
Acked-by: Andrii Nakryiko <andrii@kernel.org>
[...]