]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: add a alignment check
authorioworker0 <ioworker0@gmail.com>
Mon, 24 Apr 2023 06:37:52 +0000 (06:37 +0000)
committerGopher Robot <gobot@golang.org>
Wed, 26 Apr 2023 04:06:08 +0000 (04:06 +0000)
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 <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

src/runtime/mem_linux.go

index 31815fb421941e5d10ec62f5e00c7609b4fa4d93..b456f7f2ff5f77b7689f02abbc5881c06c48e025 100644 (file)
@@ -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)
 }