Skip to content

Commit 0a2e6de

Browse files
committed
Do not overwrite handlers in LoadSnapshot
As LoadSnapshot requires only a subset of the default handlers, it was implemented by assigning the FcInit handlers to a smaller list of handlers. However, this meant that it would overwrite the FcInit handlers given by the jailer. This PR fixes this behavior by just removing the unnecessary handlers, instead of overwriting them entirely. Signed-off-by: David Son <[email protected]>
1 parent 563df78 commit 0a2e6de

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

handlers.go

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -315,24 +315,19 @@ var defaultFcInitHandlerList = HandlerList{}.Append(
315315
ConfigMmdsHandler,
316316
)
317317

318-
var loadSnapshotHandlerList = HandlerList{}.Append(
319-
SetupNetworkHandler,
320-
StartVMMHandler,
321-
CreateLogFilesHandler,
322-
BootstrapLoggingHandler,
323-
LoadSnapshotHandler,
324-
AddVsocksHandler,
325-
)
318+
var loadSnapshotRemoveHandlerList = []Handler{
319+
SetupKernelArgsHandler,
320+
CreateMachineHandler,
321+
CreateBootSourceHandler,
322+
AttachDrivesHandler,
323+
CreateNetworkInterfacesHandler,
324+
ConfigMmdsHandler,
325+
}
326326

327327
var defaultValidationHandlerList = HandlerList{}.Append(
328328
NetworkConfigValidationHandler,
329329
)
330330

331-
var loadSnapshotValidationHandlerList = HandlerList{}.Append(
332-
NetworkConfigValidationHandler,
333-
LoadSnapshotConfigValidationHandler,
334-
)
335-
336331
var defaultHandlers = Handlers{
337332
Validation: defaultValidationHandlerList,
338333
FcInit: defaultFcInitHandlerList,

opts.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,19 @@ func WithSnapshot(memFilePath, snapshotPath string, opts ...WithSnapshotOpt) Opt
7171
opt(&m.Cfg.Snapshot)
7272
}
7373

74-
m.Handlers.Validation = loadSnapshotValidationHandlerList
75-
m.Handlers.FcInit = loadSnapshotHandlerList
74+
m.Handlers.Validation = m.Handlers.Validation.Append(LoadSnapshotConfigValidationHandler)
75+
m.Handlers.FcInit = modifyHandlersForLoadSnapshot(m.Handlers.FcInit)
7676
}
7777
}
7878

79+
func modifyHandlersForLoadSnapshot(l HandlerList) HandlerList {
80+
for _, h := range loadSnapshotRemoveHandlerList {
81+
l = l.Remove(h.Name)
82+
}
83+
l = l.Append(LoadSnapshotHandler)
84+
return l
85+
}
86+
7987
// WithMemoryBackend sets the memory backend to the given type, using the given
8088
// backing file path (a regular file for "File" type, or a UFFD socket path for
8189
// "Uffd" type).

0 commit comments

Comments
 (0)