From ada0eec8277449ecd6383c86bc2e5fe7e7058fc7 Mon Sep 17 00:00:00 2001 From: ioworker0 Date: Mon, 24 Apr 2023 06:37:52 +0000 Subject: [PATCH] runtime: add a alignment check The Linux implementation requires that the address addr be page-aligned, and allows length to be zero. See Linux notes: https://man7.org/linux/man-pages/man2/madvise.2.html Change-Id: Ic49960c32991ef12f23de2de76e9689567c82d03 GitHub-Last-Rev: 35e7f8e5cc0b045043a88d9f304ef5bb1e9c1ab2 GitHub-Pull-Request: golang/go#59793 Reviewed-on: https://go-review.googlesource.com/c/go/+/488015 Auto-Submit: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Dmitri Shuralyov Reviewed-by: Michael Knyszek Run-TryBot: Ian Lance Taylor --- src/runtime/mem_linux.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/runtime/mem_linux.go b/src/runtime/mem_linux.go index 31815fb421..b456f7f2ff 100644 --- a/src/runtime/mem_linux.go +++ b/src/runtime/mem_linux.go @@ -92,6 +92,11 @@ func sysHugePageOS(v unsafe.Pointer, n uintptr) { } func sysNoHugePageOS(v unsafe.Pointer, n uintptr) { + if uintptr(v)&(physPageSize-1) != 0 { + // The Linux implementation requires that the address + // addr be page-aligned, and allows length to be zero. + throw("unaligned sysNoHugePageOS") + } madvise(v, n, _MADV_NOHUGEPAGE) } -- 2.50.0