summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/kernel/signal.go
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2018-06-21 14:53:05 -0700
committerShentubot <shentubot@google.com>2018-06-21 14:53:55 -0700
commit2dedbc7211fb6b7f8b86148e6627054e781eaa87 (patch)
tree75ecc27e664f6dcf82c0833cd66b639aa1797b42 /pkg/sentry/kernel/signal.go
parentf6be5fe6193163ad46722bc36209572da4a15ad0 (diff)
Drop return from SendExternalSignal
SendExternalSignal is no longer called before CreateProcess, so it can enforce this simplified precondition. StartForwarding, and after Kernel.Start. PiperOrigin-RevId: 201591170 Change-Id: Ib7022ef7895612d7d82a00942ab59fa433c4d6e9
Diffstat (limited to 'pkg/sentry/kernel/signal.go')
-rw-r--r--pkg/sentry/kernel/signal.go13
1 files changed, 5 insertions, 8 deletions
diff --git a/pkg/sentry/kernel/signal.go b/pkg/sentry/kernel/signal.go
index 8edd05cdf..e3a2a777a 100644
--- a/pkg/sentry/kernel/signal.go
+++ b/pkg/sentry/kernel/signal.go
@@ -15,6 +15,8 @@
package kernel
import (
+ "fmt"
+
"gvisor.googlesource.com/gvisor/pkg/abi/linux"
"gvisor.googlesource.com/gvisor/pkg/log"
"gvisor.googlesource.com/gvisor/pkg/sentry/arch"
@@ -33,13 +35,11 @@ const SignalPanic = linux.SIGUSR2
//
// context is used only for debugging to differentiate these cases.
//
-// Returns false if signal could not be sent because the Kernel is not fully
-// initialized yet.
-func (k *Kernel) sendExternalSignal(info *arch.SignalInfo, context string) bool {
+// Preconditions: Kernel must have an init process.
+func (k *Kernel) sendExternalSignal(info *arch.SignalInfo, context string) {
switch linux.Signal(info.Signo) {
case platform.SignalInterrupt:
// Assume that a call to platform.Context.Interrupt() misfired.
- return true
case SignalPanic:
// SignalPanic is also specially handled in sentry setup to ensure that
@@ -50,13 +50,10 @@ func (k *Kernel) sendExternalSignal(info *arch.SignalInfo, context string) bool
default:
log.Infof("Received external signal %d in %s context", info.Signo, context)
if k.globalInit == nil {
- log.Warningf("Received external signal %d before init created", info.Signo)
- return false
+ panic(fmt.Sprintf("Received external signal %d before init created", info.Signo))
}
k.globalInit.SendSignal(info)
}
-
- return true
}
// sigPriv returns a SignalInfo representing a signal sent by the sentry. (The