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
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
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 \ --subject='Re: [PATCH v3 resend 2/2] selftests/memfd: Add tests for F_SEAL_FUTURE_WRITE seal' \ /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
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.