// KMSAN: uninit-value in vmx_set_constant_host_state
// https://syzkaller.appspot.com/bug?id=f4f41d779b3f1ce3f1c11fc7d8dec864d2a8cc63
// 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;
  syscall(__NR_ioctl, -1, 0x80047453, 0x200003c0);
  memcpy((void*)0x20000280, "/dev/kvm", 9);
  res = syscall(__NR_openat, 0xffffffffffffff9c, 0x20000280, 0, 0);
  if (res != -1)
    r[0] = res;
  res = syscall(__NR_ioctl, r[0], 0xae01, 0);
  if (res != -1)
    r[1] = res;
  syscall(__NR_ioctl, r[1], 0xae41, 0);
  return 0;
}
