* [folded-merged] selftests-mm-add-process_madvise-tests-v7.patch removed from -mm tree
@ 2025-08-02 18:01 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2025-08-02 18:01 UTC (permalink / raw)
To: mm-commits, ziy, vbabka, sj, shuah, ryncsn, lorenzo.stoakes,
liam.howlett, jannh, david, broonie, brauner, lianux.mm, akpm
The quilt patch titled
Subject: selftests-mm-add-process_madvise-tests-v7
has been removed from the -mm tree. Its filename was
selftests-mm-add-process_madvise-tests-v7.patch
This patch was dropped because it was folded into selftests-mm-add-process_madvise-tests.patch
------------------------------------------------------
From: wang lian <lianux.mm@gmail.com>
Subject: selftests-mm-add-process_madvise-tests-v7
Date: Tue, 29 Jul 2025 19:31:09 +0800
- In the remote_collapse test, replace default_huge_page_size() with
read_pmd_pagesize()
- Add a new test, invalid_vlen, to verify that process_madvise()
correctly fails with EINVAL when the vlen argument exceeds UIO_MAXIOV.
Link: https://lkml.kernel.org/r/20250729113109.12272-1-lianux.mm@gmail.com
Signed-off-by: wang lian <lianux.mm@gmail.com>
Suggested-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Suggested-by: David Hildenbrand <david@redhat.com>
Suggested-by: Mark Brown <broonie@kernel.org>
Acked-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Tested-by: Zi Yan <ziy@nvidia.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Jann Horn <jannh@google.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Kairui Song <ryncsn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
tools/testing/selftests/mm/process_madv.c | 64 ++++++++++++++++----
1 file changed, 53 insertions(+), 11 deletions(-)
--- a/tools/testing/selftests/mm/process_madv.c~selftests-mm-add-process_madvise-tests-v7
+++ a/tools/testing/selftests/mm/process_madv.c
@@ -141,7 +141,7 @@ TEST_F(process_madvise, remote_collapse)
void *map_addr;
} info;
- huge_page_size = default_huge_page_size();
+ huge_page_size = read_pmd_pagesize();
if (huge_page_size <= 0)
SKIP(return, "Could not determine a valid huge page size.\n");
@@ -193,7 +193,8 @@ TEST_F(process_madvise, remote_collapse)
vec.iov_base = info.map_addr;
vec.iov_len = huge_page_size;
- ret = sys_process_madvise(self->remote_pidfd, &vec, 1, MADV_COLLAPSE, 0);
+ ret = sys_process_madvise(self->remote_pidfd, &vec, 1, MADV_COLLAPSE,
+ 0);
if (ret == -1) {
if (errno == EINVAL)
SKIP(return, "PROCESS_MADV_ADVISE is not supported.\n");
@@ -212,12 +213,18 @@ TEST_F(process_madvise, remote_collapse)
*/
TEST_F(process_madvise, exited_process_pidfd)
{
+ const unsigned long pagesize = self->page_size;
struct iovec vec;
+ char *map;
ssize_t ret;
- int pidfd;
- vec.iov_base = (void *)0x1234;
- vec.iov_len = 4096;
+ map = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1,
+ 0);
+ if (map == MAP_FAILED)
+ SKIP(return, "mmap failed, not enough memory.\n");
+
+ vec.iov_base = map;
+ vec.iov_len = pagesize;
/*
* Using a pidfd for a process that has already exited should fail
@@ -229,16 +236,16 @@ TEST_F(process_madvise, exited_process_p
if (self->child_pid == 0)
exit(0);
- pidfd = syscall(__NR_pidfd_open, self->child_pid, 0);
- ASSERT_GE(pidfd, 0);
+ self->remote_pidfd = syscall(__NR_pidfd_open, self->child_pid, 0);
+ ASSERT_GE(self->remote_pidfd, 0);
/* Wait for the child to ensure it has terminated. */
waitpid(self->child_pid, NULL, 0);
- ret = sys_process_madvise(pidfd, &vec, 1, MADV_DONTNEED, 0);
+ ret = sys_process_madvise(self->remote_pidfd, &vec, 1, MADV_DONTNEED,
+ 0);
ASSERT_EQ(ret, -1);
ASSERT_EQ(errno, ESRCH);
- close(pidfd);
}
/*
@@ -247,11 +254,18 @@ TEST_F(process_madvise, exited_process_p
*/
TEST_F(process_madvise, bad_pidfd)
{
+ const unsigned long pagesize = self->page_size;
struct iovec vec;
+ char *map;
ssize_t ret;
- vec.iov_base = (void *)0x1234;
- vec.iov_len = 4096;
+ map = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1,
+ 0);
+ if (map == MAP_FAILED)
+ SKIP(return, "mmap failed, not enough memory.\n");
+
+ vec.iov_base = map;
+ vec.iov_len = pagesize;
/* Using an invalid fd number (-1) should fail with EBADF. */
ret = sys_process_madvise(-1, &vec, 1, MADV_DONTNEED, 0);
@@ -268,6 +282,34 @@ TEST_F(process_madvise, bad_pidfd)
}
/*
+ * Test that process_madvise() rejects vlen > UIO_MAXIOV.
+ * The kernel should return -EINVAL when the number of iovecs exceeds 1024.
+ */
+TEST_F(process_madvise, invalid_vlen)
+{
+ const unsigned long pagesize = self->page_size;
+ int pidfd = self->pidfd;
+ struct iovec vec;
+ char *map;
+ ssize_t ret;
+
+ map = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1,
+ 0);
+ if (map == MAP_FAILED)
+ SKIP(return, "mmap failed, not enough memory.\n");
+
+ vec.iov_base = map;
+ vec.iov_len = pagesize;
+
+ ret = sys_process_madvise(pidfd, &vec, 1025, MADV_DONTNEED, 0);
+ ASSERT_EQ(ret, -1);
+ ASSERT_EQ(errno, EINVAL);
+
+ /* Cleanup. */
+ ASSERT_EQ(munmap(map, pagesize), 0);
+}
+
+/*
* Test process_madvise() with an invalid flag value. Currently, only a flag
* value of 0 is supported. This test is reserved for the future, e.g., if
* synchronous flags are added.
_
Patches currently in -mm which might be from lianux.mm@gmail.com are
selftests-mm-add-process_madvise-tests.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-08-02 18:01 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-02 18:01 [folded-merged] selftests-mm-add-process_madvise-tests-v7.patch removed from -mm tree Andrew Morton
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.