// BUG: unable to handle kernel NULL pointer dereference in corrupted
// https://syzkaller.appspot.com/bug?id=d969589dcca96808c8c22e856cc5045148895eee
// status:fixed
// autogenerated by syzkaller (http://github.com/google/syzkaller)

#define _GNU_SOURCE
#include <endian.h>
#include <stdint.h>
#include <string.h>
#include <sys/syscall.h>
#include <unistd.h>

uint64_t r[2] = {0xffffffffffffffff, 0xffffffffffffffff};
void loop()
{
  long res = 0;
  res = syscall(__NR_socket, 0x2b, 1, 0);
  if (res != -1)
    r[0] = res;
  res = syscall(__NR_epoll_create, 0x4dc);
  if (res != -1)
    r[1] = res;
  *(uint32_t*)0x20000000 = 0;
  *(uint64_t*)0x20000004 = 0;
  syscall(__NR_epoll_ctl, r[1], 1, r[0], 0x20000000);
}

int main()
{
  syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
  loop();
  return 0;
}
