File tree 1 file changed +43
-0
lines changed
tools/testing/selftests/memfd 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change @@ -282,6 +282,24 @@ static void *mfd_assert_mmap_shared(int fd)
282
282
return p ;
283
283
}
284
284
285
+ static void * mfd_assert_mmap_read_shared (int fd )
286
+ {
287
+ void * p ;
288
+
289
+ p = mmap (NULL ,
290
+ mfd_def_size ,
291
+ PROT_READ ,
292
+ MAP_SHARED ,
293
+ fd ,
294
+ 0 );
295
+ if (p == MAP_FAILED ) {
296
+ printf ("mmap() failed: %m\n" );
297
+ abort ();
298
+ }
299
+
300
+ return p ;
301
+ }
302
+
285
303
static void * mfd_assert_mmap_private (int fd )
286
304
{
287
305
void * p ;
@@ -980,6 +998,30 @@ static void test_seal_future_write(void)
980
998
close (fd );
981
999
}
982
1000
1001
+ static void test_seal_write_map_read_shared (void )
1002
+ {
1003
+ int fd ;
1004
+ void * p ;
1005
+
1006
+ printf ("%s SEAL-WRITE-MAP-READ\n" , memfd_str );
1007
+
1008
+ fd = mfd_assert_new ("kern_memfd_seal_write_map_read" ,
1009
+ mfd_def_size ,
1010
+ MFD_CLOEXEC | MFD_ALLOW_SEALING );
1011
+
1012
+ mfd_assert_add_seals (fd , F_SEAL_WRITE );
1013
+ mfd_assert_has_seals (fd , F_SEAL_WRITE );
1014
+
1015
+ p = mfd_assert_mmap_read_shared (fd );
1016
+
1017
+ mfd_assert_read (fd );
1018
+ mfd_assert_read_shared (fd );
1019
+ mfd_fail_write (fd );
1020
+
1021
+ munmap (p , mfd_def_size );
1022
+ close (fd );
1023
+ }
1024
+
983
1025
/*
984
1026
* Test SEAL_SHRINK
985
1027
* Test whether SEAL_SHRINK actually prevents shrinking
@@ -1593,6 +1635,7 @@ int main(int argc, char **argv)
1593
1635
1594
1636
test_seal_write ();
1595
1637
test_seal_future_write ();
1638
+ test_seal_write_map_read_shared ();
1596
1639
test_seal_shrink ();
1597
1640
test_seal_grow ();
1598
1641
test_seal_resize ();
You can’t perform that action at this time.
0 commit comments