// WARNING in ep_poll_callback
// https://syzkaller.appspot.com/bug?id=2ec99b05d1b07c30c8e5d307e40651b106b20368
// status:invalid
// autogenerated by syzkaller (https://github.com/google/syzkaller)

#define _GNU_SOURCE

#include <endian.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>

uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};

int main(void)
{
  syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
  long res = 0;
  memcpy((void*)0x20000000, "./file0\x00", 8);
  syscall(__NR_mkdirat, 0xffffff9c, 0x20000000, 0);
  memcpy((void*)0x20000100, "/dev/fuse\x00", 10);
  res = syscall(__NR_openat, 0xffffffffffffff9c, 0x20000100, 2, 0);
  if (res != -1)
    r[0] = res;
  memcpy((void*)0x20000200, "./file0\x00", 8);
  memcpy((void*)0x20000300, "fuse\x00", 5);
  memcpy((void*)0x20000400, "fd", 2);
  *(uint8_t*)0x20000402 = 0x3d;
  sprintf((char*)0x20000403, "0x%016llx", (long long)r[0]);
  *(uint8_t*)0x20000415 = 0x2c;
  memcpy((void*)0x20000416, "rootmode", 8);
  *(uint8_t*)0x2000041e = 0x3d;
  sprintf((char*)0x2000041f, "%023llo", (long long)0x4000);
  *(uint8_t*)0x20000436 = 0x2c;
  memcpy((void*)0x20000437, "user_id", 7);
  *(uint8_t*)0x2000043e = 0x3d;
  sprintf((char*)0x2000043f, "%020llu", (long long)0);
  *(uint8_t*)0x20000453 = 0x2c;
  memcpy((void*)0x20000454, "group_id", 8);
  *(uint8_t*)0x2000045c = 0x3d;
  sprintf((char*)0x2000045d, "%020llu", (long long)0);
  *(uint8_t*)0x20000471 = 0x2c;
  *(uint8_t*)0x20000472 = 0;
  syscall(__NR_mount, 0, 0x20000200, 0x20000300, 0, 0x20000400);
  res = syscall(__NR_epoll_create1, 0);
  if (res != -1)
    r[1] = res;
  *(uint32_t*)0x20000180 = 0;
  *(uint64_t*)0x20000184 = 0;
  syscall(__NR_epoll_ctl, r[1], 1, r[0], 0x20000180);
  memcpy((void*)0x20000040, "./file0\x00", 8);
  syscall(__NR_umount2, 0x20000040, 0);
  return 0;
}
