// KASAN: use-after-free Read in kvm_put_kvm
// https://syzkaller.appspot.com/bug?id=468f8d1f46c226b866012cf6a770a70547ed9d24
// status:fixed
// 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, "/dev/kvm", 9);
  res = syscall(__NR_openat, 0xffffffffffffff9c, 0x20000000, 0, 0);
  if (res != -1)
    r[0] = res;
  res = syscall(__NR_ioctl, r[0], 0xae01, 0);
  if (res != -1)
    r[1] = res;
  *(uint64_t*)0x200001c0 = 0xd000;
  *(uint32_t*)0x200001c8 = 0;
  *(uint32_t*)0x200001cc = 0;
  syscall(__NR_ioctl, r[1], 0x4010ae67, 0x200001c0);
  *(uint64_t*)0x20000180 = 0xd000;
  *(uint32_t*)0x20000188 = 0;
  *(uint32_t*)0x2000018c = 0xfffffdfd;
  syscall(__NR_ioctl, r[1], 0x4010ae68, 0x20000180);
  return 0;
}
