mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: ensure that searchAddr always refers to inUse memory
This change formalizes an assumption made by the page allocator, which is that (*pageAlloc).searchAddr should never refer to memory that is not represented by (*pageAlloc).inUse. The portion of address space covered by (*pageAlloc).inUse reflects the parts of the summary arrays which are guaranteed to mapped, and so looking at any summary which is not reflected there may cause a segfault. In fact, this can happen today. This change thus also removes a micro-optimization which is the only case which may cause (*pageAlloc).searchAddr to point outside of any region covered by (*pageAlloc).inUse, and adds a test verifying that the current segfault can no longer occur. Change-Id: I98b534f0ffba8656d3bd6d782f6fc22549ddf1c2 Reviewed-on: https://go-review.googlesource.com/c/go/+/216697 Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
b13ce14c4a
commit
e7f9e17b79
4 changed files with 53 additions and 13 deletions
|
|
@ -582,6 +582,7 @@ const (
|
|||
PageSize = pageSize
|
||||
PallocChunkPages = pallocChunkPages
|
||||
PageAlloc64Bit = pageAlloc64Bit
|
||||
PallocSumBytes = pallocSumBytes
|
||||
)
|
||||
|
||||
// Expose pallocSum for testing.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue