// 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[1] = {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)) { } // memfd_create arguments: [ // name: ptr[in, buffer] { // buffer: {00 00 00 00 00 00 00 00 00 00 00 aa 53 63 f3 5d 57 68 49 f4 // 89 85 21 6d 50 6c 90 a5 93 19 0c 9a ae d5 61 9b 55 35 1a 86 9d 29 35 // 79 ef 90 ea 35 81 fe 4f 3b d4 7a 68 3f bd 57 e0 84 e6 9d cb cd b6 ad // 33 7f 57 59 02 a2 8b 61 47 00 0e 8e 2f c1 af d0 bc 48 39 04 00 00 00 // 7a 16 df f3 68 4c 70 4c 61 41 89 6e 5d 3e 2c 5e 4d 82 8e e4 30 97 5f // 80 39 79 29 5a eb 9d ba 77 76 e9 c0 16 dc f5 cb db 96 d6 ba 40 a7 1b // 6c ca e0 1e 33 81 c6 53 86 f7 f0 ba 1b 14 4e a2 04 db b5 58 e4 79 ef // e8 db d5 72 11 fb e4 76 bc 56 bb 00 96 43 52 e0 7e 35 16 3d 3a 41 32 // 9c 08 d9 a0 43 42 0d e9 b8 24 fe 8d b1 47 67 a9 ac 3c bf 10 5d 08 39 // d9 89 af a6 d1 10 1f 71 ba 06 5f 4e 57 db 36 37 58 76 28 a8 ce 1b e6 // bd 94 37 8f 29 38 e5 b3 ac 3b 7f 2b f6 37 ea 1e 69 92 77 2d 29 a1 42 // 2f 4d 0e 37 3a 39 db 7e 56 b7 d5 13 5e 76 14 e6 4f ea 00 87 8d 6b 47 // df 25 eb 65 83 b9 37 01 7c 20 b3 d8 57 e8 6f 17 97 d9 14 6f 92 b9 9a // 8c d7 cf a2 11 c3 a5 b3 d2 de 51 a7 05 7f 99 4c 71 28 cd 5c a2 79 14 // 6f 72 1e 66 6e f2 97 96 63 da 37 09 2c} (length 0x14c) // } // flags: memfd_flags = 0x5 (8 bytes) // ] // returns fd_memfd memcpy( (void*)0x200000000180, "\000\000\000\000\000\000\000\000\000\000\000\252Sc\363]WhI\364\211\205!" "mPl\220\245\223\031\f\232\256\325a\233U5\032\206\235)" "5y\357\220\3525\201\376O;\324zh?" "\275W\340\204\346\235\313\315\266\2553\177WY\002\242\213aG\000\016\216/" "\301\257\320\274H9\004\000\000\000z\026\337\363hLpLaA\211n]>,^" "M\202\216\3440\227_\2009y)" "Z\353\235\272wv\351\300\026\334\365\313\333\226\326\272@" "\247\033l\312\340\0363\201\306S\206\367\360\272\033\024N\242\004\333\265" "X\344y\357\350\333\325r\021\373\344v\274V\273\000\226CR\340~5\026=:" "A2\234\b\331\240CB\r\351\270$\376\215\261Gg\251\254<\277\020]" "\b9\331\211\257\246\321\020\037q\272\006_NW\33367Xv(" "\250\316\033\346\275\2247\217)8\345\263\254;\177+\3667\352\036i\222w-)" "\241B/" "M\0167:9\333~V\267\325\023^v\024\346O\352\000\207\215kG\337%" "\353e\203\2717\001| " "\263\330W\350o\027\227\331\024o\222\271\232\214\327\317\242\021\303\245" "\263\322\336Q\247\005\177\231Lq(" "\315\\\242y\024or\036fn\362\227\226c\3327\t,", 332); res = syscall(__NR_memfd_create, /*name=*/0x200000000180ul, /*flags=MFD_HUGETLB|MFD_CLOEXEC*/ 5ul); if (res != -1) r[0] = res; // mmap arguments: [ // addr: VMA[0x3000] // len: len = 0x3000 (8 bytes) // prot: mmap_prot = 0x3000002 (8 bytes) // flags: mmap_flags = 0x4010012 (8 bytes) // fd: fd (resource) // offset: intptr = 0x0 (8 bytes) // ] syscall(__NR_mmap, /*addr=*/0x200000000000ul, /*len=*/0x3000ul, /*prot=PROT_GROWSUP|PROT_GROWSDOWN|PROT_WRITE*/ 0x3000002ul, /*flags=MAP_UNINITIALIZED|MAP_NONBLOCK|MAP_FIXED|MAP_PRIVATE*/ 0x4010012ul, /*fd=*/r[0], /*offset=*/0ul); // ftruncate arguments: [ // fd: fd (resource) // len: intptr = 0x0 (8 bytes) // ] syscall(__NR_ftruncate, /*fd=*/r[0], /*len=*/0ul); return 0; }