Lines Matching refs:fd

31 	int r, fd;  in mfd_assert_new()  local
33 fd = sys_memfd_create(name, flags); in mfd_assert_new()
34 if (fd < 0) { in mfd_assert_new()
40 r = ftruncate(fd, sz); in mfd_assert_new()
46 return fd; in mfd_assert_new()
62 static unsigned int mfd_assert_get_seals(int fd) in mfd_assert_get_seals() argument
66 r = fcntl(fd, F_GET_SEALS); in mfd_assert_get_seals()
68 printf("GET_SEALS(%d) failed: %m\n", fd); in mfd_assert_get_seals()
75 static void mfd_assert_has_seals(int fd, unsigned int seals) in mfd_assert_has_seals() argument
79 s = mfd_assert_get_seals(fd); in mfd_assert_has_seals()
81 printf("%u != %u = GET_SEALS(%d)\n", seals, s, fd); in mfd_assert_has_seals()
86 static void mfd_assert_add_seals(int fd, unsigned int seals) in mfd_assert_add_seals() argument
91 s = mfd_assert_get_seals(fd); in mfd_assert_add_seals()
92 r = fcntl(fd, F_ADD_SEALS, seals); in mfd_assert_add_seals()
94 printf("ADD_SEALS(%d, %u -> %u) failed: %m\n", fd, s, seals); in mfd_assert_add_seals()
99 static void mfd_fail_add_seals(int fd, unsigned int seals) in mfd_fail_add_seals() argument
104 r = fcntl(fd, F_GET_SEALS); in mfd_fail_add_seals()
110 r = fcntl(fd, F_ADD_SEALS, seals); in mfd_fail_add_seals()
113 fd, s, seals); in mfd_fail_add_seals()
118 static void mfd_assert_size(int fd, size_t size) in mfd_assert_size() argument
123 r = fstat(fd, &st); in mfd_assert_size()
125 printf("fstat(%d) failed: %m\n", fd); in mfd_assert_size()
134 static int mfd_assert_dup(int fd) in mfd_assert_dup() argument
138 r = dup(fd); in mfd_assert_dup()
140 printf("dup(%d) failed: %m\n", fd); in mfd_assert_dup()
147 static void *mfd_assert_mmap_shared(int fd) in mfd_assert_mmap_shared() argument
155 fd, in mfd_assert_mmap_shared()
165 static void *mfd_assert_mmap_private(int fd) in mfd_assert_mmap_private() argument
173 fd, in mfd_assert_mmap_private()
183 static int mfd_assert_open(int fd, int flags, mode_t mode) in mfd_assert_open() argument
188 sprintf(buf, "/proc/self/fd/%d", fd); in mfd_assert_open()
198 static void mfd_fail_open(int fd, int flags, mode_t mode) in mfd_fail_open() argument
203 sprintf(buf, "/proc/self/fd/%d", fd); in mfd_fail_open()
211 static void mfd_assert_read(int fd) in mfd_assert_read() argument
217 l = read(fd, buf, sizeof(buf)); in mfd_assert_read()
228 fd, in mfd_assert_read()
241 fd, in mfd_assert_read()
250 static void mfd_assert_write(int fd) in mfd_assert_write() argument
257 l = write(fd, "\0\0\0\0", 4); in mfd_assert_write()
268 fd, in mfd_assert_write()
282 fd, in mfd_assert_write()
297 fd, in mfd_assert_write()
314 r = fallocate(fd, in mfd_assert_write()
324 static void mfd_fail_write(int fd) in mfd_fail_write() argument
331 l = write(fd, "data", 4); in mfd_fail_write()
342 fd, in mfd_fail_write()
354 fd, in mfd_fail_write()
367 fd, in mfd_fail_write()
378 r = fallocate(fd, in mfd_fail_write()
388 static void mfd_assert_shrink(int fd) in mfd_assert_shrink() argument
392 r = ftruncate(fd, MFD_DEF_SIZE / 2); in mfd_assert_shrink()
398 mfd_assert_size(fd, MFD_DEF_SIZE / 2); in mfd_assert_shrink()
400 fd2 = mfd_assert_open(fd, in mfd_assert_shrink()
405 mfd_assert_size(fd, 0); in mfd_assert_shrink()
408 static void mfd_fail_shrink(int fd) in mfd_fail_shrink() argument
412 r = ftruncate(fd, MFD_DEF_SIZE / 2); in mfd_fail_shrink()
418 mfd_fail_open(fd, in mfd_fail_shrink()
423 static void mfd_assert_grow(int fd) in mfd_assert_grow() argument
427 r = ftruncate(fd, MFD_DEF_SIZE * 2); in mfd_assert_grow()
433 mfd_assert_size(fd, MFD_DEF_SIZE * 2); in mfd_assert_grow()
435 r = fallocate(fd, in mfd_assert_grow()
444 mfd_assert_size(fd, MFD_DEF_SIZE * 4); in mfd_assert_grow()
447 static void mfd_fail_grow(int fd) in mfd_fail_grow() argument
451 r = ftruncate(fd, MFD_DEF_SIZE * 2); in mfd_fail_grow()
457 r = fallocate(fd, in mfd_fail_grow()
467 static void mfd_assert_grow_write(int fd) in mfd_assert_grow_write() argument
472 l = pwrite(fd, buf, sizeof(buf), 0); in mfd_assert_grow_write()
478 mfd_assert_size(fd, MFD_DEF_SIZE * 8); in mfd_assert_grow_write()
481 static void mfd_fail_grow_write(int fd) in mfd_fail_grow_write() argument
486 l = pwrite(fd, buf, sizeof(buf), 0); in mfd_fail_grow_write()
543 int fd; in test_create() local
558 fd = mfd_assert_new("", 0, 0); in test_create()
559 close(fd); in test_create()
569 fd = mfd_assert_new("", 0, MFD_CLOEXEC); in test_create()
570 close(fd); in test_create()
573 fd = mfd_assert_new("", 0, MFD_ALLOW_SEALING); in test_create()
574 close(fd); in test_create()
577 fd = mfd_assert_new("", 0, MFD_ALLOW_SEALING | MFD_CLOEXEC); in test_create()
578 close(fd); in test_create()
587 int fd; in test_basic() local
589 fd = mfd_assert_new("kern_memfd_basic", in test_basic()
594 mfd_assert_has_seals(fd, 0); in test_basic()
595 mfd_assert_add_seals(fd, F_SEAL_SHRINK | in test_basic()
597 mfd_assert_has_seals(fd, F_SEAL_SHRINK | in test_basic()
601 mfd_assert_add_seals(fd, F_SEAL_SHRINK | in test_basic()
603 mfd_assert_has_seals(fd, F_SEAL_SHRINK | in test_basic()
607 mfd_assert_add_seals(fd, F_SEAL_GROW | F_SEAL_SEAL); in test_basic()
608 mfd_assert_has_seals(fd, F_SEAL_SHRINK | in test_basic()
614 mfd_fail_add_seals(fd, F_SEAL_GROW); in test_basic()
615 mfd_fail_add_seals(fd, 0); in test_basic()
617 close(fd); in test_basic()
620 fd = mfd_assert_new("kern_memfd_basic", in test_basic()
623 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_basic()
624 mfd_fail_add_seals(fd, F_SEAL_SHRINK | in test_basic()
627 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_basic()
628 close(fd); in test_basic()
637 int fd; in test_seal_write() local
639 fd = mfd_assert_new("kern_memfd_seal_write", in test_seal_write()
642 mfd_assert_has_seals(fd, 0); in test_seal_write()
643 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_seal_write()
644 mfd_assert_has_seals(fd, F_SEAL_WRITE); in test_seal_write()
646 mfd_assert_read(fd); in test_seal_write()
647 mfd_fail_write(fd); in test_seal_write()
648 mfd_assert_shrink(fd); in test_seal_write()
649 mfd_assert_grow(fd); in test_seal_write()
650 mfd_fail_grow_write(fd); in test_seal_write()
652 close(fd); in test_seal_write()
661 int fd; in test_seal_shrink() local
663 fd = mfd_assert_new("kern_memfd_seal_shrink", in test_seal_shrink()
666 mfd_assert_has_seals(fd, 0); in test_seal_shrink()
667 mfd_assert_add_seals(fd, F_SEAL_SHRINK); in test_seal_shrink()
668 mfd_assert_has_seals(fd, F_SEAL_SHRINK); in test_seal_shrink()
670 mfd_assert_read(fd); in test_seal_shrink()
671 mfd_assert_write(fd); in test_seal_shrink()
672 mfd_fail_shrink(fd); in test_seal_shrink()
673 mfd_assert_grow(fd); in test_seal_shrink()
674 mfd_assert_grow_write(fd); in test_seal_shrink()
676 close(fd); in test_seal_shrink()
685 int fd; in test_seal_grow() local
687 fd = mfd_assert_new("kern_memfd_seal_grow", in test_seal_grow()
690 mfd_assert_has_seals(fd, 0); in test_seal_grow()
691 mfd_assert_add_seals(fd, F_SEAL_GROW); in test_seal_grow()
692 mfd_assert_has_seals(fd, F_SEAL_GROW); in test_seal_grow()
694 mfd_assert_read(fd); in test_seal_grow()
695 mfd_assert_write(fd); in test_seal_grow()
696 mfd_assert_shrink(fd); in test_seal_grow()
697 mfd_fail_grow(fd); in test_seal_grow()
698 mfd_fail_grow_write(fd); in test_seal_grow()
700 close(fd); in test_seal_grow()
709 int fd; in test_seal_resize() local
711 fd = mfd_assert_new("kern_memfd_seal_resize", in test_seal_resize()
714 mfd_assert_has_seals(fd, 0); in test_seal_resize()
715 mfd_assert_add_seals(fd, F_SEAL_SHRINK | F_SEAL_GROW); in test_seal_resize()
716 mfd_assert_has_seals(fd, F_SEAL_SHRINK | F_SEAL_GROW); in test_seal_resize()
718 mfd_assert_read(fd); in test_seal_resize()
719 mfd_assert_write(fd); in test_seal_resize()
720 mfd_fail_shrink(fd); in test_seal_resize()
721 mfd_fail_grow(fd); in test_seal_resize()
722 mfd_fail_grow_write(fd); in test_seal_resize()
724 close(fd); in test_seal_resize()
733 int fd, fd2; in test_share_dup() local
735 fd = mfd_assert_new("kern_memfd_share_dup", in test_share_dup()
738 mfd_assert_has_seals(fd, 0); in test_share_dup()
740 fd2 = mfd_assert_dup(fd); in test_share_dup()
743 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_share_dup()
744 mfd_assert_has_seals(fd, F_SEAL_WRITE); in test_share_dup()
748 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_dup()
751 mfd_assert_add_seals(fd, F_SEAL_SEAL); in test_share_dup()
752 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK | F_SEAL_SEAL); in test_share_dup()
755 mfd_fail_add_seals(fd, F_SEAL_GROW); in test_share_dup()
757 mfd_fail_add_seals(fd, F_SEAL_SEAL); in test_share_dup()
762 mfd_fail_add_seals(fd, F_SEAL_GROW); in test_share_dup()
763 close(fd); in test_share_dup()
772 int fd; in test_share_mmap() local
775 fd = mfd_assert_new("kern_memfd_share_mmap", in test_share_mmap()
778 mfd_assert_has_seals(fd, 0); in test_share_mmap()
781 p = mfd_assert_mmap_shared(fd); in test_share_mmap()
782 mfd_fail_add_seals(fd, F_SEAL_WRITE); in test_share_mmap()
783 mfd_assert_has_seals(fd, 0); in test_share_mmap()
784 mfd_assert_add_seals(fd, F_SEAL_SHRINK); in test_share_mmap()
785 mfd_assert_has_seals(fd, F_SEAL_SHRINK); in test_share_mmap()
789 p = mfd_assert_mmap_private(fd); in test_share_mmap()
790 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_share_mmap()
791 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_mmap()
794 close(fd); in test_share_mmap()
805 int fd, fd2; in test_share_open() local
807 fd = mfd_assert_new("kern_memfd_share_open", in test_share_open()
810 mfd_assert_has_seals(fd, 0); in test_share_open()
812 fd2 = mfd_assert_open(fd, O_RDWR, 0); in test_share_open()
813 mfd_assert_add_seals(fd, F_SEAL_WRITE); in test_share_open()
814 mfd_assert_has_seals(fd, F_SEAL_WRITE); in test_share_open()
818 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_open()
821 close(fd); in test_share_open()
822 fd = mfd_assert_open(fd2, O_RDONLY, 0); in test_share_open()
824 mfd_fail_add_seals(fd, F_SEAL_SEAL); in test_share_open()
825 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK); in test_share_open()
829 fd2 = mfd_assert_open(fd, O_RDWR, 0); in test_share_open()
832 mfd_assert_has_seals(fd, F_SEAL_WRITE | F_SEAL_SHRINK | F_SEAL_SEAL); in test_share_open()
836 close(fd); in test_share_open()
845 int fd; in test_share_fork() local
848 fd = mfd_assert_new("kern_memfd_share_fork", in test_share_fork()
851 mfd_assert_has_seals(fd, 0); in test_share_fork()
854 mfd_assert_add_seals(fd, F_SEAL_SEAL); in test_share_fork()
855 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_share_fork()
857 mfd_fail_add_seals(fd, F_SEAL_WRITE); in test_share_fork()
858 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_share_fork()
862 mfd_fail_add_seals(fd, F_SEAL_WRITE); in test_share_fork()
863 mfd_assert_has_seals(fd, F_SEAL_SEAL); in test_share_fork()
865 close(fd); in test_share_fork()