github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/sys/linux/uffd.txt (about) 1 # Copyright 2018 syzkaller project authors. All rights reserved. 2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 include <uapi/linux/ioctl.h> 5 include <uapi/linux/fcntl.h> 6 include <uapi/linux/userfaultfd.h> 7 8 resource fd_uffd[fd] 9 resource fd_uffd_dev[fd] 10 11 userfaultfd(flags flags[userfaultfd_flags]) fd_uffd 12 openat$userfaultfd(fd const[AT_FDCWD], file ptr[in, string["/dev/userfaultfd"]], flags flags[userfaultfd_flags], mode const[0]) fd_uffd_dev 13 14 ioctl$UFFDIO_API(fd fd_uffd, cmd const[UFFDIO_API], arg ptr[in, uffdio_api]) 15 ioctl$UFFDIO_REGISTER(fd fd_uffd, cmd const[UFFDIO_REGISTER], arg ptr[in, uffdio_register]) 16 ioctl$UFFDIO_UNREGISTER(fd fd_uffd, cmd const[UFFDIO_UNREGISTER], arg ptr[in, uffdio_range]) 17 ioctl$UFFDIO_WAKE(fd fd_uffd, cmd const[UFFDIO_WAKE], arg ptr[in, uffdio_range]) 18 ioctl$UFFDIO_COPY(fd fd_uffd, cmd const[UFFDIO_COPY], arg ptr[in, uffdio_copy]) 19 ioctl$UFFDIO_ZEROPAGE(fd fd_uffd, cmd const[UFFDIO_ZEROPAGE], arg ptr[in, uffdio_zeropage]) 20 ioctl$UFFDIO_MOVE(fd fd_uffd, cmd const[UFFDIO_MOVE], arg ptr[in, uffdio_move]) 21 ioctl$UFFDIO_WRITEPROTECT(fd fd_uffd, cmd const[UFFDIO_WRITEPROTECT], arg ptr[in, uffdio_writeprotect]) 22 ioctl$UFFDIO_CONTINUE(fd fd_uffd, cmd const[UFFDIO_CONTINUE], arg ptr[in, uffdio_continue]) 23 ioctl$UFFDIO_POISON(fd fd_uffd, cmd const[UFFDIO_POISON], arg ptr[in, uffdio_poison]) 24 25 ioctl$USERFAULTFD_IOC_NEW(fd fd_uffd_dev, cmd const[USERFAULTFD_IOC_NEW]) fd_uffd 26 27 userfaultfd_flags = O_NONBLOCK, O_CLOEXEC, UFFD_USER_MODE_ONLY 28 uffdio_register_mode = UFFDIO_REGISTER_MODE_MISSING, UFFDIO_REGISTER_MODE_WP, UFFDIO_REGISTER_MODE_MINOR 29 uffdio_copy_mode = UFFDIO_COPY_MODE_DONTWAKE, UFFDIO_COPY_MODE_WP 30 uffdio_zero_mode = UFFDIO_ZEROPAGE_MODE_DONTWAKE 31 uffdio_features = UFFD_FEATURE_PAGEFAULT_FLAG_WP, UFFD_FEATURE_EVENT_FORK, UFFD_FEATURE_EVENT_REMAP, UFFD_FEATURE_EVENT_REMOVE, UFFD_FEATURE_MISSING_HUGETLBFS, UFFD_FEATURE_MISSING_SHMEM, UFFD_FEATURE_EVENT_UNMAP, UFFD_FEATURE_SIGBUS, UFFD_FEATURE_THREAD_ID, UFFD_FEATURE_MINOR_HUGETLBFS, UFFD_FEATURE_MINOR_SHMEM 32 33 uffdio_api { 34 api const[UFFD_API, int64] 35 featur flags[uffdio_features, int64] 36 ioctls const[0, int64] 37 } 38 39 uffdio_range { 40 start vma64 41 len len[start, int64] 42 } 43 44 uffdio_register { 45 range uffdio_range 46 mode flags[uffdio_register_mode, int64] 47 ioctls const[0, int64] 48 } 49 50 uffdio_copy { 51 dst vma64 52 src vma64 53 len len[dst, int64] 54 mode flags[uffdio_copy_mode, int64] 55 copy const[0, int64] 56 } 57 58 uffdio_zeropage { 59 range uffdio_range 60 mode flags[uffdio_zero_mode, int64] 61 zeropg const[0, int64] 62 } 63 64 uffdio_move { 65 dst vma64 66 src vma64 67 len len[dst, int64] 68 mode flags[uffdio_move_mode, int64] 69 move int64 (out) 70 } 71 72 uffdio_move_mode = UFFDIO_MOVE_MODE_DONTWAKE, UFFDIO_MOVE_MODE_ALLOW_SRC_HOLES 73 74 uffdio_writeprotect { 75 range uffdio_range 76 mode flags[uffdio_writeprotect_mode, int64] 77 } 78 79 uffdio_writeprotect_mode = UFFDIO_WRITEPROTECT_MODE_WP, UFFDIO_WRITEPROTECT_MODE_DONTWAKE 80 81 uffdio_continue { 82 range uffdio_range 83 mode flags[uffdio_continue_mode, int64] 84 mapped int64 (out) 85 } 86 87 uffdio_continue_mode = UFFDIO_CONTINUE_MODE_DONTWAKE 88 89 uffdio_poison { 90 range uffdio_range 91 mode flags[uffdio_poison_mode, int64] 92 updated int64 (out) 93 } 94 95 uffdio_poison_mode = UFFDIO_POISON_MODE_DONTWAKE