Lines Matching refs:fd
32 int r, fd; in mfd_assert_new() local
34 fd = sys_memfd_create(name, flags); in mfd_assert_new()
35 if (fd < 0) { in mfd_assert_new()
41 r = ftruncate(fd, sz); in mfd_assert_new()
47 return fd; in mfd_assert_new()
63 static unsigned int mfd_assert_get_seals(int fd) in mfd_assert_get_seals() argument
67 r = fcntl(fd, F_GET_SEALS); in mfd_assert_get_seals()
69 printf("GET_SEALS(%d) failed: %m\n", fd); in mfd_assert_get_seals()
76 static void mfd_assert_has_seals(int fd, unsigned int seals) in mfd_assert_has_seals() argument
80 s = mfd_assert_get_seals(fd); in mfd_assert_has_seals()
82 printf("%u != %u = GET_SEALS(%d)\n", seals, s, fd); in mfd_assert_has_seals()
87 static void mfd_assert_add_seals(int fd, unsigned int seals) in mfd_assert_add_seals() argument
92 s = mfd_assert_get_seals(fd); in mfd_assert_add_seals()
93 r = fcntl(fd, F_ADD_SEALS, seals); in mfd_assert_add_seals()
95 printf("ADD_SEALS(%d, %u -> %u) failed: %m\n", fd, s, seals); in mfd_assert_add_seals()
100 static void mfd_fail_add_seals(int fd, unsigned int seals) in mfd_fail_add_seals() argument
105 r = fcntl(fd, F_GET_SEALS); in mfd_fail_add_seals()
111 r = fcntl(fd, F_ADD_SEALS, seals); in mfd_fail_add_seals()
114 fd, s, seals); in mfd_fail_add_seals()
119 static void mfd_assert_size(int fd, size_t size) in mfd_assert_size() argument
124 r = fstat(fd, &st); in mfd_assert_size()
126 printf("fstat(%d) failed: %m\n", fd); in mfd_assert_size()
135 static int mfd_assert_dup(int fd) in mfd_assert_dup() argument
139 r = dup(fd); in mfd_assert_dup()
141 printf("dup(%d) failed: %m\n", fd); in mfd_assert_dup()
148 static void *mfd_assert_mmap_shared(int fd) in mfd_assert_mmap_shared() argument
156 fd, in mfd_assert_mmap_shared()
166 static void *mfd_assert_mmap_private(int fd) in mfd_assert_mmap_private() argument
174 fd, in mfd_assert_mmap_private()
184 static int mfd_assert_open(int fd, int flags, mode_t mode) in mfd_assert_open() argument
189 sprintf(buf, "/proc/self/fd/%d", fd); in mfd_assert_open()
199 static void mfd_fail_open(int fd, int flags, mode_t mode) in mfd_fail_open() argument
204 sprintf(buf, "/proc/self/fd/%d", fd); in mfd_fail_open()
212 static void mfd_assert_read(int fd) in mfd_assert_read() argument
218 l = read(fd, buf, sizeof(buf)); in mfd_assert_read()
229 fd, in mfd_assert_read()
242 fd, in mfd_assert_read()
251 static void mfd_assert_write(int fd) in mfd_assert_write() argument
258 l = write(fd, "\0\0\0\0", 4); in mfd_assert_write()
269 fd, in mfd_assert_write()
283 fd, in mfd_assert_write()
298 fd, in mfd_assert_write()
315 r = fallocate(fd, in mfd_assert_write()
325 static void mfd_fail_write(int fd) in mfd_fail_write() argument
332 l = write(fd, "data", 4); in mfd_fail_write()
343 fd, in mfd_fail_write()
355 fd, in mfd_fail_write()
368 fd, in mfd_fail_write()
379 r = fallocate(fd, in mfd_fail_write()
389 static void mfd_assert_shrink(int fd) in mfd_assert_shrink() argument
393 r = ftruncate(fd, MFD_DEF_SIZE / 2); in mfd_assert_shrink()
399 mfd_assert_size(fd, MFD_DEF_SIZE / 2); in mfd_assert_shrink()
401 fd2 = mfd_assert_open(fd, in mfd_assert_shrink()
406 mfd_assert_size(fd, 0); in mfd_assert_shrink()
409 static void mfd_fail_shrink(int fd) in mfd_fail_shrink() argument
413 r = ftruncate(fd, MFD_DEF_SIZE / 2); in mfd_fail_shrink()
419 mfd_fail_open(fd, in mfd_fail_shrink()
424 static void mfd_assert_grow(int fd) in mfd_assert_grow() argument
428 r = ftruncate(fd, MFD_DEF_SIZE * 2); in mfd_assert_grow()
434 mfd_assert_size(fd, MFD_DEF_SIZE * 2); in mfd_assert_grow()
436 r = fallocate(fd, in mfd_assert_grow()
445 mfd_assert_size(fd, MFD_DEF_SIZE * 4); in mfd_assert_grow()
448 static void mfd_fail_grow(int fd) in mfd_fail_grow() argument
452 r = ftruncate(fd, MFD_DEF_SIZE * 2); in mfd_fail_grow()
458 r = fallocate(fd, in mfd_fail_grow()
468 static void mfd_assert_grow_write(int fd) in mfd_assert_grow_write() argument
473 l = pwrite(fd, buf, sizeof(buf), 0); in mfd_assert_grow_write()
479 mfd_assert_size(fd, MFD_DEF_SIZE * 8); in mfd_assert_grow_write()
482 static void mfd_fail_grow_write(int fd) in mfd_fail_grow_write() argument
487 l = pwrite(fd, buf, sizeof(buf), 0); in mfd_fail_grow_write()
544 int fd; in test_create() local
559 fd = mfd_assert_new("", 0, 0); in test_create()
560 close(fd); in test_create()
570 fd = mfd_assert_new("", 0, MFD_CLOEXEC); in test_create()
571 close(fd); in test_create()
574 fd = mfd_assert_new("", 0, MFD_ALLOW_SEALING); in test_create()
575 close(fd); in test_create()
578 fd = mfd_assert_new("", 0, MFD_ALLOW_SEALING | MFD_CLOEXEC); in test_create()
579 close(fd); in test_create()
588 int fd; in test_basic() local
590 fd = mfd_assert_new("kern_memfd_basic", in test_basic()
595 mfd_assert_has_seals(fd, 0); in test_basic()
596 mfd_assert_add_seals(fd, F_SEAL_SHRINK | in test_basic()
598 mfd_assert_has_seals(fd, F_SEAL_SHRINK | in test_basic()
602 mfd_assert_add_seals(fd, F_SEAL_SHRINK | in test_basic()
604 mfd_assert_has_seals(fd, F_SEAL_SHRINK | in test_basic()
608 mfd_assert_add_seals(fd, F_SEAL_GROW | F_SEAL_SEAL); in test_basic()
609 mfd_assert_has_seals(fd, F_SEAL_SHRINK | in test_basic()
615 mfd_fail_add_seals(fd, F_SEAL_GROW); in test_basic()
616 mfd_fail_add_seals(fd, 0); in test_basic()
618 close(fd); in test_basic()
621 fd = mfd_assert_new("kern_memfd_basic", in test_basic()
624 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_basic()
625 mfd_fail_add_seals(fd, F_SEAL_SHRINK | in test_basic()
628 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_basic()
629 close(fd); in test_basic()
638 int fd; in test_seal_write() local
640 fd = mfd_assert_new("kern_memfd_seal_write", in test_seal_write()
643 mfd_assert_has_seals(fd, 0); in test_seal_write()
644 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_seal_write()
645 mfd_assert_has_seals(fd, F_SEAL_WRITE); in test_seal_write()
647 mfd_assert_read(fd); in test_seal_write()
648 mfd_fail_write(fd); in test_seal_write()
649 mfd_assert_shrink(fd); in test_seal_write()
650 mfd_assert_grow(fd); in test_seal_write()
651 mfd_fail_grow_write(fd); in test_seal_write()
653 close(fd); in test_seal_write()
662 int fd; in test_seal_shrink() local
664 fd = mfd_assert_new("kern_memfd_seal_shrink", in test_seal_shrink()
667 mfd_assert_has_seals(fd, 0); in test_seal_shrink()
668 mfd_assert_add_seals(fd, F_SEAL_SHRINK); in test_seal_shrink()
669 mfd_assert_has_seals(fd, F_SEAL_SHRINK); in test_seal_shrink()
671 mfd_assert_read(fd); in test_seal_shrink()
672 mfd_assert_write(fd); in test_seal_shrink()
673 mfd_fail_shrink(fd); in test_seal_shrink()
674 mfd_assert_grow(fd); in test_seal_shrink()
675 mfd_assert_grow_write(fd); in test_seal_shrink()
677 close(fd); in test_seal_shrink()
686 int fd; in test_seal_grow() local
688 fd = mfd_assert_new("kern_memfd_seal_grow", in test_seal_grow()
691 mfd_assert_has_seals(fd, 0); in test_seal_grow()
692 mfd_assert_add_seals(fd, F_SEAL_GROW); in test_seal_grow()
693 mfd_assert_has_seals(fd, F_SEAL_GROW); in test_seal_grow()
695 mfd_assert_read(fd); in test_seal_grow()
696 mfd_assert_write(fd); in test_seal_grow()
697 mfd_assert_shrink(fd); in test_seal_grow()
698 mfd_fail_grow(fd); in test_seal_grow()
699 mfd_fail_grow_write(fd); in test_seal_grow()
701 close(fd); in test_seal_grow()
710 int fd; in test_seal_resize() local
712 fd = mfd_assert_new("kern_memfd_seal_resize", in test_seal_resize()
715 mfd_assert_has_seals(fd, 0); in test_seal_resize()
716 mfd_assert_add_seals(fd, F_SEAL_SHRINK | F_SEAL_GROW); in test_seal_resize()
717 mfd_assert_has_seals(fd, F_SEAL_SHRINK | F_SEAL_GROW); in test_seal_resize()
719 mfd_assert_read(fd); in test_seal_resize()
720 mfd_assert_write(fd); in test_seal_resize()
721 mfd_fail_shrink(fd); in test_seal_resize()
722 mfd_fail_grow(fd); in test_seal_resize()
723 mfd_fail_grow_write(fd); in test_seal_resize()
725 close(fd); in test_seal_resize()
734 int fd, fd2; in test_share_dup() local
736 fd = mfd_assert_new("kern_memfd_share_dup", in test_share_dup()
739 mfd_assert_has_seals(fd, 0); in test_share_dup()
741 fd2 = mfd_assert_dup(fd); in test_share_dup()
744 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_share_dup()
745 mfd_assert_has_seals(fd, F_SEAL_WRITE); in test_share_dup()
749 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_dup()
752 mfd_assert_add_seals(fd, F_SEAL_SEAL); in test_share_dup()
753 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK | F_SEAL_SEAL); in test_share_dup()
756 mfd_fail_add_seals(fd, F_SEAL_GROW); in test_share_dup()
758 mfd_fail_add_seals(fd, F_SEAL_SEAL); in test_share_dup()
763 mfd_fail_add_seals(fd, F_SEAL_GROW); in test_share_dup()
764 close(fd); in test_share_dup()
773 int fd; in test_share_mmap() local
776 fd = mfd_assert_new("kern_memfd_share_mmap", in test_share_mmap()
779 mfd_assert_has_seals(fd, 0); in test_share_mmap()
782 p = mfd_assert_mmap_shared(fd); in test_share_mmap()
783 mfd_fail_add_seals(fd, F_SEAL_WRITE); in test_share_mmap()
784 mfd_assert_has_seals(fd, 0); in test_share_mmap()
785 mfd_assert_add_seals(fd, F_SEAL_SHRINK); in test_share_mmap()
786 mfd_assert_has_seals(fd, F_SEAL_SHRINK); in test_share_mmap()
790 p = mfd_assert_mmap_private(fd); in test_share_mmap()
791 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_share_mmap()
792 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_mmap()
795 close(fd); in test_share_mmap()
806 int fd, fd2; in test_share_open() local
808 fd = mfd_assert_new("kern_memfd_share_open", in test_share_open()
811 mfd_assert_has_seals(fd, 0); in test_share_open()
813 fd2 = mfd_assert_open(fd, O_RDWR, 0); in test_share_open()
814 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_share_open()
815 mfd_assert_has_seals(fd, F_SEAL_WRITE); in test_share_open()
819 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_open()
822 close(fd); in test_share_open()
823 fd = mfd_assert_open(fd2, O_RDONLY, 0); in test_share_open()
825 mfd_fail_add_seals(fd, F_SEAL_SEAL); in test_share_open()
826 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_open()
830 fd2 = mfd_assert_open(fd, O_RDWR, 0); in test_share_open()
833 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK | F_SEAL_SEAL); in test_share_open()
837 close(fd); in test_share_open()
846 int fd; in test_share_fork() local
849 fd = mfd_assert_new("kern_memfd_share_fork", in test_share_fork()
852 mfd_assert_has_seals(fd, 0); in test_share_fork()
855 mfd_assert_add_seals(fd, F_SEAL_SEAL); in test_share_fork()
856 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_share_fork()
858 mfd_fail_add_seals(fd, F_SEAL_WRITE); in test_share_fork()
859 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_share_fork()
863 mfd_fail_add_seals(fd, F_SEAL_WRITE); in test_share_fork()
864 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_share_fork()
866 close(fd); in test_share_fork()