// https://syzkaller.appspot.com/bug?id=b98be0c44f1a982b284d1150e113042ac4888cfa // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #ifndef __NR_memfd_create #define __NR_memfd_create 319 #endif uint64_t r[3] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; int main(void) { syscall(__NR_mmap, /*addr=*/0x1ffffffff000ul, /*len=*/0x1000ul, /*prot=*/0ul, /*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul, /*fd=*/(intptr_t)-1, /*offset=*/0ul); syscall(__NR_mmap, /*addr=*/0x200000000000ul, /*len=*/0x1000000ul, /*prot=PROT_WRITE|PROT_READ|PROT_EXEC*/ 7ul, /*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul, /*fd=*/(intptr_t)-1, /*offset=*/0ul); syscall(__NR_mmap, /*addr=*/0x200001000000ul, /*len=*/0x1000ul, /*prot=*/0ul, /*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul, /*fd=*/(intptr_t)-1, /*offset=*/0ul); const char* reason; (void)reason; intptr_t res = 0; if (write(1, "executing program\n", sizeof("executing program\n") - 1)) { } memcpy((void*)0x200000000040, "/dev/udmabuf\000", 13); res = syscall(__NR_openat, /*fd=*/0xffffffffffffff9cul, /*file=*/0x200000000040ul, /*flags=*/2, 0); if (res != -1) r[0] = res; memcpy((void*)0x200000000400, "y\0205\373\367u\203%:r\302\271x\244q\301\352_" "\214Z7\315a\233\021X\016\241\317\032\230S7\311\000\000\000\000\000" "\000\000\000\000\000\000\000\000", 47); res = syscall(__NR_memfd_create, /*name=*/0x200000000400ul, /*flags=MFD_ALLOW_SEALING*/ 2ul); if (res != -1) r[1] = res; syscall(__NR_ftruncate, /*fd=*/r[1], /*len=*/0xfffful); syscall(__NR_fcntl, /*fd=*/r[1], /*cmd=*/0x409ul, /*seals=F_SEAL_GROW|F_SEAL_SHRINK|F_SEAL_SEAL*/ 7ul); *(uint32_t*)0x200000000000 = r[1]; *(uint32_t*)0x200000000004 = 0; *(uint64_t*)0x200000000008 = 0; *(uint64_t*)0x200000000010 = 0x8000; res = syscall(__NR_ioctl, /*fd=*/r[0], /*cmd=*/0x40187542, /*arg=*/0x200000000000ul); if (res != -1) r[2] = res; syscall(__NR_mmap, /*addr=*/0x200000000000ul, /*len=*/0x3000ul, /*prot=PROT_GROWSDOWN|PROT_SEM|PROT_WRITE|PROT_EXEC*/ 0x100000eul, /*flags=MAP_SHARED_VALIDATE|MAP_FIXED*/ 0x13ul, /*fd=*/r[2], /*offset=*/0ul); return 0; }