summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2019-10-31 19:33:22 +0000
committergVisor bot <gvisor-bot@google.com>2019-10-31 19:33:22 +0000
commitb88a2a38933947984a1d1cd526ea9bc08ee1393e (patch)
tree298128859f55a196a086bda73e6ca2f0e0ebf785
parent6ca0651993373fe9568d533067718b8238a5ab46 (diff)
parentf7dbddaf77a6059c2f5a441d068a39219fe593bd (diff)
Merge release-20190806.1-355-gf7dbdda (automated)
-rw-r--r--pkg/sentry/platform/kvm/bluepill_unsafe.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/pkg/sentry/platform/kvm/bluepill_unsafe.go b/pkg/sentry/platform/kvm/bluepill_unsafe.go
index 3734bfb7a..ca011ef78 100644
--- a/pkg/sentry/platform/kvm/bluepill_unsafe.go
+++ b/pkg/sentry/platform/kvm/bluepill_unsafe.go
@@ -80,13 +80,17 @@ func bluepillHandler(context unsafe.Pointer) {
// interrupted KVM. Since we're in a signal handler
// currently, all signals are masked and the signal
// must have been delivered directly to this thread.
+ timeout := syscall.Timespec{}
sig, _, errno := syscall.RawSyscall6(
syscall.SYS_RT_SIGTIMEDWAIT,
uintptr(unsafe.Pointer(&bounceSignalMask)),
- 0, // siginfo.
- 0, // timeout.
- 8, // sigset size.
+ 0, // siginfo.
+ uintptr(unsafe.Pointer(&timeout)), // timeout.
+ 8, // sigset size.
0, 0)
+ if errno == syscall.EAGAIN {
+ continue
+ }
if errno != 0 {
throw("error waiting for pending signal")
}