// BUG: assuming atomic context at kernel/seccomp.c:LINE
// https://syzkaller.appspot.com/bug?id=000780f064cc50726a331cf2e8826321609a2e1d
// 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>

#ifndef __NR_seccomp
#define __NR_seccomp 317
#endif

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

  *(uint16_t*)0x20007ff0 = 1;
  *(uint64_t*)0x20007ff8 = 0x20004fe8;
  *(uint16_t*)0x20004fe8 = 6;
  *(uint8_t*)0x20004fea = 0;
  *(uint8_t*)0x20004feb = 0;
  *(uint32_t*)0x20004fec = 0x50000;
  syscall(__NR_seccomp, 1, 2, 0x20007ff0);
  return 0;
}
