// KMSAN: uninit-value in validate_nla
// https://syzkaller.appspot.com/bug?id=53553dc2ca70a7ec5f1f16605fb2eac9549c48f1
// 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[1] = {0xffffffffffffffff};

int main(void)
{
  syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
  long res = 0;
  res = syscall(__NR_socket, 0x10, 0x4000000002, 0x10);
  if (res != -1)
    r[0] = res;
  *(uint64_t*)0x20000140 = 0;
  *(uint32_t*)0x20000148 = 0;
  *(uint64_t*)0x20000150 = 0x20000100;
  *(uint64_t*)0x20000100 = 0x200002c0;
  memcpy((void*)0x200002c0, "\x2e\x00\x00\x00\x2b\x00\x81\x2d\xe4\x1a\xe0\x87"
                            "\x18\x50\x82\xcf\x01\x24\xb0\xeb\xa0\x6e\xc4\x00"
                            "\x01\x41\x00\x00\x00\x00\x00\x17\x00\x08\x00\x00"
                            "\x00\x1f\x5b\xa7\x72\x1b\x89\x80\xee\x5c",
         46);
  *(uint64_t*)0x20000108 = 0x2e;
  *(uint64_t*)0x20000158 = 1;
  *(uint64_t*)0x20000160 = 0;
  *(uint64_t*)0x20000168 = 0;
  *(uint32_t*)0x20000170 = 0;
  syscall(__NR_sendmsg, r[0], 0x20000140, 0);
  return 0;
}
