// https://syzkaller.appspot.com/bug?id=8aa97c8f331730c91d216892a45e279362cddc8b // autogenerated by syzkaller (https://github.com/google/syzkaller) #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef __NR_bpf #define __NR_bpf 321 #endif static unsigned long long procid; static void sleep_ms(uint64_t ms) { usleep(ms * 1000); } static uint64_t current_time_ms(void) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts)) exit(1); return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; } static void use_temporary_dir(void) { char tmpdir_template[] = "./syzkaller.XXXXXX"; char* tmpdir = mkdtemp(tmpdir_template); if (!tmpdir) exit(1); if (chmod(tmpdir, 0777)) exit(1); if (chdir(tmpdir)) exit(1); } #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)))) static bool write_file(const char* file, const char* what, ...) { char buf[1024]; va_list args; va_start(args, what); vsnprintf(buf, sizeof(buf), what, args); va_end(args); buf[sizeof(buf) - 1] = 0; int len = strlen(buf); int fd = open(file, O_WRONLY | O_CLOEXEC); if (fd == -1) return false; if (write(fd, buf, len) != len) { int err = errno; close(fd); errno = err; return false; } close(fd); return true; } #define MAX_FDS 30 static void mount_cgroups(const char* dir, const char** controllers, int count) { if (mkdir(dir, 0777)) { return; } char enabled[128] = {0}; int i = 0; for (; i < count; i++) { if (mount("none", dir, "cgroup", 0, controllers[i])) { continue; } umount(dir); strcat(enabled, ","); strcat(enabled, controllers[i]); } if (enabled[0] == 0) { if (rmdir(dir) && errno != EBUSY) exit(1); return; } if (mount("none", dir, "cgroup", 0, enabled + 1)) { if (rmdir(dir) && errno != EBUSY) exit(1); } if (chmod(dir, 0777)) { } } static void mount_cgroups2(const char** controllers, int count) { if (mkdir("/syzcgroup/unified", 0777)) { return; } if (mount("none", "/syzcgroup/unified", "cgroup2", 0, NULL)) { if (rmdir("/syzcgroup/unified") && errno != EBUSY) exit(1); return; } if (chmod("/syzcgroup/unified", 0777)) { } int control = open("/syzcgroup/unified/cgroup.subtree_control", O_WRONLY); if (control == -1) return; int i; for (i = 0; i < count; i++) if (write(control, controllers[i], strlen(controllers[i])) < 0) { } close(control); } static void setup_cgroups() { const char* unified_controllers[] = {"+cpu", "+memory", "+io", "+pids"}; const char* net_controllers[] = {"net", "net_prio", "devices", "blkio", "freezer"}; const char* cpu_controllers[] = {"cpuset", "cpuacct", "hugetlb", "rlimit"}; if (mkdir("/syzcgroup", 0777)) { return; } mount_cgroups2(unified_controllers, sizeof(unified_controllers) / sizeof(unified_controllers[0])); mount_cgroups("/syzcgroup/net", net_controllers, sizeof(net_controllers) / sizeof(net_controllers[0])); mount_cgroups("/syzcgroup/cpu", cpu_controllers, sizeof(cpu_controllers) / sizeof(cpu_controllers[0])); write_file("/syzcgroup/cpu/cgroup.clone_children", "1"); write_file("/syzcgroup/cpu/cpuset.memory_pressure_enabled", "1"); } static void setup_cgroups_loop() { int pid = getpid(); char file[128]; char cgroupdir[64]; snprintf(cgroupdir, sizeof(cgroupdir), "/syzcgroup/unified/syz%llu", procid); if (mkdir(cgroupdir, 0777)) { } snprintf(file, sizeof(file), "%s/pids.max", cgroupdir); write_file(file, "32"); snprintf(file, sizeof(file), "%s/memory.low", cgroupdir); write_file(file, "%d", 298 << 20); snprintf(file, sizeof(file), "%s/memory.high", cgroupdir); write_file(file, "%d", 299 << 20); snprintf(file, sizeof(file), "%s/memory.max", cgroupdir); write_file(file, "%d", 300 << 20); snprintf(file, sizeof(file), "%s/cgroup.procs", cgroupdir); write_file(file, "%d", pid); snprintf(cgroupdir, sizeof(cgroupdir), "/syzcgroup/cpu/syz%llu", procid); if (mkdir(cgroupdir, 0777)) { } snprintf(file, sizeof(file), "%s/cgroup.procs", cgroupdir); write_file(file, "%d", pid); snprintf(cgroupdir, sizeof(cgroupdir), "/syzcgroup/net/syz%llu", procid); if (mkdir(cgroupdir, 0777)) { } snprintf(file, sizeof(file), "%s/cgroup.procs", cgroupdir); write_file(file, "%d", pid); } static void setup_cgroups_test() { char cgroupdir[64]; snprintf(cgroupdir, sizeof(cgroupdir), "/syzcgroup/unified/syz%llu", procid); if (symlink(cgroupdir, "./cgroup")) { } snprintf(cgroupdir, sizeof(cgroupdir), "/syzcgroup/cpu/syz%llu", procid); if (symlink(cgroupdir, "./cgroup.cpu")) { } snprintf(cgroupdir, sizeof(cgroupdir), "/syzcgroup/net/syz%llu", procid); if (symlink(cgroupdir, "./cgroup.net")) { } } static void setup_common() { if (mount(0, "/sys/fs/fuse/connections", "fusectl", 0, 0)) { } } static void setup_binderfs() { if (mkdir("/dev/binderfs", 0777)) { } if (mount("binder", "/dev/binderfs", "binder", 0, NULL)) { } } static void loop(); static void sandbox_common() { prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0); setsid(); struct rlimit rlim; rlim.rlim_cur = rlim.rlim_max = (200 << 20); setrlimit(RLIMIT_AS, &rlim); rlim.rlim_cur = rlim.rlim_max = 32 << 20; setrlimit(RLIMIT_MEMLOCK, &rlim); rlim.rlim_cur = rlim.rlim_max = 136 << 20; setrlimit(RLIMIT_FSIZE, &rlim); rlim.rlim_cur = rlim.rlim_max = 1 << 20; setrlimit(RLIMIT_STACK, &rlim); rlim.rlim_cur = rlim.rlim_max = 128 << 20; setrlimit(RLIMIT_CORE, &rlim); rlim.rlim_cur = rlim.rlim_max = 256; setrlimit(RLIMIT_NOFILE, &rlim); if (unshare(CLONE_NEWNS)) { } if (mount(NULL, "/", NULL, MS_REC | MS_PRIVATE, NULL)) { } if (unshare(CLONE_NEWIPC)) { } if (unshare(0x02000000)) { } if (unshare(CLONE_NEWUTS)) { } if (unshare(CLONE_SYSVSEM)) { } typedef struct { const char* name; const char* value; } sysctl_t; static const sysctl_t sysctls[] = { {"/proc/sys/kernel/shmmax", "16777216"}, {"/proc/sys/kernel/shmall", "536870912"}, {"/proc/sys/kernel/shmmni", "1024"}, {"/proc/sys/kernel/msgmax", "8192"}, {"/proc/sys/kernel/msgmni", "1024"}, {"/proc/sys/kernel/msgmnb", "1024"}, {"/proc/sys/kernel/sem", "1024 1048576 500 1024"}, }; unsigned i; for (i = 0; i < sizeof(sysctls) / sizeof(sysctls[0]); i++) write_file(sysctls[i].name, sysctls[i].value); } static int wait_for_loop(int pid) { if (pid < 0) exit(1); int status = 0; while (waitpid(-1, &status, __WALL) != pid) { } return WEXITSTATUS(status); } static void drop_caps(void) { struct __user_cap_header_struct cap_hdr = {}; struct __user_cap_data_struct cap_data[2] = {}; cap_hdr.version = _LINUX_CAPABILITY_VERSION_3; cap_hdr.pid = getpid(); if (syscall(SYS_capget, &cap_hdr, &cap_data)) exit(1); const int drop = (1 << CAP_SYS_PTRACE) | (1 << CAP_SYS_NICE); cap_data[0].effective &= ~drop; cap_data[0].permitted &= ~drop; cap_data[0].inheritable &= ~drop; if (syscall(SYS_capset, &cap_hdr, &cap_data)) exit(1); } static int do_sandbox_none(void) { if (unshare(CLONE_NEWPID)) { } int pid = fork(); if (pid != 0) return wait_for_loop(pid); setup_common(); sandbox_common(); drop_caps(); if (unshare(CLONE_NEWNET)) { } write_file("/proc/sys/net/ipv4/ping_group_range", "0 65535"); setup_binderfs(); loop(); exit(1); } #define FS_IOC_SETFLAGS _IOW('f', 2, long) static void remove_dir(const char* dir) { int iter = 0; DIR* dp = 0; retry: while (umount2(dir, MNT_DETACH | UMOUNT_NOFOLLOW) == 0) { } dp = opendir(dir); if (dp == NULL) { if (errno == EMFILE) { exit(1); } exit(1); } struct dirent* ep = 0; while ((ep = readdir(dp))) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) continue; char filename[FILENAME_MAX]; snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); while (umount2(filename, MNT_DETACH | UMOUNT_NOFOLLOW) == 0) { } struct stat st; if (lstat(filename, &st)) exit(1); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; } int i; for (i = 0;; i++) { if (unlink(filename) == 0) break; if (errno == EPERM) { int fd = open(filename, O_RDONLY); if (fd != -1) { long flags = 0; if (ioctl(fd, FS_IOC_SETFLAGS, &flags) == 0) { } close(fd); continue; } } if (errno == EROFS) { break; } if (errno != EBUSY || i > 100) exit(1); if (umount2(filename, MNT_DETACH | UMOUNT_NOFOLLOW)) exit(1); } } closedir(dp); for (int i = 0;; i++) { if (rmdir(dir) == 0) break; if (i < 100) { if (errno == EPERM) { int fd = open(dir, O_RDONLY); if (fd != -1) { long flags = 0; if (ioctl(fd, FS_IOC_SETFLAGS, &flags) == 0) { } close(fd); continue; } } if (errno == EROFS) { break; } if (errno == EBUSY) { if (umount2(dir, MNT_DETACH | UMOUNT_NOFOLLOW)) exit(1); continue; } if (errno == ENOTEMPTY) { if (iter < 100) { iter++; goto retry; } } } exit(1); } } static void kill_and_wait(int pid, int* status) { kill(-pid, SIGKILL); kill(pid, SIGKILL); for (int i = 0; i < 100; i++) { if (waitpid(-1, status, WNOHANG | __WALL) == pid) return; usleep(1000); } DIR* dir = opendir("/sys/fs/fuse/connections"); if (dir) { for (;;) { struct dirent* ent = readdir(dir); if (!ent) break; if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) continue; char abort[300]; snprintf(abort, sizeof(abort), "/sys/fs/fuse/connections/%s/abort", ent->d_name); int fd = open(abort, O_WRONLY); if (fd == -1) { continue; } if (write(fd, abort, 1) < 0) { } close(fd); } closedir(dir); } else { } while (waitpid(-1, status, __WALL) != pid) { } } static void setup_loop() { setup_cgroups_loop(); } static void setup_test() { prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0); setpgrp(); setup_cgroups_test(); write_file("/proc/self/oom_score_adj", "1000"); if (symlink("/dev/binderfs", "./binderfs")) { } } static void close_fds() { for (int fd = 3; fd < MAX_FDS; fd++) close(fd); } static void execute_one(void); #define WAIT_FLAGS __WALL static void loop(void) { setup_loop(); int iter = 0; for (;; iter++) { char cwdbuf[32]; sprintf(cwdbuf, "./%d", iter); if (mkdir(cwdbuf, 0777)) exit(1); int pid = fork(); if (pid < 0) exit(1); if (pid == 0) { if (chdir(cwdbuf)) exit(1); setup_test(); execute_one(); close_fds(); exit(0); } int status = 0; uint64_t start = current_time_ms(); for (;;) { if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) break; sleep_ms(1); if (current_time_ms() - start < 5000) continue; kill_and_wait(pid, &status); break; } remove_dir(cwdbuf); } } uint64_t r[7] = { 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff}; void execute_one(void) { intptr_t res = 0; memcpy((void*)0x20000000, "blkio.bfq.io_queued_recursive\000", 30); syscall(__NR_openat, -1, 0x20000000ul, 0ul, 0ul); syscall(__NR_perf_event_open, 0ul, 0, 3ul, -1, 0ul); *(uint32_t*)0x20000200 = 2; *(uint32_t*)0x20000204 = 0x80; *(uint8_t*)0x20000208 = 0x1b; *(uint8_t*)0x20000209 = 1; *(uint8_t*)0x2000020a = 0; *(uint8_t*)0x2000020b = 0; *(uint32_t*)0x2000020c = 0; *(uint64_t*)0x20000210 = 0; *(uint64_t*)0x20000218 = 0; *(uint64_t*)0x20000220 = 0; STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 0, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 1, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 2, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 3, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 4, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 5, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 6, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 7, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 8, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 9, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 10, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 11, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 12, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 13, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 14, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 15, 2); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 17, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 18, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 19, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 20, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 21, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 22, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 23, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 24, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 25, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 26, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 27, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 28, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 29, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 30, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 31, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 32, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 33, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 34, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 35, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 36, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 37, 1); STORE_BY_BITMASK(uint64_t, , 0x20000228, 0, 38, 26); *(uint32_t*)0x20000230 = 0; *(uint32_t*)0x20000234 = 0; *(uint64_t*)0x20000238 = 0; *(uint64_t*)0x20000240 = 0; *(uint64_t*)0x20000248 = 0; *(uint64_t*)0x20000250 = 0; *(uint32_t*)0x20000258 = 5; *(uint32_t*)0x2000025c = 0; *(uint64_t*)0x20000260 = 0; *(uint32_t*)0x20000268 = 0; *(uint16_t*)0x2000026c = 0; *(uint16_t*)0x2000026e = 0; *(uint32_t*)0x20000270 = 0; *(uint32_t*)0x20000274 = 0; *(uint64_t*)0x20000278 = 0; syscall(__NR_perf_event_open, 0x20000200ul, 0, -1, -1, 0ul); res = syscall(__NR_socket, 0x29ul, 2ul, 0); if (res != -1) r[0] = res; *(uint32_t*)0x20000080 = 1; *(uint32_t*)0x20000084 = 5; *(uint64_t*)0x20000088 = 0x20001000; memcpy( (void*)0x20001000, "\xbf\x16\x00\x00\x00\x00\x00\x00\xb7\x07\x00\x00\x01\x00\xf0\xff\x50\x70" "\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\xc0\x00\x95\x00\x00\x00" "\x00\x00\x00\x00\x2b\xa7\x28\x04\x15\x98\xd6\xfb\xd3\x0c\xb5\x99\xe8\x3d" "\x24\xbd\x81\x37\xa3\xaa\x81\xe0\xed\x13\x9a\x85\xd3\x6b\xb3\x01\x9d\x13" "\xbd\x23\x21\xaf\x3c\x2b\xd6\x7c\xe6\x8f\x15\xc0\xec\x71\xd0\xe6\xad\xfe" "\xfc\xf1\xd8\xf7\xfa\xf7\x5e\x0f\x22\x6b\xd9\x17\x06\x00\x00\x00\x71\x42" "\xfa\x9e\xa4\x31\x81\x23\xf5\x1c\x0a\x0e\x16\x8c\x18\x86\xd0\xd4\xd3\x53" "\x79\xbd\x22\x3e\xc8\x39\xbc\x16\xee\x98\x8e\x6e\x0d\xc8\xce\xdf\x3c\xeb" "\x9f\xbf\xbf\x9b\x0a\x49\xef\x23\xd4\x30\xf6\x29\x6b\x32\xa8\x34\x38\x81" "\x07\x20\xa1\x59\xcd\xa9\x03\x63\xdb\x3d\x22\x1e\x15\x2d\xfc\xa6\x40\x57" "\xff\x3c\x47\x44\xae\xac\xcd\x36\x41\x11\x0b\xec\x4e\x90\x27\xa0\xc8\x05" "\x5b\xbf\xc3\xa9\x6d\x2e\x89\x10\xc2\xc3\x9e\x4b\xab\xe8\x02\xf5\xab\x3e" "\x89\xcf\x6c\x66\x2e\xd4\x04\x8d\x3b\x3e\x39\x62\xdc\xdd\xef\x6a\xf1\xa1" "\x19\x72\xa6\xb4\x97\x50\x22\x27\x8d\x00\x03\x1e\x53\x88\xee\x5c\x86\x7d" "\xdd\x58\x21\x1d\x6e\xce\x1c\xcb\x0c\xd2\xb6\xd3\xcf\xfd\x96\x28\x67\xa3" "\xa2\xf6\x24\xf9\x92\xda\xa9\x4a\x0c\x55\x6f\x32\x18\xce\x74\x00\x68\x72" "\x5c\x37\x07\x4e\x46\x8e\xe2\x07\xd2\xf7\x39\x02\xeb\xcf\xcf\x49\x82\x27" "\x75\x98\x5b\xf3\x1b\x71\x5f\x58\x88\xb2\x4e\xfa\x19\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xff\xff\xff\x02\x00\x00\x00\x00" "\x00\x00\x00\x00\xdd\xff\xff\xff\x00\x00\xb2\x7c\xf3\xd1\x84\x8a\x54\xd7" "\x13\x2b\x80\x00\x00\x00\x00\x00\x00\x00\x23\xaa\x9f\xdf\xb5\x2f\xaf\x9c" "\xb0\x9c\x3b\xfd\x09\x00\x00\xb2\x19\xef\x00\xbb\x7b\x3d\xe8\xf6\x7f\xfc" "\xad\x3f\x6c\x3c\x2b\x1f\x03\x55\x00\x00\x00\x00\x00\x00\x1c\xf4\x1a\xb1" "\x1f\x12\xfb\x1e\x0a\x49\x40\x34\x00\x7d\xe7\xc6\x59\x2d\xce\xa6\xc6\x4d" "\x8f\x20\xa6\x77\x45\x40\x9e\x01\x1f\x12\x64\xd4\x3f\x15\x3b\x3d\x34\x88" "\x9f\x40\x15\x9e\x80\x0e\xa2\x47\x4b\x54\x05\x00\xa3\x0b\x23\xbc\xee\x46" "\x76\x2e\x20\x93\xbc\xc9\xea\xe5\xee\x3e\x98\x00\x26\xc9\x6f\x80\xee\x1a" "\x74\xe0\x4b\xde\x74\x07\x50\xfa\x4d\x9a\xaa\x70\x59\x89\x77\x08\x00\x00" "\x00\x00\x00\x00\x37\xc5\x6a\xbf\x11\x28\x74\xec\x51\xd6\xfe\x04\x8b\xa6" "\x86\x6a\xde\xba\xb5\x31\x68\x77\x0a\x71\xad\x90\x1a\xce\x38\x3e\x41\xd2" "\x77\xb1\x03\x92\x3a\x9d\x96\x1f\x7a\x25\x91\xdb\xe4\xa9\x12\xff\xaf\x6f" "\x65\x8f\x3f\x9c\xd1\x62\x86\x74\x4f\x83\xa8\x3f\x13\x8f\x8f\x92\xef\xd9" "\x22\x39\xea\xfc\xe5\xc1\xb3\xf9\x7a\x29\x7c\x9e\x49\x0f\x24\x19\x99\x08" "\x5a\xfa\xbd\xd5\xc3\x30\x0e\xf7\xb7\xfb\x5f\x09\xe0\xc8\xa8\x68\xa3\x53" "\x40\x9e\x34\xd3\xe8\x22\x79\x63\x75\x99\xf3\x5a\xd3\xf7\xff\xff\xff\x3c" "\xac\x39\x4c\x7b\xbd\xcd\x0e\x0e\xb5\x21\x62\xe0\xc4\x10\xad\xe7\xa3\x6b" "\x26\xa4\xe7\x0f\x03\xcc\x41\x46\xa7\x7a\xf0\x2c\x1d\x4c\xef\xd4\xa2\xb9" "\x4c\x0a\xed\x84\x77\xdf\xa8\xce\xef\xb4\x67\xf0\x5c\x69\x77\xc7\x8c\xdb" "\xf3\x77\x04\xec\x73\x75\x55\x3f\xf1\x0b\x06\x49\xda\xba\x71\xf8\x97\x14" "\x49\x10\xfe\x05\x00\x38\xec\x9e\x47\x5e\x89\x29\x8b\x7b\xf4\xd7\x69\xcc" "\xc1\x8e\xed\xe0\x06\x8c\xa1\x45\x78\x70\xeb\x30\xd2\x11\xe2\x3c\xcc\x8e" "\x06\xdd\xde\xb6\x17\x9d\x25\x7a\xb5\x00\x00\x13\xc8\x6b\xa9\xaf\xfb\x12" "\xec\x75\x7c\x72\x34\xc2\x70\x24\x6c\x87\x8d\x01\x16\x0e\x6c\x07\xbf\x6c" "\xf8\x80\x9c\x3a\x0d\x06\x23\x57\xba\x25\x15\x56\x72\x30\xa6\xf8\xb2\xad" "\x1e\x1f\x49\x33\x54\x5f\xc3\xc7\x41\x37\x42\x11\x66\x3f\x6b\x63\xb1\xdd" "\x04\x4d\xd0\x11\x7c\x9b\x73\x7b\x9b\x59\x41\x80\x06\xc1\xbc\x1a\xaf\xa2" "\x76\x8e\x82\x59\x72\xfc\x43\x00\x00\x14\x67\xc8\x9f\xa0\xf8\x2e\x84\x40" "\x10\x50\x51\xe5\x51\x0a\x33\xdc\xda\x5e\x4e\x20\x2b\xd6\x22\x54\x9c\x4c" "\xff\xff\xff\x50\x1d\x3a\x5d\xd7\x14\x3f\xbf\x22\x1f\xff\x16\x1c\x12\xca" "\x38\x9c\xbe\x00\x00\x00\x00\x00\x00\x0f\xff\x75\x06\x7d\x2a\x21\x4f\x8c" "\x9d\x9b\x2e\xcf\x63\x1c\x6c\x5f\xd9\xc2\x6a\x54\xd4\x3f\xa0\x50\xb8\x8d" "\x1d\x43\xa8\x64\x5b\xd9\x10\x9b\x7e\x07\x86\x9b\xba\x71\x31\x42\x1c\x0f" "\x39\x70\x73\x94\x33\x30\xba\xaf\xd2\x43\xc0\xc6\xff\xe6\x73\xba\xb4\x11" "\x3b\xe7\x66\x4e\x08\xbd\xd7\x11\x5c\x61\xaf\xcb\x71\x8c\xf3\xc4\x68\x0b" "\x2f\x6c\x7a\x84\x00\xe3\x78\xa9\xb1\x5b\xc2\x0f\x49\xe2\x98\x72\x73\x40" "\xe8\x7c\xde\xfb\x40\xe5\x6e\x9c\xfa\xd9\x73\x34\x7d\x0d\xe7\xba\x47\x54" "\xff\x23\x1a\x1b\x93\x3d\x8f\x93\x1b\x8c\x55\x2b\x2c\x7c\x50\x3f\x3d\x0e" "\x7a\xb0\xe9\x58\xad\xb8\x62\x82\x2e\x40\x00\x99\x95\xae\x16\x6d\xeb\x98" "\x56\x29\x1a\x43\xa6\xf7\xeb\x2e\x32\xce\xfb\xf4\x44\xb0\x32\xda\xd1\x30" "\x07\xb8\x2e\x60\x44\xf6\x43\xfc\x8c\xd0\x7a\x97\xe2\xbb\xe6\x36\xa5\xdb" "\xe9\x86\x4a\x11\x7d\x27\x32\x68\x50\xa7\xc3\xb5\x70\x86\x3f\x53\x2c\x21" "\x8b\x10\xaf\x13\xd7\xbe\x94\x98\x70\x05\x08\x8a\x83\x88\x0c\xca\xb9\xc9" "\x92\x0c\x2d\x2a\xf8\xc5\xe1\x3d\x52\xc8\x3a\xc3\xfa\x7c\x3a\xe6\xc0\x83" "\x84\x86\x5b\x66\xd2\xb4\xdc\xb5\xdd\x9c\xba\x16\xb6\x20\x40\xbf\x87\x02" "\xae\x12\xc7\x7e\x6e\x34\x99\x1a\xf6\x03\xe3\x85\x6a\x34\x6c\xf7\x08\xfe" "\xeb\x70\x8a\xb2\x2b\x56\x0c\xf8\xa4\xa6\xf3\x1b\xa6\xd9\xb8\xcb\x09\x08" "\x00\x00\x00\x00\x00\x00\x00\x1a\x34\x2c\x01\x00\x00\x00\x00\x00\xe6\x67" "\xa7\x59\x2b\x33\x40\x6f\x1f\x71\xc7\x39\xb5\x5d\xb9\x1d\x23\x09\xdc\x7a" "\xe4\x01\x00\x5f\x52\x05\x3a\x39\xe7\x30\x7c\x09\xff\x3a\xc3\xe8\x20\xb0" "\x1c\x57\xdd\x74\xd4\xaa\xfc\x4c\x38\x3a\x17\xbc\x1d\xe5\x34\x7b\xb7\x1c" "\xa1\x6d\xcb\xbb\xaa\x29\x35\xf6\x02\x32\x59\x84\x38\x6b\x21\xb9\x64\x92" "\xae\x66\x20\x82\xb5\x6c\xf6\x66\xe6\x3a\x75\x7c\x0e\xf3\xea\x7a\xf6\x88" "\x15\x13\xbe\x94\xb3\x62\xe1\x5f\xfc\xa8\xec\x45\x3b\x3a\x2a\x67\xbe\x70" "\xc1\x7b\x0f\x9c\x2e\xac\x76\x58\x16\xc3\x0c\x2e\x71\x33\xdc\xa1\xc7\x66" "\x95\x00\x00\x00\x00\xbc\x57\x0a\x93\xfb\xdb\x68\x8c\x3a\xef\x81\x00\x00" "\x00\x7a\x6e\xa6\xb1\x11\x63\x39\x2a\x19\xd8\x79\x95\xb5\x1c\xb6\xfe\xbd" "\x5f\x24\xa3\x49\x98\xd2\x01\x0f\xd5\xfa\xcf\x68\xc4\xf8\x4e\x2f\x66\xe2" "\x7c\x81\xa1\x49\xd7\xb3\x31\x98\x3d\x3b\x74\x44\x49\x53\xfc\x12\x16\xdf" "\xec\x10\xb7\x24\xbe\x37\x33\xc2\x6f\x12\x53\x83\x76\xe1\x77\xff\xef\x6f" "\xd2\x60\x3b\xfa\xb9\x68\x31\x95\x7a\x08\xe4\x91\x9a\x46\x3d\x53\x32\xa2" "\x54\x60\x32\xa3\xc0\x6b\x94\xf1\x68\xe8\xfc\x4b\xda\x0c\x29\x47\x23\xfe" "\x30\x6f\x26\xc4\x77\xaf\x4b\x92\x66\x44\x67\x29\x85\xfa\xb7\xcc\x67\xbc" "\x5b\x5f\x5d\x38\xcd\xd8\xdf\x95\x14\x7e\xbe\x1c\xd8\x8b\x0a\x4c\x6c\xde" "\x99\x51\xbe\x42\x82\x7d\xfd\xdf\xef\xb2\x38\xfa\xc2\x30\x3c\xc8\x98\x2f" "\x1e\x55\xb0\x05\xaf\xcf\xea\x5e\xb0\x37\x24\x8f\xef\xad\x6b\xb0\x2c\x16" "\x2c\xe9\x2a\xb1\x77\x44\xc8\xec\x3d\x2e\x80\xcf\x32\x05\xd3\x66\x99\xfd" "\x38\x1b\xc8\x12\x31\xfb\x5e\x12\xe4\x5f\x30\x59\xf3\x61\xd0\x8d\x6a\x6d" "\x01\x9e\xbf\x10\x5e\xaf\x43\x08\x3c\x29\x51\x2b\xce\xdd\x79\xca\x9b\xf2" "\x4e\x06\x3d\x0c\x27\x3e\xd7\x0a\x2b\x70\xbe\x52\x1e\xa2\x7d\xc8\xcf\x3c" "\x9b\xdf\x83\xb9\x34\x05\xdb\x07\xe8\x2e\x2d\xdf\x4c\x4d\x26\xf1\xcd\xd8" "\xc3\xc9\x73\x6c\xf5\xe5\x08\x2d\xe3\xb4\x84\xf8\x67\x3e\x0e\x97\xdd\x7e" "\x8a\x87\x21\x48\x61\x3c\x3a\x04\xf3\xd6\x7f\x43\x75\xba\x5c\x7f\x1b\x00" "\x33\xf8\xdf\xe0\xfd\x9b\xb2\xa7\x08\x01\xf7\x63\x52\x4e\x1d\x79\xd8\x12" "\xce\xd7\x82\x64\x6b\x5f\x79\xc8\xfc\x08\xbb\x5c\x11\x02\x01\x08\xd7\x02" "\xed\xd2\xea\x9c\x96\xcf\xcb\x90\x66\x66\x86\x27\x82\x0d\x2d\x48\xaa\x5f" "\xc0\xa7\xbf\x1b\x51\x08\xb3\x4d\x22\xad\x00\xb7\x8c\x59\x8f\xa8\x70\x1b" "\x00\x08\x84\xde\x71\x0b\x54\xe5\xab\x2e\x8f\xf0\xc7\xae\x23\xe0\xb6\x01" "\xac\x95\xc4\xc2\xee\xf2\xe5\xeb\x1d\x01\x9d\x52\x09\x9f\xbd\x40\x4e\x8e" "\xce\x97\x0f\x67\x73\x6b\xa7\xe9\x60\xbd\x8b\x1e\x41\x05\xce\x7e\x31\xf7" "\xc9\xc3\xe3\xfa\x61\xaa\xb9\x67\xb9\x00\x87\xe9\x1d\x70\x3e\x98\x53\x5b" "\x10\x7b\x8f\x46\x53\xbe\x4c\x46\xa3\xa1\xad\xb0\x7d\x22\x69\x52\xb8\x57" "\x3b\x41\x70\x18\x31\x6f\xa9\x6e\x94\x2e\x35\xc4\xba\xa1\x6d\x41\x22\xc8" "\x63\x70\x9b\x08\xd4\x63\x9a\x19\xa4\x6a\xc9\x0a\xc4\x8a\x13\xee\x9b\xca" "\xa8\x75\xfc\x70\x0b\xa3\x67\xca\x31\x82\x10\x59\x60\xbe\xf3\x37\x8a\x98" "\x00\x00\x00\x00\x00\x00\x3b\x40\xdc\x5c\x74\x5f\xe2\x49\x1e\x84\x25\xe6" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x03\x18\xa4\x4a" "\xd3\x1b\xaa\xc0\x52\x0a\x91\x33\x01\xe6\x30\xae\x54\x0f\x32\x89\xae\xbd" "\xe8\x63\x3f\x6f\x45\x0c\xfe\x6e\x39\x95\x97\x35\x75\x82\x48\x03\x2c\xdf" "\x73\x20\xc6\xdc\x87\xb0\x1e\x3f\x9a\x78\x11\xb2\x00\x00\x00\x00\xae\x18" "\x9d\xe4\xb9\xb2\x5f\x7c\x7a\x9c\x32\xe4\xf1\xf2\x2a\xf1\xc0\x63\x15\x27" "\x0d\xe4\xa6\x60\x5e\x4b\x4b\x58\xbe\xf7\x6f\xac\x54\xf1\x1b\x84\xbd\x7b" "\xcd\x6b\x6a\x48\x5e\xdf\xb7\x68\x4c\x77\x0a\x39\xb3\x8b\x08\xe1\x8a\x51" "\xa4\xd4\xe6\x6c\xa2\x1c\x06\xa4\xb4\x19\x8e\x1b\xc2\xef\x99\x0c\x9b\xa9" "\x11\xef\xed\x62\x6e\x5e\xe3\x41\xa1\x7b\xf8\x13\x2b\x5b\x1d\xfa\x9f\xd3" "\x1d\xf2\x13\xc8\x8b\x40\x47\x97\x05\x6f\xd3\xba\xa8\xb2\xd6\xcb\x13\x44" "\x37\xcb\xa0\x19\x3b\xa4\x36\x0b\xdc\xc9\x8a\xad\x25\x60\xaa\x58\x29\x1c" "\x4e\xb9\xd4\xe0\x8a\xd7\xa9\xc5\xf0\x4b\xe1\xab\x59\x71\x24\xd8\x4d\xfc" "\x7b\xd8\xcc\xa8\xf6\x81\x54\xa0\xed\x35\x6e\x77\x3a\x79\x7c\xa6\xd6\x67" "\x48\x85\x7b\x4a\xbb\xf8\x83\x0a\xbe\xea\x2a\x46\x34\x2e\x6a\x73\x78\x17" "\x3c\xb2\x9d\x5c\xdc\xd6\x98\xa0\x20\x3f\x78\x11\x6b\x71\x00\x08\x00\x00" "\x00\x00\x00\x00\x00\x7c\x2d\x86\xb9\x44\x72\x80\x7c\x10\xeb\x9a\x8e\x2f" "\xb8\xbd\x79\xfe\x3a\x83\x16\xde\xff\x3e\xe6\x41\xc9\xa0\x80\xa2\x17\x36" "\x42\xe6\x73\xa6\x72\x27\x9b\xae\x4e\x7e\x28\x05\x5d\xa9\x49\x7d\x7e\xdb" "\x53\xbe\x6e\x80\x48\x2b\xd4\xd9\xa7\x4b\x7f\x76\xc7\x8b\xa0\xb4\x4e\xc0" "\xbd\xfa\x0d\x32\xd7\x04\x59\xb1\x3a\x07\x3b\x12\xeb\x57\x90\x32\xb8\x56" "\xd8\x92\xad\x6a\xf5\x12\x4c\x9c\x31\x30\x48\x5e\x96\x82\xff\x1f\x3c\x54" "\xe4\x75\xd5\xbb\x49\x6a\xef\x4b\xb5\x37\xd7\xe1\x91\xdf\xde\xba\x10\x9f" "\xdc\xf7\x86\x47\x63\xf8\x7a\x6d\x71\x1c\xf5\x2e\x52\x0a\x6c\xe3\x0e\x13" "\x4c\x55\xe0\x2b\x7c\xd2\x53\x85\xf3\xb9\x62\x84\x71\xb4\x36\x49\x87\xb0" "\xb2\xc8\x2a\x8b\x0f\x97\x63\x87\xeb\xb6\x2e\xad\x0e\x1b\x76\x1e\x6e\xc9" "\xb8\x24\xfe\x00\x6e\xa5\x2c\x0c\x46\x9e\x3b\xd8\xfe\xd0\x5a\x48\x6b\xd5" "\x51\x11\x44\xeb\xb6\x3d\x56\xd6\x1d\xa5\xfc\xb5\x8e\x19\x6a\x89\x23\xed" "\xaf\x22\x8b\x08\x00\x00\x00\x6b\x15\xc9\x0b\x15\x44\x94\xfb\x0c\xff\x76" "\x8b\x34\x17\xfc\xc8\x9a\xcb\x9b\x9b\x4f\x85\x81\xc8\x2f\xf3\x12\x1b\x59" "\x20\xf4\xe7\x15\x08\xee\xa4\x34\x1e\xc6\x18\xf4\xd9\x11\x09\x28\xea\x8d" "\xd1\x7e\x36\xf3\xbe\xb0\xc0\x7d\x91\x1c\x00\x00\x00\x00\x00\x00", 2464); *(uint64_t*)0x20000090 = 0; *(uint32_t*)0x20000098 = 0; *(uint32_t*)0x2000009c = 0; *(uint64_t*)0x200000a0 = 0; *(uint32_t*)0x200000a8 = 0; *(uint32_t*)0x200000ac = 0; memset((void*)0x200000b0, 0, 16); *(uint32_t*)0x200000c0 = 0; *(uint32_t*)0x200000c4 = 0; *(uint32_t*)0x200000c8 = -1; *(uint32_t*)0x200000cc = 8; *(uint64_t*)0x200000d0 = 0x20000000; *(uint32_t*)0x20000000 = 0; *(uint32_t*)0x20000004 = 0; *(uint32_t*)0x200000d8 = 8; *(uint32_t*)0x200000dc = 0x10; *(uint64_t*)0x200000e0 = 0x20000000; *(uint32_t*)0x20000000 = 0; *(uint32_t*)0x20000004 = 0; *(uint32_t*)0x20000008 = 0; *(uint32_t*)0x2000000c = 0; *(uint32_t*)0x200000e8 = 0x10; *(uint32_t*)0x200000ec = 0; *(uint32_t*)0x200000f0 = -1; *(uint32_t*)0x200000f4 = 0; *(uint64_t*)0x200000f8 = 0; res = syscall(__NR_bpf, 5ul, 0x20000080ul, 0x80ul); if (res != -1) r[1] = res; res = syscall(__NR_socket, 2ul, 1ul, 0); if (res != -1) r[2] = res; *(uint32_t*)0x20000100 = 1; *(uint32_t*)0x20000104 = 0x80; *(uint8_t*)0x20000108 = 0; *(uint8_t*)0x20000109 = 0; *(uint8_t*)0x2000010a = 0; *(uint8_t*)0x2000010b = 0; *(uint32_t*)0x2000010c = 0; *(uint64_t*)0x20000110 = 4; *(uint64_t*)0x20000118 = 0x600; *(uint64_t*)0x20000120 = 0; STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 0, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 1, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 2, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 3, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 4, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 5, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 6, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 7, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 8, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 9, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 10, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 11, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 12, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 13, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 14, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 15, 2); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 17, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 18, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 19, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 20, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 21, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 22, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 23, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 24, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 25, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 26, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 27, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 28, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 29, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 30, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 31, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 32, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 33, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 34, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 35, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 36, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 37, 1); STORE_BY_BITMASK(uint64_t, , 0x20000128, 0, 38, 26); *(uint32_t*)0x20000130 = 0; *(uint32_t*)0x20000134 = 0; *(uint64_t*)0x20000138 = 0; *(uint64_t*)0x20000140 = 0; *(uint64_t*)0x20000148 = 0; *(uint64_t*)0x20000150 = 0; *(uint32_t*)0x20000158 = 0; *(uint32_t*)0x2000015c = 0; *(uint64_t*)0x20000160 = 0; *(uint32_t*)0x20000168 = 0; *(uint16_t*)0x2000016c = 0; *(uint16_t*)0x2000016e = 0; *(uint32_t*)0x20000170 = 0; *(uint32_t*)0x20000174 = 0; *(uint64_t*)0x20000178 = 0; syscall(__NR_perf_event_open, 0x20000100ul, 0, -1, -1, 0ul); *(uint64_t*)0x20000fc0 = 0x20000000; *(uint16_t*)0x20000000 = 2; *(uint16_t*)0x20000002 = htobe16(0x4001); *(uint8_t*)0x20000004 = 0xac; *(uint8_t*)0x20000005 = 0x14; *(uint8_t*)0x20000006 = 0x14; *(uint8_t*)0x20000007 = 0xbb; *(uint32_t*)0x20000fc8 = 0x10; *(uint64_t*)0x20000fd0 = 0; *(uint64_t*)0x20000fd8 = 0; *(uint64_t*)0x20000fe0 = 0; *(uint64_t*)0x20000fe8 = 0; *(uint32_t*)0x20000ff0 = 0; syscall(__NR_sendmsg, r[2], 0x20000fc0ul, 0x20000811ul); syscall(__NR_openat, 0xffffff9c, 0ul, 0x26e1ul, 0ul); *(uint32_t*)0x20000a80 = 0xc; *(uint32_t*)0x20000a84 = 0; *(uint64_t*)0x20000a88 = 0; *(uint64_t*)0x20000a90 = 0x20000540; memcpy((void*)0x20000540, "syzkaller\000", 10); *(uint32_t*)0x20000a98 = 3; *(uint32_t*)0x20000a9c = 0; *(uint64_t*)0x20000aa0 = 0; *(uint32_t*)0x20000aa8 = 0x41100; *(uint32_t*)0x20000aac = 0x10; memset((void*)0x20000ab0, 0, 16); *(uint32_t*)0x20000ac0 = 0; *(uint32_t*)0x20000ac4 = 0x17; *(uint32_t*)0x20000ac8 = -1; *(uint32_t*)0x20000acc = 8; *(uint64_t*)0x20000ad0 = 0; *(uint32_t*)0x20000ad8 = 0; *(uint32_t*)0x20000adc = 0x10; *(uint64_t*)0x20000ae0 = 0x20000680; *(uint32_t*)0x20000680 = 0; *(uint32_t*)0x20000684 = 0xb; *(uint32_t*)0x20000688 = 0; *(uint32_t*)0x2000068c = 0; *(uint32_t*)0x20000ae8 = 0x10; *(uint32_t*)0x20000aec = 0; *(uint32_t*)0x20000af0 = -1; *(uint32_t*)0x20000af4 = 0; *(uint64_t*)0x20000af8 = 0x20000a00; *(uint32_t*)0x20000a00 = -1; *(uint32_t*)0x20000a04 = -1; *(uint32_t*)0x20000a08 = -1; syscall(__NR_bpf, 5ul, 0x20000a80ul, 0x80ul); *(uint32_t*)0x200009c0 = r[1]; *(uint32_t*)0x200009c4 = 0; *(uint64_t*)0x200009c8 = 0; syscall(__NR_bpf, 0xful, 0x200009c0ul, 0x10ul); *(uint32_t*)0x20000000 = -1; *(uint32_t*)0x20000004 = 0x58; *(uint64_t*)0x20000008 = 0x20000300; res = syscall(__NR_bpf, 0xful, 0x20000000ul, 0x10ul); if (res != -1) r[3] = *(uint32_t*)0x20000328; *(uint32_t*)0x20000440 = 0x11; *(uint32_t*)0x20000444 = 0xa; *(uint64_t*)0x20000448 = 0x20000680; memcpy((void*)0x20000680, "\x18\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85" "\x10\x00\x00\x06\x00\x00\x00\x18\x10\x00\x00", 28); *(uint32_t*)0x2000069c = -1; memcpy( (void*)0x200006a0, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x95\x00\x00\x00\x00\x00\x00\x00\x95\x15\x00\x00\x00\x00\x00\x00", 35); *(uint64_t*)0x20000450 = 0x20000000; memcpy((void*)0x20000000, "GPL\000", 4); *(uint32_t*)0x20000458 = 4; *(uint32_t*)0x2000045c = 0xee; *(uint64_t*)0x20000460 = 0x20000340; *(uint32_t*)0x20000468 = 0; *(uint32_t*)0x2000046c = 0x6c; memset((void*)0x20000470, 0, 16); *(uint32_t*)0x20000480 = 0; *(uint32_t*)0x20000484 = 0; *(uint32_t*)0x20000488 = -1; *(uint32_t*)0x2000048c = 8; *(uint64_t*)0x20000490 = 0; *(uint32_t*)0x20000498 = 0; *(uint32_t*)0x2000049c = 0x10; *(uint64_t*)0x200004a0 = 0; *(uint32_t*)0x200004a8 = 0; *(uint32_t*)0x200004ac = 0; *(uint32_t*)0x200004b0 = 0; *(uint32_t*)0x200004b4 = 0; *(uint64_t*)0x200004b8 = 0; syscall(__NR_bpf, 5ul, 0x20000440ul, 0x80ul); *(uint32_t*)0x20000140 = 0xa; *(uint32_t*)0x20000144 = 0x16; *(uint32_t*)0x20000148 = 8; *(uint32_t*)0x2000014c = 0x7f; *(uint32_t*)0x20000150 = 0; *(uint32_t*)0x20000154 = -1; *(uint32_t*)0x20000158 = 0; memset((void*)0x2000015c, 0, 16); *(uint32_t*)0x2000016c = 0; *(uint32_t*)0x20000170 = -1; *(uint32_t*)0x20000174 = 0; *(uint32_t*)0x20000178 = 0; *(uint32_t*)0x2000017c = 0; *(uint64_t*)0x20000180 = 0; res = syscall(__NR_bpf, 0x100000000000000ul, 0x20000140ul, 0x48ul); if (res != -1) r[4] = res; *(uint32_t*)0x20000440 = 0x11; *(uint32_t*)0x20000444 = 0xa; *(uint64_t*)0x20000448 = 0x20000680; *(uint8_t*)0x20000680 = 0x18; STORE_BY_BITMASK(uint8_t, , 0x20000681, 8, 0, 4); STORE_BY_BITMASK(uint8_t, , 0x20000681, 0, 4, 4); *(uint16_t*)0x20000682 = 0; *(uint32_t*)0x20000684 = 0; *(uint8_t*)0x20000688 = 0; *(uint8_t*)0x20000689 = 0; *(uint16_t*)0x2000068a = 0; *(uint32_t*)0x2000068c = 0; *(uint8_t*)0x20000690 = 0x85; STORE_BY_BITMASK(uint8_t, , 0x20000691, 0, 0, 4); STORE_BY_BITMASK(uint8_t, , 0x20000691, 1, 4, 4); *(uint16_t*)0x20000692 = 0; *(uint32_t*)0x20000694 = 6; *(uint8_t*)0x20000698 = 0x18; STORE_BY_BITMASK(uint8_t, , 0x20000699, 0, 0, 4); STORE_BY_BITMASK(uint8_t, , 0x20000699, 1, 4, 4); *(uint16_t*)0x2000069a = 0; *(uint32_t*)0x2000069c = r[4]; *(uint8_t*)0x200006a0 = 0; *(uint8_t*)0x200006a1 = 0; *(uint16_t*)0x200006a2 = 0; *(uint32_t*)0x200006a4 = 0; *(uint8_t*)0x200006a8 = 0x16; STORE_BY_BITMASK(uint8_t, , 0x200006a9, 8, 0, 4); STORE_BY_BITMASK(uint8_t, , 0x200006a9, 0, 4, 4); *(uint16_t*)0x200006aa = 0; *(uint32_t*)0x200006ac = 0; *(uint8_t*)0x200006b0 = 0x18; STORE_BY_BITMASK(uint8_t, , 0x200006b1, 0, 0, 4); STORE_BY_BITMASK(uint8_t, , 0x200006b1, 0, 4, 4); *(uint16_t*)0x200006b2 = 0; *(uint32_t*)0x200006b4 = 0; *(uint8_t*)0x200006b8 = 0; *(uint8_t*)0x200006b9 = 0; *(uint16_t*)0x200006ba = 0; *(uint32_t*)0x200006bc = 0; *(uint8_t*)0x200006c0 = 0x95; *(uint8_t*)0x200006c1 = 0; *(uint16_t*)0x200006c2 = 0; *(uint32_t*)0x200006c4 = 0; *(uint8_t*)0x200006c8 = 0x95; *(uint8_t*)0x200006c9 = 0; *(uint16_t*)0x200006ca = 0; *(uint32_t*)0x200006cc = 0; *(uint64_t*)0x20000450 = 0x20000000; memcpy((void*)0x20000000, "GPL\000", 4); *(uint32_t*)0x20000458 = 4; *(uint32_t*)0x2000045c = 0; *(uint64_t*)0x20000460 = 0; *(uint32_t*)0x20000468 = 0; *(uint32_t*)0x2000046c = 0x6c; memset((void*)0x20000470, 0, 16); *(uint32_t*)0x20000480 = 0; *(uint32_t*)0x20000484 = 0; *(uint32_t*)0x20000488 = -1; *(uint32_t*)0x2000048c = 8; *(uint64_t*)0x20000490 = 0; *(uint32_t*)0x20000498 = 0; *(uint32_t*)0x2000049c = 0x10; *(uint64_t*)0x200004a0 = 0; *(uint32_t*)0x200004a8 = 0; *(uint32_t*)0x200004ac = 0; *(uint32_t*)0x200004b0 = 0; *(uint32_t*)0x200004b4 = 0; *(uint64_t*)0x200004b8 = 0; syscall(__NR_bpf, 5ul, 0x20000440ul, 0x80ul); *(uint32_t*)0x20000140 = 0xa; *(uint32_t*)0x20000144 = 0x16; *(uint32_t*)0x20000148 = 8; *(uint32_t*)0x2000014c = 0x7f; *(uint32_t*)0x20000150 = 0; *(uint32_t*)0x20000154 = -1; *(uint32_t*)0x20000158 = 0; memset((void*)0x2000015c, 0, 16); *(uint32_t*)0x2000016c = 0; *(uint32_t*)0x20000170 = -1; *(uint32_t*)0x20000174 = 0; *(uint32_t*)0x20000178 = 0; *(uint32_t*)0x2000017c = 0; *(uint64_t*)0x20000180 = 0; syscall(__NR_bpf, 0x100000000000000ul, 0x20000140ul, 0x48ul); *(uint64_t*)0x20001ac0 = 0x20001a80; memcpy((void*)0x20001a80, "./file0\000", 8); *(uint32_t*)0x20001ac8 = 0; *(uint32_t*)0x20001acc = 0; syscall(__NR_bpf, 7ul, 0x20001ac0ul, 0x10ul); *(uint64_t*)0x20000a40 = 0x200001c0; *(uint16_t*)0x200001c0 = 2; *(uint16_t*)0x200001c2 = htobe16(0x4e20); *(uint32_t*)0x200001c4 = htobe32(0x64010101); *(uint32_t*)0x20000a48 = 0x10; *(uint64_t*)0x20000a50 = 0; *(uint64_t*)0x20000a58 = 0; *(uint64_t*)0x20000a60 = 0x20000c00; *(uint64_t*)0x20000c00 = 0x1c; *(uint32_t*)0x20000c08 = 0; *(uint32_t*)0x20000c0c = 8; *(uint32_t*)0x20000c10 = 0; *(uint8_t*)0x20000c14 = 0xac; *(uint8_t*)0x20000c15 = 0x14; *(uint8_t*)0x20000c16 = 0x14; *(uint8_t*)0x20000c17 = 0xaa; *(uint32_t*)0x20000c18 = htobe32(0xa010102); *(uint64_t*)0x20000c20 = 0x14; *(uint32_t*)0x20000c28 = 0; *(uint32_t*)0x20000c2c = 2; *(uint32_t*)0x20000c30 = 0xffff; *(uint64_t*)0x20000c38 = 0x14; *(uint32_t*)0x20000c40 = 0; *(uint32_t*)0x20000c44 = 2; *(uint32_t*)0x20000c48 = 0x8000; *(uint64_t*)0x20000c50 = 0x14; *(uint32_t*)0x20000c58 = 0; *(uint32_t*)0x20000c5c = 1; *(uint32_t*)0x20000c60 = 5; *(uint64_t*)0x20000c68 = 0x1c; *(uint32_t*)0x20000c70 = 0; *(uint32_t*)0x20000c74 = 8; *(uint32_t*)0x20000c78 = r[3]; *(uint32_t*)0x20000c7c = htobe32(-1); *(uint32_t*)0x20000c80 = htobe32(-1); *(uint64_t*)0x20000a68 = 0x88; *(uint32_t*)0x20000a70 = 0; syscall(__NR_sendmsg, r[0], 0x20000a40ul, 0x40005ul); *(uint64_t*)0x20000a80 = 0; *(uint32_t*)0x20000a88 = 0x195; *(uint64_t*)0x20000a90 = 0x20000a00; *(uint64_t*)0x20000a00 = 0x20000280; memset((void*)0x20000280, 3, 1); *(uint64_t*)0x20000a08 = 0x70000; *(uint64_t*)0x20000a98 = 2; *(uint64_t*)0x20000aa0 = 0; *(uint64_t*)0x20000aa8 = 0; *(uint32_t*)0x20000ab0 = 0x3680; syscall(__NR_sendmsg, r[0], 0x20000a80ul, 0x20030ul); *(uint32_t*)0x20000080 = 0; *(uint32_t*)0x20000084 = -1; *(uint32_t*)0x20000088 = 0; *(uint32_t*)0x2000008c = 7; *(uint64_t*)0x20000090 = 0x20000000; memcpy((void*)0x20000000, "cgroup\000", 7); syscall(__NR_bpf, 0x14ul, 0x20000080ul, 0x30ul); res = syscall(__NR_openat, 0xffffffffffffff9cul, 0x20000000ul, 0x200002ul, 0ul); if (res != -1) r[5] = res; memcpy((void*)0x200000c0, "memory.max\000", 11); res = syscall(__NR_openat, r[5], 0x200000c0ul, 2ul, 0ul); if (res != -1) r[6] = res; sprintf((char*)0x20000180, "0x%016llx", (long long)0); syscall(__NR_write, r[6], 0x20000180ul, 0x12ul); } int main(void) { syscall(__NR_mmap, 0x1ffff000ul, 0x1000ul, 0ul, 0x32ul, -1, 0ul); syscall(__NR_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x32ul, -1, 0ul); syscall(__NR_mmap, 0x21000000ul, 0x1000ul, 0ul, 0x32ul, -1, 0ul); setup_cgroups(); for (procid = 0; procid < 6; procid++) { if (fork() == 0) { use_temporary_dir(); do_sandbox_none(); } } sleep(1000000); return 0; }