mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
selftests/memfd: add test for mapping write-sealed memfd read-only
[ Upstream commit ea0916e01d
]
Now we have reinstated the ability to map F_SEAL_WRITE mappings read-only,
assert that we are able to do this in a test to ensure that we do not
regress this again.
Link: https://lkml.kernel.org/r/a6377ec470b14c0539b4600cf8fa24bf2e4858ae.1732804776.git.lorenzo.stoakes@oracle.com
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Jann Horn <jannh@google.com>
Cc: Julian Orth <ju.orth@gmail.com>
Cc: Liam R. Howlett <Liam.Howlett@Oracle.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: stable@vger.kernel.org
Signed-off-by: Isaac J. Manjarres <isaacmanjarres@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b7cbdcf37d
commit
ef01acda0b
|
@ -186,6 +186,24 @@ static void *mfd_assert_mmap_shared(int fd)
|
|||
return p;
|
||||
}
|
||||
|
||||
static void *mfd_assert_mmap_read_shared(int fd)
|
||||
{
|
||||
void *p;
|
||||
|
||||
p = mmap(NULL,
|
||||
mfd_def_size,
|
||||
PROT_READ,
|
||||
MAP_SHARED,
|
||||
fd,
|
||||
0);
|
||||
if (p == MAP_FAILED) {
|
||||
printf("mmap() failed: %m\n");
|
||||
abort();
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
static void *mfd_assert_mmap_private(int fd)
|
||||
{
|
||||
void *p;
|
||||
|
@ -802,6 +820,30 @@ static void test_seal_future_write(void)
|
|||
close(fd);
|
||||
}
|
||||
|
||||
static void test_seal_write_map_read_shared(void)
|
||||
{
|
||||
int fd;
|
||||
void *p;
|
||||
|
||||
printf("%s SEAL-WRITE-MAP-READ\n", memfd_str);
|
||||
|
||||
fd = mfd_assert_new("kern_memfd_seal_write_map_read",
|
||||
mfd_def_size,
|
||||
MFD_CLOEXEC | MFD_ALLOW_SEALING);
|
||||
|
||||
mfd_assert_add_seals(fd, F_SEAL_WRITE);
|
||||
mfd_assert_has_seals(fd, F_SEAL_WRITE);
|
||||
|
||||
p = mfd_assert_mmap_read_shared(fd);
|
||||
|
||||
mfd_assert_read(fd);
|
||||
mfd_assert_read_shared(fd);
|
||||
mfd_fail_write(fd);
|
||||
|
||||
munmap(p, mfd_def_size);
|
||||
close(fd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Test SEAL_SHRINK
|
||||
* Test whether SEAL_SHRINK actually prevents shrinking
|
||||
|
@ -1056,6 +1098,7 @@ int main(int argc, char **argv)
|
|||
|
||||
test_seal_write();
|
||||
test_seal_future_write();
|
||||
test_seal_write_map_read_shared();
|
||||
test_seal_shrink();
|
||||
test_seal_grow();
|
||||
test_seal_resize();
|
||||
|
|
Loading…
Reference in New Issue
Block a user