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 <[email protected]>
---
 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


Reply via email to