From 103824faf0072f7fe139879a589cfc8bafa699c4 Mon Sep 17 00:00:00 2001 From: Mauri de Souza Meneguzzo Date: Sat, 15 Jun 2024 17:10:19 -0300 Subject: [PATCH 1/2] unix: add linux mseal system call DO NOT REVIEW. DO NOT SUBMIT. The mseal system call was added in Linux 6.10. See https://lwn.net/Articles/954936. Depends on https://go-review.googlesource.com/c/sys/+/600516 --- unix/syscall_linux.go | 1 + unix/zsyscall_linux.go | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go index 5682e2628..cf756504d 100644 --- a/unix/syscall_linux.go +++ b/unix/syscall_linux.go @@ -2592,3 +2592,4 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { } //sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) +//sys Mseal(addr uintptr, len int, flags uint) (err error) diff --git a/unix/zsyscall_linux.go b/unix/zsyscall_linux.go index 87d8612a1..3f03a6d66 100644 --- a/unix/zsyscall_linux.go +++ b/unix/zsyscall_linux.go @@ -2229,3 +2229,13 @@ func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mseal(addr uintptr, len int, flags uint) (err error) { + _, _, e1 := Syscall(SYS_MSEAL, uintptr(addr), uintptr(len), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} From de3924e954b1182e974c008b41e07fd21f283c30 Mon Sep 17 00:00:00 2001 From: Mauri de Souza Meneguzzo Date: Sat, 27 Jul 2024 06:20:00 -0300 Subject: [PATCH 2/2] change Mseal signature to accept a []byte as first argument --- unix/syscall_linux.go | 2 +- unix/zsyscall_linux.go | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go index cf756504d..3f1d3d4cb 100644 --- a/unix/syscall_linux.go +++ b/unix/syscall_linux.go @@ -2592,4 +2592,4 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { } //sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) -//sys Mseal(addr uintptr, len int, flags uint) (err error) +//sys Mseal(b []byte, flags uint) (err error) diff --git a/unix/zsyscall_linux.go b/unix/zsyscall_linux.go index 3f03a6d66..1bc1a5adb 100644 --- a/unix/zsyscall_linux.go +++ b/unix/zsyscall_linux.go @@ -2232,8 +2232,14 @@ func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mseal(addr uintptr, len int, flags uint) (err error) { - _, _, e1 := Syscall(SYS_MSEAL, uintptr(addr), uintptr(len), uintptr(flags)) +func Mseal(b []byte, flags uint) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) }