From 2535abd892d9063b9bdda69101a45f71c4174124 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Wed, 26 Jun 2024 13:31:08 +0100 Subject: [PATCH] unix: fix MmapPtr test failing on OpenBSD OpenBSD apparently doesn't allow unmapping address space if part of the region is already unmapped. This tweaks the test so that munmapping twice no longer happens. Cq-Include-Trybots: luci.golang.try:gotip-openbsd-amd64 --- unix/mmap_unix_test.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/unix/mmap_unix_test.go b/unix/mmap_unix_test.go index eb146059cc..d5f4db037f 100644 --- a/unix/mmap_unix_test.go +++ b/unix/mmap_unix_test.go @@ -9,7 +9,6 @@ package unix_test import ( "runtime" "testing" - "unsafe" "golang.org/x/sys/unix" ) @@ -52,23 +51,20 @@ func TestMmap(t *testing.T) { } func TestMmapPtr(t *testing.T) { - mmapProt := unix.PROT_NONE - mmapPtrProt := unix.PROT_READ | unix.PROT_WRITE - b, err := unix.Mmap(-1, 0, 2*unix.Getpagesize(), mmapProt, unix.MAP_ANON|unix.MAP_PRIVATE) + p, err := unix.MmapPtr(-1, 0, nil, uintptr(2*unix.Getpagesize()), + unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE) if err != nil { - t.Fatalf("Mmap: %v", err) + t.Fatalf("MmapPtr: %v", err) } - if _, err := unix.MmapPtr(-1, 0, unsafe.Pointer(&b[0]), uintptr(unix.Getpagesize()), - mmapPtrProt, unix.MAP_ANON|unix.MAP_PRIVATE|unix.MAP_FIXED); err != nil { + + if _, err := unix.MmapPtr(-1, 0, p, uintptr(unix.Getpagesize()), + unix.PROT_READ|unix.PROT_WRITE, unix.MAP_ANON|unix.MAP_PRIVATE|unix.MAP_FIXED); err != nil { t.Fatalf("MmapPtr: %v", err) } - b[0] = 42 + *(*byte)(p) = 42 - if err := unix.MunmapPtr(unsafe.Pointer(&b[0]), uintptr(unix.Getpagesize())); err != nil { + if err := unix.MunmapPtr(p, uintptr(2*unix.Getpagesize())); err != nil { t.Fatalf("MunmapPtr: %v", err) } - if err := unix.Munmap(b); err != nil { - t.Fatalf("Munmap: %v", err) - } }