// https://syzkaller.appspot.com/bug?id=8c4da1a9b89e6c42585bac6e4539dbc0cb7c49f1 // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #define BITMASK(bf_off, bf_len) (((1ull << (bf_len)) - 1) << (bf_off)) #define STORE_BY_BITMASK(type, htobe, addr, val, bf_off, bf_len) \ *(type*)(addr) = \ htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | \ (((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len)))) #ifndef __NR_memfd_create #define __NR_memfd_create 319 #endif uint64_t r[5] = {0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; int main(void) { syscall(__NR_mmap, 0x20000000ul, 0x1000000ul, 3ul, 0x32ul, -1, 0); intptr_t res = 0; *(uint32_t*)0x2001d000 = 1; *(uint32_t*)0x2001d004 = 0x70; *(uint8_t*)0x2001d008 = 0; *(uint8_t*)0x2001d009 = 0; *(uint8_t*)0x2001d00a = 0; *(uint8_t*)0x2001d00b = 0; *(uint32_t*)0x2001d00c = 0; *(uint64_t*)0x2001d010 = 0x41c1; *(uint64_t*)0x2001d018 = 0; *(uint64_t*)0x2001d020 = 0; STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 0, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 1, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 2, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 3, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 4, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 3, 5, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 6, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 7, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 8, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 9, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 10, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 11, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 12, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 13, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 14, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 15, 2); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 17, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 18, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 19, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 20, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 21, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 22, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0x80000000000000, 23, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 24, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 25, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 26, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 27, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0x3fffffff80000000, 28, 1); STORE_BY_BITMASK(uint64_t, , 0x2001d028, 0, 29, 35); *(uint32_t*)0x2001d030 = 0; *(uint32_t*)0x2001d034 = 0; *(uint64_t*)0x2001d038 = 0; *(uint64_t*)0x2001d040 = 0; *(uint64_t*)0x2001d048 = 0; *(uint64_t*)0x2001d050 = 0; *(uint32_t*)0x2001d058 = 0; *(uint32_t*)0x2001d05c = 0; *(uint64_t*)0x2001d060 = 0; *(uint32_t*)0x2001d068 = 0; *(uint16_t*)0x2001d06c = 0; *(uint16_t*)0x2001d06e = 0; syscall(__NR_perf_event_open, 0x2001d000ul, 0, -1ul, -1, 0ul); syscall(__NR_setpriority, 0ul, 0, 0xfffful); syscall(__NR_openat, 0xffffff9c, 0ul, 0x7a05ul, 0x1700ul); syscall(__NR_mkdirat, -1, 0ul, 0ul); syscall(__NR_ioctl, -1, 0x8983ul, 0ul); syscall(__NR_socket, 0x25ul, 5ul, 0); syscall(__NR_timerfd_create, 0ul, 0ul); syscall(__NR_getpgid, 0); res = syscall(__NR_memfd_create, 0ul, 5ul); if (res != -1) r[0] = res; res = syscall(__NR_dup2, -1, r[0]); if (res != -1) r[1] = res; *(uint32_t*)0x20000200 = -1; *(uint16_t*)0x20000204 = 0; *(uint16_t*)0x20000206 = 0; syscall(__NR_ppoll, 0x20000200ul, 1ul, 0ul, 0ul, 0ul); res = syscall(__NR_socket, 0x10ul, 3ul, 0ul); if (res != -1) r[2] = res; *(uint32_t*)0x20000340 = 5; *(uint16_t*)0x20000348 = 0xa; *(uint16_t*)0x2000034a = htobe16(0x4e21); *(uint32_t*)0x2000034c = htobe32(0x7ff); memcpy((void*)0x20000350, "\x89\xfe\x77\x64\x6b\xe7\xe7\x42\xd6\x00\x27\x97\xdf\x07\x59\x9c", 16); *(uint32_t*)0x20000360 = 6; *(uint32_t*)0x200003c8 = 1; *(uint32_t*)0x200003cc = 4; *(uint16_t*)0x200003d0 = 0xa; *(uint16_t*)0x200003d2 = htobe16(0x4e23); *(uint32_t*)0x200003d4 = htobe32(0x80000001); *(uint8_t*)0x200003d8 = 0; *(uint8_t*)0x200003d9 = 0; *(uint8_t*)0x200003da = 0; *(uint8_t*)0x200003db = 0; *(uint8_t*)0x200003dc = 0; *(uint8_t*)0x200003dd = 0; *(uint8_t*)0x200003de = 0; *(uint8_t*)0x200003df = 0; *(uint8_t*)0x200003e0 = 0; *(uint8_t*)0x200003e1 = 0; *(uint8_t*)0x200003e2 = 0; *(uint8_t*)0x200003e3 = 0; *(uint8_t*)0x200003e4 = 0; *(uint8_t*)0x200003e5 = 0; *(uint8_t*)0x200003e6 = 0; *(uint8_t*)0x200003e7 = 0; *(uint32_t*)0x200003e8 = 0x20; *(uint16_t*)0x20000450 = 0xa; *(uint16_t*)0x20000452 = htobe16(0x4e24); *(uint32_t*)0x20000454 = htobe32(0x400); *(uint8_t*)0x20000458 = 0; *(uint8_t*)0x20000459 = 0; *(uint8_t*)0x2000045a = 0; *(uint8_t*)0x2000045b = 0; *(uint8_t*)0x2000045c = 0; *(uint8_t*)0x2000045d = 0; *(uint8_t*)0x2000045e = 0; *(uint8_t*)0x2000045f = 0; *(uint8_t*)0x20000460 = 0; *(uint8_t*)0x20000461 = 0; *(uint8_t*)0x20000462 = 0; *(uint8_t*)0x20000463 = 0; *(uint8_t*)0x20000464 = 0; *(uint8_t*)0x20000465 = 0; *(uint8_t*)0x20000466 = 0; *(uint8_t*)0x20000467 = 0; *(uint32_t*)0x20000468 = 0x1000; *(uint16_t*)0x200004d0 = 0xa; *(uint16_t*)0x200004d2 = htobe16(0x4e23); *(uint32_t*)0x200004d4 = htobe32(4); *(uint64_t*)0x200004d8 = htobe64(0); *(uint64_t*)0x200004e0 = htobe64(1); *(uint32_t*)0x200004e8 = 0x400; *(uint16_t*)0x20000550 = 0xa; *(uint16_t*)0x20000552 = htobe16(0x4e22); *(uint32_t*)0x20000554 = htobe32(5); *(uint8_t*)0x20000558 = -1; *(uint8_t*)0x20000559 = 2; *(uint8_t*)0x2000055a = 0; *(uint8_t*)0x2000055b = 0; *(uint8_t*)0x2000055c = 0; *(uint8_t*)0x2000055d = 0; *(uint8_t*)0x2000055e = 0; *(uint8_t*)0x2000055f = 0; *(uint8_t*)0x20000560 = 0; *(uint8_t*)0x20000561 = 0; *(uint8_t*)0x20000562 = 0; *(uint8_t*)0x20000563 = 0; *(uint8_t*)0x20000564 = 0; *(uint8_t*)0x20000565 = 0; *(uint8_t*)0x20000566 = 0; *(uint8_t*)0x20000567 = 1; *(uint32_t*)0x20000568 = 6; syscall(__NR_setsockopt, r[1], 0x29ul, 0x30ul, 0x20000340ul, 0x290ul); *(uint64_t*)0x200002c0 = 0; *(uint32_t*)0x200002c8 = 0; *(uint64_t*)0x200002d0 = 0x20000300; *(uint64_t*)0x20000300 = 0x20000080; *(uint32_t*)0x20000080 = 0x3c; *(uint16_t*)0x20000084 = 0x13; *(uint16_t*)0x20000086 = 0x41d; *(uint32_t*)0x20000088 = 0; *(uint32_t*)0x2000008c = 0; *(uint8_t*)0x20000090 = 0; *(uint8_t*)0x20000091 = 0; *(uint16_t*)0x20000092 = 0; *(uint32_t*)0x20000094 = 0; *(uint32_t*)0x20000098 = 0; *(uint32_t*)0x2000009c = 0; *(uint16_t*)0x200000a0 = 8; *(uint16_t*)0x200000a2 = 0xa; *(uint8_t*)0x200000a4 = 0x14; *(uint16_t*)0x200000a8 = 0x14; *(uint16_t*)0x200000aa = 3; memcpy((void*)0x200000ac, "ipvlan1\000\000\000\000\000\000\000\000\000", 16); *(uint64_t*)0x20000308 = 0x3c; *(uint64_t*)0x200002d8 = 1; *(uint64_t*)0x200002e0 = 0; *(uint64_t*)0x200002e8 = 0; *(uint32_t*)0x200002f0 = 0; syscall(__NR_sendmsg, r[2], 0x200002c0ul, 0ul); res = syscall(__NR_socket, 0x10ul, 3ul, 0ul); if (res != -1) r[3] = res; *(uint64_t*)0x200002c0 = 0; *(uint32_t*)0x200002c8 = 0; *(uint64_t*)0x200002d0 = 0; *(uint64_t*)0x200002d8 = 1; *(uint64_t*)0x200002e0 = 0; *(uint64_t*)0x200002e8 = 0; *(uint32_t*)0x200002f0 = 0; syscall(__NR_sendmsg, r[3], 0x200002c0ul, 0ul); res = syscall(__NR_socket, 0x26ul, 5ul, 0ul); if (res != -1) r[4] = res; syscall(__NR_bind, r[4], 0ul, 0ul); return 0; }