[PATCH v2] selftests/damon: Add missing NULL checks after malloc()

From: longlong yan

Date: Tue Jul 21 2026 - 02:06:16 EST


In low-memory scenarios, malloc() can fail. Without checking,
the test will dereference NULL and crash, causing the test harness
to report a failure that is unrelated to DAMON functionality.
This is a false negative: the test should skip or report a resource error,
not crash and mask the actual test result.

Add NULL checks after each malloc() call, printing an error message
to stderr and returning -1 on failure.

Signed-off-by: longlong yan <yanlonglong@xxxxxxxxxx>
---
tools/testing/selftests/damon/access_memory.c | 11 ++++++++++-
tools/testing/selftests/damon/access_memory_even.c | 11 ++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/damon/access_memory.c b/tools/testing/selftests/damon/access_memory.c
index 567793b11107..e1a8e050dcd4 100644
--- a/tools/testing/selftests/damon/access_memory.c
+++ b/tools/testing/selftests/damon/access_memory.c
@@ -38,8 +38,17 @@ int main(int argc, char *argv[])
mode = ACCESS_MODE_REPEAT;

regions = malloc(sizeof(*regions) * nr_regions);
- for (i = 0; i < nr_regions; i++)
+ if (!regions) {
+ fprintf(stderr, "Failed to allocate regions array\n");
+ return -1;
+ }
+ for (i = 0; i < nr_regions; i++) {
regions[i] = malloc(sz_region);
+ if (!regions[i]) {
+ fprintf(stderr, "Failed to allocate region %d\n", i);
+ return -1;
+ }
+ }

do {
for (i = 0; i < nr_regions; i++) {
diff --git a/tools/testing/selftests/damon/access_memory_even.c b/tools/testing/selftests/damon/access_memory_even.c
index 93f3a71bcfd4..a443835c119c 100644
--- a/tools/testing/selftests/damon/access_memory_even.c
+++ b/tools/testing/selftests/damon/access_memory_even.c
@@ -26,8 +26,17 @@ int main(int argc, char *argv[])
sz_region = atoi(argv[2]);

regions = malloc(sizeof(*regions) * nr_regions);
- for (i = 0; i < nr_regions; i++)
+ if (!regions) {
+ fprintf(stderr, "Failed to allocate regions array\n");
+ return -1;
+ }
+ for (i = 0; i < nr_regions; i++) {
regions[i] = malloc(sz_region);
+ if (!regions[i]) {
+ fprintf(stderr, "Failed to allocate region %d\n", i);
+ return -1;
+ }
+ }

while (1) {
for (i = 0; i < nr_regions; i++) {
--
2.43.0