aboutsummaryrefslogtreecommitdiffstats
path: root/syz-manager
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-05-15 15:01:02 +0200
committerTaras Madan <tarasmadan@google.com>2025-05-19 09:39:47 +0000
commit27f689959decd391b047c8034d481267d500549e (patch)
tree79ce6364d592fd6841e25ec64ca645fc3c65cdcf /syz-manager
parent8f9cf946b3733d0b4ad3124bce155a4fc3849c3a (diff)
vm: func Run accepts context
It allows to use context as a single termination signal source.
Diffstat (limited to 'syz-manager')
-rw-r--r--syz-manager/manager.go6
-rw-r--r--syz-manager/snapshot.go4
2 files changed, 7 insertions, 3 deletions
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index 20b815422..f951db46c 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -652,8 +652,10 @@ func (mgr *Manager) runInstanceInner(ctx context.Context, inst *vm.Instance, inj
return nil, nil, fmt.Errorf("failed to parse manager's address")
}
cmd := fmt.Sprintf("%v runner %v %v %v", executorBin, inst.Index(), host, port)
- _, rep, err := inst.Run(mgr.cfg.Timeouts.VMRunningTime, mgr.reporter, cmd,
- vm.ExitTimeout, vm.StopContext(ctx), vm.InjectExecuting(injectExec),
+ ctxTimeout, cancel := context.WithTimeout(ctx, mgr.cfg.Timeouts.VMRunningTime)
+ defer cancel()
+ _, rep, err := inst.Run(ctxTimeout, mgr.reporter, cmd,
+ vm.ExitTimeout, vm.InjectExecuting(injectExec),
finishCb,
)
if err != nil {
diff --git a/syz-manager/snapshot.go b/syz-manager/snapshot.go
index 21e6ed62b..f2a01961e 100644
--- a/syz-manager/snapshot.go
+++ b/syz-manager/snapshot.go
@@ -41,7 +41,9 @@ func (mgr *Manager) snapshotLoop(ctx context.Context, inst *vm.Instance) error {
// All network connections (including ssh) will break once we start restoring snapshots.
// So we start a background process and log to /dev/kmsg.
cmd := fmt.Sprintf("nohup %v exec snapshot 1>/dev/null 2>/dev/kmsg </dev/null &", executor)
- if _, _, err := inst.Run(time.Hour, mgr.reporter, cmd); err != nil {
+ ctxTimeout, cancel := context.WithTimeout(ctx, time.Hour)
+ defer cancel()
+ if _, _, err := inst.Run(ctxTimeout, mgr.reporter, cmd); err != nil {
return err
}