diff options
author | gVisor bot <gvisor-bot@google.com> | 2019-10-31 19:33:22 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-10-31 19:33:22 +0000 |
commit | b88a2a38933947984a1d1cd526ea9bc08ee1393e (patch) | |
tree | 298128859f55a196a086bda73e6ca2f0e0ebf785 | |
parent | 6ca0651993373fe9568d533067718b8238a5ab46 (diff) | |
parent | f7dbddaf77a6059c2f5a441d068a39219fe593bd (diff) |
Merge release-20190806.1-355-gf7dbdda (automated)
-rw-r--r-- | pkg/sentry/platform/kvm/bluepill_unsafe.go | 10 |
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") } |