From: Hongfu Li <hongfu.li@linux.dev>
To: shuah@kernel.org, richard.weiyang@gmail.com,
reddybalavignesh9979@gmail.com, akpm@linux-foundation.org
Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
hongfu.li@linux.dev, Hongfu Li <lihongfu@kylinos.cn>
Subject: [PATCH] selftests/prctl: Fix non-anonymous VMA mapping in set-anon-vma-name test
Date: Mon, 3 Aug 2026 18:30:46 +0800 [thread overview]
Message-ID: <20260803103046.14324-1-hongfu.li@linux.dev> (raw)
From: Hongfu Li <lihongfu@kylinos.cn>
The test creates a non-anonymous VMA (ptr_not_anon) via mmap() with
MAP_PRIVATE but without MAP_ANONYMOUS, using fd=0 (stdin) as the file
descriptor. This always fails because fd=0 is not a regular file,
and the failure was hidden because ASSERT_NE() incorrectly checked
for NULL instead of MAP_FAILED.
Fix by using mkstemp() + ftruncate() to create a real temporary file,
then mapping it with MAP_PRIVATE to obtain a genuine file-backed VMA.
Also fix the mmap() error checks to use MAP_FAILED instead of NULL,
and pass fd=-1 for the anonymous mapping for clarity. The temp file
is unlinked immediately so it does not persist on disk.
Signed-off-by: Hongfu Li <lihongfu@kylinos.cn>
---
.../selftests/prctl/set-anon-vma-name-test.c | 21 ++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/prctl/set-anon-vma-name-test.c b/tools/testing/selftests/prctl/set-anon-vma-name-test.c
index ac6721b184a6..5f9589534da8 100644
--- a/tools/testing/selftests/prctl/set-anon-vma-name-test.c
+++ b/tools/testing/selftests/prctl/set-anon-vma-name-test.c
@@ -4,11 +4,13 @@
*/
#include <errno.h>
+#include <fcntl.h>
#include <sys/prctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <string.h>
+#include <unistd.h>
#include "kselftest_harness.h"
@@ -73,15 +75,24 @@ int was_renaming_successful(char *target_name, unsigned long ptr)
FIXTURE(vma) {
void *ptr_anon, *ptr_not_anon;
+ int fd_not_anon;
};
FIXTURE_SETUP(vma) {
+ char template[] = "./set-anon-vma-test-XXXXXX";
+
self->ptr_anon = mmap(NULL, AREA_SIZE, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
- ASSERT_NE(self->ptr_anon, NULL);
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ ASSERT_NE(self->ptr_anon, MAP_FAILED);
+
+ self->fd_not_anon = mkstemp(template);
+ ASSERT_NE(self->fd_not_anon, -1);
+ unlink(template);
+ ASSERT_EQ(ftruncate(self->fd_not_anon, AREA_SIZE), 0);
self->ptr_not_anon = mmap(NULL, AREA_SIZE, PROT_READ | PROT_WRITE,
- MAP_PRIVATE, 0, 0);
- ASSERT_NE(self->ptr_not_anon, NULL);
+ MAP_PRIVATE, self->fd_not_anon, 0);
+ ASSERT_NE(self->ptr_not_anon, MAP_FAILED);
+ close(self->fd_not_anon);
}
FIXTURE_TEARDOWN(vma) {
@@ -98,7 +109,7 @@ TEST_F(vma, renaming) {
EXPECT_EQ(rename_vma((unsigned long)self->ptr_anon, AREA_SIZE, BAD_NAME), -EINVAL);
TH_LOG("Try to rename non-anonymous VMA");
- EXPECT_EQ(rename_vma((unsigned long) self->ptr_not_anon, AREA_SIZE, GOOD_NAME), -EINVAL);
+ EXPECT_EQ(rename_vma((unsigned long) self->ptr_not_anon, AREA_SIZE, GOOD_NAME), -EBADF);
}
TEST_HARNESS_MAIN
--
2.54.0
next reply other threads:[~2026-08-03 10:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-03 10:30 Hongfu Li [this message]
2026-08-03 21:09 ` [PATCH] selftests/prctl: Fix non-anonymous VMA mapping in set-anon-vma-name test Andrew Morton
2026-08-04 11:12 ` Hongfu Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260803103046.14324-1-hongfu.li@linux.dev \
--to=hongfu.li@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=lihongfu@kylinos.cn \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=reddybalavignesh9979@gmail.com \
--cc=richard.weiyang@gmail.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.