diff options
author | Michael Pratt <mpratt@google.com> | 2018-07-03 12:52:39 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-07-03 12:53:39 -0700 |
commit | 660f1203ff1949a7b7869b801f4aa2133d30b91f (patch) | |
tree | 148a6abc4ac27a65fd1a6c7748a0c15c7d65ed94 | |
parent | 52ddb8571c466577843d8eb1c5e270dd54f1ade6 (diff) |
Fix runsc VDSO mapping
80bdf8a4068de3ac4a73b6b61a0cdcfe3e3571af accidentally moved vdso into an
inner scope, never assigning the vdso variable passed to the Kernel and
thus skipping VDSO mappings.
Fix this and remove the ability for loadVDSO to skip VDSO mappings,
since tests that do so are gone.
PiperOrigin-RevId: 203169135
Change-Id: Ifd8cadcbaf82f959223c501edcc4d83d05327eba
-rw-r--r-- | pkg/sentry/loader/vdso.go | 6 | ||||
-rw-r--r-- | runsc/boot/loader.go | 2 |
2 files changed, 1 insertions, 7 deletions
diff --git a/pkg/sentry/loader/vdso.go b/pkg/sentry/loader/vdso.go index 037576e41..2e8693f8e 100644 --- a/pkg/sentry/loader/vdso.go +++ b/pkg/sentry/loader/vdso.go @@ -278,12 +278,6 @@ func PrepareVDSO(p platform.Platform) (*VDSO, error) { // // loadVDSO takes a reference on the VDSO and parameter page FrameRegions. func loadVDSO(ctx context.Context, m *mm.MemoryManager, v *VDSO, bin loadedELF) (usermem.Addr, error) { - if v == nil { - // Should be used only by tests. - ctx.Warningf("No VDSO provided, skipping VDSO mapping") - return 0, nil - } - if v.os != bin.os { ctx.Warningf("Binary ELF OS %v and VDSO ELF OS %v differ", bin.os, v.os) return 0, syserror.ENOEXEC diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go index 6fcfba5cb..a3cc0e4a4 100644 --- a/runsc/boot/loader.go +++ b/runsc/boot/loader.go @@ -134,7 +134,7 @@ func New(spec *specs.Spec, conf *Config, controllerFD, restoreFD int, ioFDs []in // Create VDSO. // // Pass k as the platform since it is savable, unlike the actual platform. - vdso, err := loader.PrepareVDSO(k) + vdso, err = loader.PrepareVDSO(k) if err != nil { return nil, fmt.Errorf("error creating vdso: %v", err) } |