All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.