diff --git a/unix/linux/types.go b/unix/linux/types.go
index 8b7ed20..50466d2 100644
--- a/unix/linux/types.go
+++ b/unix/linux/types.go
@@ -107,7 +107,6 @@
 #include <linux/netfilter.h>
 #include <linux/netlink.h>
 #include <linux/nexthop.h>
-#include <linux/openat2.h>
 #include <linux/perf_event.h>
 #include <linux/random.h>
 #include <linux/rtc.h>
@@ -835,18 +834,6 @@
 	AT_EACCESS = C.AT_EACCESS
 )
 
-type OpenHow C.struct_open_how
-
-const SizeofOpenHow = C.sizeof_struct_open_how
-
-const (
-	RESOLVE_BENEATH       = C.RESOLVE_BENEATH
-	RESOLVE_IN_ROOT       = C.RESOLVE_IN_ROOT
-	RESOLVE_NO_MAGICLINKS = C.RESOLVE_NO_MAGICLINKS
-	RESOLVE_NO_SYMLINKS   = C.RESOLVE_NO_SYMLINKS
-	RESOLVE_NO_XDEV       = C.RESOLVE_NO_XDEV
-)
-
 type PollFd C.struct_pollfd
 
 const (
diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go
index 2b151eb..bbe1abb 100644
--- a/unix/syscall_linux.go
+++ b/unix/syscall_linux.go
@@ -133,12 +133,6 @@
 	return openat(dirfd, path, flags|O_LARGEFILE, mode)
 }
 
-//sys	openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)
-
-func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {
-	return openat2(dirfd, path, how, SizeofOpenHow)
-}
-
 //sys	ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
 
 func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
diff --git a/unix/syscall_linux_test.go b/unix/syscall_linux_test.go
index 8adb426..e572376 100644
--- a/unix/syscall_linux_test.go
+++ b/unix/syscall_linux_test.go
@@ -663,24 +663,3 @@
 		t.Fatalf("unexpected return from prctl; got %v, expected %v", v, 1)
 	}
 }
-
-func TestOpenat2(t *testing.T) {
-	how := &unix.OpenHow{
-		Flags:   unix.O_RDONLY,
-		Resolve: unix.RESOLVE_NO_MAGICLINKS,
-	}
-	fd, err := unix.Openat2(-1, "/proc/self/fd/1", how)
-	switch err {
-	case nil:
-		unix.Close(fd)
-		t.Fatal("expected ELOOP, got nil")
-	case unix.ELOOP:
-		return
-	case unix.ENOSYS:
-		t.Skip("old kernel? (need Linux >= 5.6)")
-	case unix.ENOENT:
-		t.Skipf("openat2: %v, skipping test", err)
-	default:
-		t.Fatalf("unexpected error from openat2: %v", err)
-	}
-}
diff --git a/unix/zsyscall_linux.go b/unix/zsyscall_linux.go
index 5c5b742..fd2dae8 100644
--- a/unix/zsyscall_linux.go
+++ b/unix/zsyscall_linux.go
@@ -83,22 +83,6 @@
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {
-	var _p0 *byte
-	_p0, err = BytePtrFromString(path)
-	if err != nil {
-		return
-	}
-	r0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0)
-	fd = int(r0)
-	if e1 != 0 {
-		err = errnoErr(e1)
-	}
-	return
-}
-
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
 func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
 	r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
 	n = int(r0)
diff --git a/unix/ztypes_linux.go b/unix/ztypes_linux.go
index 1620ad0..af5ab45 100644
--- a/unix/ztypes_linux.go
+++ b/unix/ztypes_linux.go
@@ -691,22 +691,6 @@
 	AT_EACCESS = 0x200
 )
 
-type OpenHow struct {
-	Flags   uint64
-	Mode    uint64
-	Resolve uint64
-}
-
-const SizeofOpenHow = 0x18
-
-const (
-	RESOLVE_BENEATH       = 0x8
-	RESOLVE_IN_ROOT       = 0x10
-	RESOLVE_NO_MAGICLINKS = 0x2
-	RESOLVE_NO_SYMLINKS   = 0x4
-	RESOLVE_NO_XDEV       = 0x1
-)
-
 type PollFd struct {
 	Fd      int32
 	Events  int16
