8215879: AArch64: ReservedStackAccess may leave stack guard in inconsistent state

Reviewed-by: aph, dholmes
This commit is contained in:
Andrey Petushkov 2018-12-21 18:26:55 +00:00 committed by Andrew Haley
parent 0e2172c7ba
commit 9d20ad22c8
2 changed files with 5 additions and 6 deletions

View file

@ -2603,8 +2603,7 @@ void JavaThread::remove_stack_guard_pages() {
}
void JavaThread::enable_stack_reserved_zone() {
assert(_stack_guard_state != stack_guard_unused, "must be using guard pages.");
assert(_stack_guard_state != stack_guard_enabled, "already enabled");
assert(_stack_guard_state == stack_guard_reserved_disabled, "inconsistent state");
// The base notation is from the stack's point of view, growing downward.
// We need to adjust it to work correctly with guard_memory()
@ -2622,11 +2621,10 @@ void JavaThread::enable_stack_reserved_zone() {
}
void JavaThread::disable_stack_reserved_zone() {
assert(_stack_guard_state != stack_guard_unused, "must be using guard pages.");
assert(_stack_guard_state != stack_guard_reserved_disabled, "already disabled");
assert(_stack_guard_state == stack_guard_enabled, "inconsistent state");
// Simply return if called for a thread that does not use guard pages.
if (_stack_guard_state == stack_guard_unused) return;
if (_stack_guard_state != stack_guard_enabled) return;
// The base notation is from the stack's point of view, growing downward.
// We need to adjust it to work correctly with guard_memory()