diff --git a/src/runtime/os_netbsd.go b/src/runtime/os_netbsd.go index e9c0490455..38deb26e91 100644 --- a/src/runtime/os_netbsd.go +++ b/src/runtime/os_netbsd.go @@ -192,7 +192,8 @@ func newosproc(mp *m, stk unsafe.Pointer) { // At this point all signals are blocked, so there is no race. //go:nosplit func netbsdMstart() { - signalstack(nil) + st := stackt{ss_flags: _SS_DISABLE} + sigaltstack(&st, nil) mstart() } diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go index 3a26245221..d74cb3bf3a 100644 --- a/src/runtime/signal_unix.go +++ b/src/runtime/signal_unix.go @@ -624,7 +624,8 @@ func minitSignalMask() { //go:nosplit func unminitSignals() { if getg().m.newSigstack { - signalstack(nil) + st := stackt{ss_flags: _SS_DISABLE} + sigaltstack(&st, nil) } } @@ -645,17 +646,10 @@ func setGsignalStack(st *stackt) { } // signalstack sets the current thread's alternate signal stack to s. -// If s is nil, the current thread's alternate signal stack is disabled. //go:nosplit func signalstack(s *stack) { - var st stackt - if s == nil { - st.ss_flags = _SS_DISABLE - } else { - setSignalstackSP(&st, s.lo) - st.ss_size = s.hi - s.lo - st.ss_flags = 0 - } + st := stackt{ss_size: s.hi - s.lo} + setSignalstackSP(&st, s.lo) sigaltstack(&st, nil) }