On Wed, May 13, 2026 at 10:58:38AM +0800, Hongfu Li wrote:
>In sigtrap_threads(), the return value of mmap() is checked against
>NULL.  mmap() returns MAP_FAILED, which is (void *)-1, not NULL, when
>it fails.  Since MAP_FAILED is non-zero and non-NULL, the condition
>"p == NULL" will never be true on failure, causing the program to
>proceed with an invalid pointer and segfault if mmap() actually fails
>under memory pressure.
>
>Signed-off-by: Hongfu Li <[email protected]>

Ah, looks you are right.

Reviewed-by: Wei Yang <[email protected]>

>---
> tools/testing/selftests/perf_events/watermark_signal.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/tools/testing/selftests/perf_events/watermark_signal.c 
>b/tools/testing/selftests/perf_events/watermark_signal.c
>index 0f64b9b17081..a84709cabd8b 100644
>--- a/tools/testing/selftests/perf_events/watermark_signal.c
>+++ b/tools/testing/selftests/perf_events/watermark_signal.c
>@@ -102,7 +102,7 @@ TEST(watermark_signal)
>       }
> 
>       p = mmap(NULL, 2 * page_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 
> 0);
>-      if (p == NULL) {
>+      if (p == MAP_FAILED) {
>               perror("mmap");
>               goto cleanup;
>       }
>-- 
>2.25.1

-- 
Wei Yang
Help you, Help me

Reply via email to