From: "Joel Fernandes (Google)" <joel@joelfernandes.org>
To: linux-kernel@vger.kernel.org
Cc: "Joel Fernandes (Google)" <joel@joelfernandes.org>,
dancol@google.com, minchan@kernel.org,
"John Stultz" <john.stultz@linaro.org>,
"Al Viro" <viro@zeniv.linux.org.uk>,
"Andrew Morton" <akpm@linux-foundation.org>,
gregkh@linuxfoundation.org, hch@infradead.org,
"J. Bruce Fields" <bfields@fieldses.org>,
"Jeff Layton" <jlayton@kernel.org>,
jreck@google.com, "Khalid Aziz" <khalid.aziz@oracle.com>,
"Lei Yang" <Lei.Yang@windriver.com>,
linux-fsdevel@vger.kernel.org, linux-kselftest@vger.kernel.org,
linux-mm@kvack.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Mike Kravetz" <mike.kravetz@oracle.com>,
"Shuah Khan" <shuah@kernel.org>,
tkjos@google.com, valdis.kletnieks@vt.edu
Subject: [PATCH v3 resend 2/2] selftests/memfd: Add tests for F_SEAL_FUTURE_WRITE seal
Date: Wed, 7 Nov 2018 20:15:37 -0800 [thread overview]
Message-ID: <20181108041537.39694-2-joel@joelfernandes.org> (raw)
In-Reply-To: <20181108041537.39694-1-joel@joelfernandes.org>
Add tests to verify sealing memfds with the F_SEAL_FUTURE_WRITE works as
expected.
Cc: dancol@google.com
Cc: minchan@kernel.org
Reviewed-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
tools/testing/selftests/memfd/memfd_test.c | 74 ++++++++++++++++++++++
1 file changed, 74 insertions(+)
diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c
index 10baa1652fc2..32b207ca7372 100644
--- a/tools/testing/selftests/memfd/memfd_test.c
+++ b/tools/testing/selftests/memfd/memfd_test.c
@@ -692,6 +692,79 @@ static void test_seal_write(void)
close(fd);
}
+/*
+ * Test SEAL_FUTURE_WRITE
+ * Test whether SEAL_FUTURE_WRITE actually prevents modifications.
+ */
+static void test_seal_future_write(void)
+{
+ int fd;
+ void *p;
+
+ printf("%s SEAL-FUTURE-WRITE\n", memfd_str);
+
+ fd = mfd_assert_new("kern_memfd_seal_future_write",
+ mfd_def_size,
+ MFD_CLOEXEC | MFD_ALLOW_SEALING);
+
+ p = mfd_assert_mmap_shared(fd);
+
+ mfd_assert_has_seals(fd, 0);
+ /* Not adding grow/shrink seals makes the future write
+ * seal fail to get added
+ */
+ mfd_fail_add_seals(fd, F_SEAL_FUTURE_WRITE);
+
+ mfd_assert_add_seals(fd, F_SEAL_GROW);
+ mfd_assert_has_seals(fd, F_SEAL_GROW);
+
+ /* Should still fail since shrink seal has
+ * not yet been added
+ */
+ mfd_fail_add_seals(fd, F_SEAL_FUTURE_WRITE);
+
+ mfd_assert_add_seals(fd, F_SEAL_SHRINK);
+ mfd_assert_has_seals(fd, F_SEAL_GROW |
+ F_SEAL_SHRINK);
+
+ /* Now should succeed, also verifies that the seal
+ * could be added with an existing writable mmap
+ */
+ mfd_assert_add_seals(fd, F_SEAL_FUTURE_WRITE);
+ mfd_assert_has_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+
+ /* read should pass, writes should fail */
+ mfd_assert_read(fd);
+ mfd_fail_write(fd);
+
+ munmap(p, mfd_def_size);
+ close(fd);
+
+ /* Test adding all seals (grow, shrink, future write) at once */
+ fd = mfd_assert_new("kern_memfd_seal_future_write2",
+ mfd_def_size,
+ MFD_CLOEXEC | MFD_ALLOW_SEALING);
+
+ p = mfd_assert_mmap_shared(fd);
+
+ mfd_assert_has_seals(fd, 0);
+ mfd_assert_add_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+ mfd_assert_has_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+
+ /* read should pass, writes should fail */
+ mfd_assert_read(fd);
+ mfd_fail_write(fd);
+
+ munmap(p, mfd_def_size);
+ close(fd);
+}
+
/*
* Test SEAL_SHRINK
* Test whether SEAL_SHRINK actually prevents shrinking
@@ -945,6 +1018,7 @@ int main(int argc, char **argv)
test_basic();
test_seal_write();
+ test_seal_future_write();
test_seal_shrink();
test_seal_grow();
test_seal_resize();
--
2.19.1.930.g4563a0d9d0-goog
WARNING: multiple messages have this Message-ID (diff)
From: joel at joelfernandes.org (Joel Fernandes (Google))
Subject: [PATCH v3 resend 2/2] selftests/memfd: Add tests for F_SEAL_FUTURE_WRITE seal
Date: Wed, 7 Nov 2018 20:15:37 -0800 [thread overview]
Message-ID: <20181108041537.39694-2-joel@joelfernandes.org> (raw)
In-Reply-To: <20181108041537.39694-1-joel@joelfernandes.org>
Add tests to verify sealing memfds with the F_SEAL_FUTURE_WRITE works as
expected.
Cc: dancol at google.com
Cc: minchan at kernel.org
Reviewed-by: John Stultz <john.stultz at linaro.org>
Signed-off-by: Joel Fernandes (Google) <joel at joelfernandes.org>
---
tools/testing/selftests/memfd/memfd_test.c | 74 ++++++++++++++++++++++
1 file changed, 74 insertions(+)
diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c
index 10baa1652fc2..32b207ca7372 100644
--- a/tools/testing/selftests/memfd/memfd_test.c
+++ b/tools/testing/selftests/memfd/memfd_test.c
@@ -692,6 +692,79 @@ static void test_seal_write(void)
close(fd);
}
+/*
+ * Test SEAL_FUTURE_WRITE
+ * Test whether SEAL_FUTURE_WRITE actually prevents modifications.
+ */
+static void test_seal_future_write(void)
+{
+ int fd;
+ void *p;
+
+ printf("%s SEAL-FUTURE-WRITE\n", memfd_str);
+
+ fd = mfd_assert_new("kern_memfd_seal_future_write",
+ mfd_def_size,
+ MFD_CLOEXEC | MFD_ALLOW_SEALING);
+
+ p = mfd_assert_mmap_shared(fd);
+
+ mfd_assert_has_seals(fd, 0);
+ /* Not adding grow/shrink seals makes the future write
+ * seal fail to get added
+ */
+ mfd_fail_add_seals(fd, F_SEAL_FUTURE_WRITE);
+
+ mfd_assert_add_seals(fd, F_SEAL_GROW);
+ mfd_assert_has_seals(fd, F_SEAL_GROW);
+
+ /* Should still fail since shrink seal has
+ * not yet been added
+ */
+ mfd_fail_add_seals(fd, F_SEAL_FUTURE_WRITE);
+
+ mfd_assert_add_seals(fd, F_SEAL_SHRINK);
+ mfd_assert_has_seals(fd, F_SEAL_GROW |
+ F_SEAL_SHRINK);
+
+ /* Now should succeed, also verifies that the seal
+ * could be added with an existing writable mmap
+ */
+ mfd_assert_add_seals(fd, F_SEAL_FUTURE_WRITE);
+ mfd_assert_has_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+
+ /* read should pass, writes should fail */
+ mfd_assert_read(fd);
+ mfd_fail_write(fd);
+
+ munmap(p, mfd_def_size);
+ close(fd);
+
+ /* Test adding all seals (grow, shrink, future write) at once */
+ fd = mfd_assert_new("kern_memfd_seal_future_write2",
+ mfd_def_size,
+ MFD_CLOEXEC | MFD_ALLOW_SEALING);
+
+ p = mfd_assert_mmap_shared(fd);
+
+ mfd_assert_has_seals(fd, 0);
+ mfd_assert_add_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+ mfd_assert_has_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+
+ /* read should pass, writes should fail */
+ mfd_assert_read(fd);
+ mfd_fail_write(fd);
+
+ munmap(p, mfd_def_size);
+ close(fd);
+}
+
/*
* Test SEAL_SHRINK
* Test whether SEAL_SHRINK actually prevents shrinking
@@ -945,6 +1018,7 @@ int main(int argc, char **argv)
test_basic();
test_seal_write();
+ test_seal_future_write();
test_seal_shrink();
test_seal_grow();
test_seal_resize();
--
2.19.1.930.g4563a0d9d0-goog
WARNING: multiple messages have this Message-ID (diff)
From: joel@joelfernandes.org (Joel Fernandes (Google))
Subject: [PATCH v3 resend 2/2] selftests/memfd: Add tests for F_SEAL_FUTURE_WRITE seal
Date: Wed, 7 Nov 2018 20:15:37 -0800 [thread overview]
Message-ID: <20181108041537.39694-2-joel@joelfernandes.org> (raw)
Message-ID: <20181108041537.QM_gLALwQkcKihp_jLP_L8-0UbBlbNBdLlfab2_lusU@z> (raw)
In-Reply-To: <20181108041537.39694-1-joel@joelfernandes.org>
Add tests to verify sealing memfds with the F_SEAL_FUTURE_WRITE works as
expected.
Cc: dancol at google.com
Cc: minchan at kernel.org
Reviewed-by: John Stultz <john.stultz at linaro.org>
Signed-off-by: Joel Fernandes (Google) <joel at joelfernandes.org>
---
tools/testing/selftests/memfd/memfd_test.c | 74 ++++++++++++++++++++++
1 file changed, 74 insertions(+)
diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c
index 10baa1652fc2..32b207ca7372 100644
--- a/tools/testing/selftests/memfd/memfd_test.c
+++ b/tools/testing/selftests/memfd/memfd_test.c
@@ -692,6 +692,79 @@ static void test_seal_write(void)
close(fd);
}
+/*
+ * Test SEAL_FUTURE_WRITE
+ * Test whether SEAL_FUTURE_WRITE actually prevents modifications.
+ */
+static void test_seal_future_write(void)
+{
+ int fd;
+ void *p;
+
+ printf("%s SEAL-FUTURE-WRITE\n", memfd_str);
+
+ fd = mfd_assert_new("kern_memfd_seal_future_write",
+ mfd_def_size,
+ MFD_CLOEXEC | MFD_ALLOW_SEALING);
+
+ p = mfd_assert_mmap_shared(fd);
+
+ mfd_assert_has_seals(fd, 0);
+ /* Not adding grow/shrink seals makes the future write
+ * seal fail to get added
+ */
+ mfd_fail_add_seals(fd, F_SEAL_FUTURE_WRITE);
+
+ mfd_assert_add_seals(fd, F_SEAL_GROW);
+ mfd_assert_has_seals(fd, F_SEAL_GROW);
+
+ /* Should still fail since shrink seal has
+ * not yet been added
+ */
+ mfd_fail_add_seals(fd, F_SEAL_FUTURE_WRITE);
+
+ mfd_assert_add_seals(fd, F_SEAL_SHRINK);
+ mfd_assert_has_seals(fd, F_SEAL_GROW |
+ F_SEAL_SHRINK);
+
+ /* Now should succeed, also verifies that the seal
+ * could be added with an existing writable mmap
+ */
+ mfd_assert_add_seals(fd, F_SEAL_FUTURE_WRITE);
+ mfd_assert_has_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+
+ /* read should pass, writes should fail */
+ mfd_assert_read(fd);
+ mfd_fail_write(fd);
+
+ munmap(p, mfd_def_size);
+ close(fd);
+
+ /* Test adding all seals (grow, shrink, future write) at once */
+ fd = mfd_assert_new("kern_memfd_seal_future_write2",
+ mfd_def_size,
+ MFD_CLOEXEC | MFD_ALLOW_SEALING);
+
+ p = mfd_assert_mmap_shared(fd);
+
+ mfd_assert_has_seals(fd, 0);
+ mfd_assert_add_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+ mfd_assert_has_seals(fd, F_SEAL_SHRINK |
+ F_SEAL_GROW |
+ F_SEAL_FUTURE_WRITE);
+
+ /* read should pass, writes should fail */
+ mfd_assert_read(fd);
+ mfd_fail_write(fd);
+
+ munmap(p, mfd_def_size);
+ close(fd);
+}
+
/*
* Test SEAL_SHRINK
* Test whether SEAL_SHRINK actually prevents shrinking
@@ -945,6 +1018,7 @@ int main(int argc, char **argv)
test_basic();
test_seal_write();
+ test_seal_future_write();
test_seal_shrink();
test_seal_grow();
test_seal_resize();
--
2.19.1.930.g4563a0d9d0-goog
next prev parent reply other threads:[~2018-11-08 4:16 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-08 4:15 [PATCH v3 resend 1/2] mm: Add an F_SEAL_FUTURE_WRITE seal to memfd Joel Fernandes (Google)
2018-11-08 4:15 ` Joel Fernandes (Google)
2018-11-08 4:15 ` joel
2018-11-08 4:15 ` Joel Fernandes (Google) [this message]
2018-11-08 4:15 ` [PATCH v3 resend 2/2] selftests/memfd: Add tests for F_SEAL_FUTURE_WRITE seal Joel Fernandes (Google)
2018-11-08 4:15 ` joel
2018-11-09 8:49 ` [PATCH v3 resend 1/2] mm: Add an F_SEAL_FUTURE_WRITE seal to memfd Joel Fernandes
2018-11-09 8:49 ` Joel Fernandes
2018-11-09 8:49 ` joel
2018-11-09 20:36 ` Andrew Morton
2018-11-09 20:36 ` Andrew Morton
2018-11-09 20:36 ` akpm
2018-11-10 3:54 ` Joel Fernandes
2018-11-10 3:54 ` Joel Fernandes
2018-11-10 3:54 ` joel
2018-11-09 21:06 ` Jann Horn
2018-11-09 21:06 ` Jann Horn
2018-11-09 21:06 ` jannh
2018-11-09 21:19 ` Jann Horn
2018-11-09 21:19 ` Jann Horn
2018-11-09 21:19 ` jannh
2018-11-10 3:20 ` Joel Fernandes
2018-11-10 3:20 ` Joel Fernandes
2018-11-10 3:20 ` joel
2018-11-10 6:05 ` Andy Lutomirski
2018-11-10 6:05 ` Andy Lutomirski
2018-11-10 6:05 ` Andy Lutomirski
2018-11-10 6:05 ` luto
2018-11-10 18:24 ` Joel Fernandes
2018-11-10 18:24 ` Joel Fernandes
2018-11-10 18:24 ` Joel Fernandes
2018-11-10 18:24 ` Joel Fernandes
2018-11-10 18:24 ` joel
2018-11-10 18:45 ` Daniel Colascione
2018-11-10 18:45 ` Daniel Colascione
2018-11-10 18:45 ` Daniel Colascione
2018-11-10 18:45 ` dancol
2018-11-10 19:11 ` Daniel Colascione
2018-11-10 19:11 ` Daniel Colascione
2018-11-10 19:11 ` Daniel Colascione
2018-11-10 19:11 ` dancol
2018-11-10 19:55 ` Andy Lutomirski
2018-11-10 19:55 ` Andy Lutomirski
2018-11-10 19:55 ` Andy Lutomirski
2018-11-10 19:55 ` luto
2018-11-10 22:09 ` Joel Fernandes
2018-11-10 22:09 ` Joel Fernandes
2018-11-10 22:09 ` Joel Fernandes
2018-11-10 22:09 ` Joel Fernandes
2018-11-10 22:09 ` joel
2018-11-10 22:18 ` Andy Lutomirski
2018-11-10 22:18 ` Andy Lutomirski
2018-11-10 22:18 ` Andy Lutomirski
2018-11-10 22:18 ` luto
2018-11-11 2:38 ` Joel Fernandes
2018-11-11 2:38 ` Joel Fernandes
2018-11-11 2:38 ` Joel Fernandes
2018-11-11 2:38 ` Joel Fernandes
2018-11-11 2:38 ` joel
2018-11-11 3:40 ` Andy Lutomirski
2018-11-11 3:40 ` Andy Lutomirski
2018-11-11 3:40 ` Andy Lutomirski
2018-11-11 3:40 ` luto
2018-11-11 4:01 ` Joel Fernandes
2018-11-11 4:01 ` Joel Fernandes
2018-11-11 4:01 ` Joel Fernandes
2018-11-11 4:01 ` Joel Fernandes
2018-11-11 4:01 ` joel
2018-11-11 8:09 ` Joel Fernandes
2018-11-11 8:09 ` Joel Fernandes
2018-11-11 8:09 ` Joel Fernandes
2018-11-11 8:09 ` Joel Fernandes
2018-11-11 8:09 ` joel
2018-11-11 8:30 ` Daniel Colascione
2018-11-11 8:30 ` Daniel Colascione
2018-11-11 8:30 ` Daniel Colascione
2018-11-11 8:30 ` dancol
2018-11-11 15:14 ` Andy Lutomirski
2018-11-11 15:14 ` Andy Lutomirski
2018-11-11 15:14 ` Andy Lutomirski
2018-11-11 15:14 ` luto
2018-11-11 17:36 ` Joel Fernandes
2018-11-11 17:36 ` Joel Fernandes
2018-11-11 17:36 ` Joel Fernandes
2018-11-11 17:36 ` Joel Fernandes
2018-11-11 17:36 ` joel
2018-11-10 12:26 ` Daniel Colascione
2018-11-10 17:10 ` Joel Fernandes
2018-11-10 17:10 ` Joel Fernandes
2018-11-10 17:10 ` Joel Fernandes
2018-11-10 17:10 ` joel
2018-11-09 21:40 ` Andy Lutomirski
2018-11-09 21:40 ` Andy Lutomirski
2018-11-09 21:40 ` luto
2018-11-09 20:02 ` Michael Tirado
2018-11-09 20:02 ` Michael Tirado
2018-11-09 20:02 ` mtirado418
2018-11-10 1:49 ` Joel Fernandes
2018-11-10 1:49 ` Joel Fernandes
2018-11-10 1:49 ` joel
2018-11-09 22:20 ` Daniel Colascione
2018-11-09 22:20 ` Daniel Colascione
2018-11-09 22:20 ` Daniel Colascione
2018-11-09 22:20 ` dancol
2018-11-09 22:37 ` Andy Lutomirski
2018-11-09 22:37 ` Andy Lutomirski
2018-11-09 22:37 ` Andy Lutomirski
2018-11-09 22:37 ` luto
2018-11-09 22:42 ` Daniel Colascione
2018-11-09 22:42 ` Daniel Colascione
2018-11-09 22:42 ` Daniel Colascione
2018-11-09 22:42 ` dancol
2018-11-09 23:14 ` Andy Lutomirski
2018-11-09 23:14 ` Andy Lutomirski
2018-11-09 23:14 ` Andy Lutomirski
2018-11-09 23:14 ` luto
2018-11-10 1:36 ` Joel Fernandes
2018-11-10 1:36 ` Joel Fernandes
2018-11-10 1:36 ` Joel Fernandes
2018-11-10 1:36 ` Joel Fernandes
2018-11-10 1:36 ` joel
2018-11-09 23:46 ` Joel Fernandes
2018-11-09 23:46 ` Joel Fernandes
2018-11-09 23:46 ` joel
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=20181108041537.39694-2-joel@joelfernandes.org \
--to=joel@joelfernandes.org \
--cc=Lei.Yang@windriver.com \
--cc=akpm@linux-foundation.org \
--cc=bfields@fieldses.org \
--cc=dancol@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=jlayton@kernel.org \
--cc=john.stultz@linaro.org \
--cc=jreck@google.com \
--cc=khalid.aziz@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=marcandre.lureau@redhat.com \
--cc=mike.kravetz@oracle.com \
--cc=minchan@kernel.org \
--cc=shuah@kernel.org \
--cc=tkjos@google.com \
--cc=valdis.kletnieks@vt.edu \
--cc=viro@zeniv.linux.org.uk \
/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.