selftests/perf_events: Add a mmap() correctness test
authorLorenzo Stoakes <lorenzo.stoakes@oracle.com>
Sat, 2 Aug 2025 20:55:35 +0000 (22:55 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 5 Aug 2025 19:55:29 +0000 (21:55 +0200)
commit084d2ac4030c5919e85bba1f4af26e33491469cb
tree539d5ce488b609476996e79e3484b3ad2203af72
parentb024d7b56c77191cde544f838debb7f8451cd0d6
selftests/perf_events: Add a mmap() correctness test

Exercise various mmap(), munmap() and mremap() invocations, which might
cause a perf buffer mapping to be split or truncated.

To avoid hard coding the perf event and having dependencies on
architectures and configuration options, scan through event types in sysfs
and try to open them. On success, try to mmap() and if that succeeds try to
mmap() the AUX buffer.

In case that no AUX buffer supporting event is found, only test the base
buffer mapping. If no mappable event is found or permissions are not
sufficient, skip the tests.

Reserve a PROT_NONE region for both rb and aux tests to allow testing the
case where mremap unmaps beyond the end of a mapped VMA to prevent it from
unmapping unrelated mappings.

Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Co-developed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
tools/testing/selftests/perf_events/.gitignore
tools/testing/selftests/perf_events/Makefile
tools/testing/selftests/perf_events/mmap.c [new file with mode: 0644]