diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-10-24 00:53:27 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-10-24 00:53:27 +0000 |
commit | 70cbe923d390e91fc05b06dfa05c6810b0701037 (patch) | |
tree | fba2e949690078ba4ffef65d03a2bdfaa9b01b61 /pkg/sentry/fsimpl/overlay | |
parent | b1dbae4ae486840d512fc3e0ba8606ae66580234 (diff) | |
parent | 9f87400f087df0492cf181c97f431b6d5ce3a987 (diff) |
Merge release-20201019.0-51-g9f87400f0 (automated)
Diffstat (limited to 'pkg/sentry/fsimpl/overlay')
-rw-r--r-- | pkg/sentry/fsimpl/overlay/fstree.go | 11 | ||||
-rw-r--r-- | pkg/sentry/fsimpl/overlay/overlay.go | 4 | ||||
-rw-r--r-- | pkg/sentry/fsimpl/overlay/overlay_state_autogen.go | 26 |
3 files changed, 22 insertions, 19 deletions
diff --git a/pkg/sentry/fsimpl/overlay/fstree.go b/pkg/sentry/fsimpl/overlay/fstree.go index 1fa1b4ad3..c3eb062ed 100644 --- a/pkg/sentry/fsimpl/overlay/fstree.go +++ b/pkg/sentry/fsimpl/overlay/fstree.go @@ -34,7 +34,7 @@ func genericPrependPath(vfsroot vfs.VirtualDentry, mnt *vfs.Mount, d *dentry, b if mnt == vfsroot.Mount() && &d.vfsd == vfsroot.Dentry() { return vfs.PrependPathAtVFSRootError{} } - if &d.vfsd == mnt.Root() { + if mnt != nil && &d.vfsd == mnt.Root() { return nil } if d.parent == nil { @@ -44,3 +44,12 @@ func genericPrependPath(vfsroot vfs.VirtualDentry, mnt *vfs.Mount, d *dentry, b d = d.parent } } + +// DebugPathname returns a pathname to d relative to its filesystem root. +// DebugPathname does not correspond to any Linux function; it's used to +// generate dentry pathnames for debugging. +func genericDebugPathname(d *dentry) string { + var b fspath.Builder + _ = genericPrependPath(vfs.VirtualDentry{}, nil, d, &b) + return b.String() +} diff --git a/pkg/sentry/fsimpl/overlay/overlay.go b/pkg/sentry/fsimpl/overlay/overlay.go index 4c5de8d32..f28411b5b 100644 --- a/pkg/sentry/fsimpl/overlay/overlay.go +++ b/pkg/sentry/fsimpl/overlay/overlay.go @@ -458,9 +458,9 @@ type dentry struct { // // - isMappable is non-zero iff wrappedMappable is non-nil. isMappable is // accessed using atomic memory operations. - mapsMu sync.Mutex + mapsMu sync.Mutex `state:"nosave"` lowerMappings memmap.MappingSet - dataMu sync.RWMutex + dataMu sync.RWMutex `state:"nosave"` wrappedMappable memmap.Mappable isMappable uint32 diff --git a/pkg/sentry/fsimpl/overlay/overlay_state_autogen.go b/pkg/sentry/fsimpl/overlay/overlay_state_autogen.go index f56cb8d02..bdab5d0be 100644 --- a/pkg/sentry/fsimpl/overlay/overlay_state_autogen.go +++ b/pkg/sentry/fsimpl/overlay/overlay_state_autogen.go @@ -147,9 +147,7 @@ func (d *dentry) StateFields() []string { "devMajor", "devMinor", "ino", - "mapsMu", "lowerMappings", - "dataMu", "wrappedMappable", "isMappable", "locks", @@ -178,13 +176,11 @@ func (d *dentry) StateSave(stateSinkObject state.Sink) { stateSinkObject.Save(14, &d.devMajor) stateSinkObject.Save(15, &d.devMinor) stateSinkObject.Save(16, &d.ino) - stateSinkObject.Save(17, &d.mapsMu) - stateSinkObject.Save(18, &d.lowerMappings) - stateSinkObject.Save(19, &d.dataMu) - stateSinkObject.Save(20, &d.wrappedMappable) - stateSinkObject.Save(21, &d.isMappable) - stateSinkObject.Save(22, &d.locks) - stateSinkObject.Save(23, &d.watches) + stateSinkObject.Save(17, &d.lowerMappings) + stateSinkObject.Save(18, &d.wrappedMappable) + stateSinkObject.Save(19, &d.isMappable) + stateSinkObject.Save(20, &d.locks) + stateSinkObject.Save(21, &d.watches) } func (d *dentry) afterLoad() {} @@ -207,13 +203,11 @@ func (d *dentry) StateLoad(stateSourceObject state.Source) { stateSourceObject.Load(14, &d.devMajor) stateSourceObject.Load(15, &d.devMinor) stateSourceObject.Load(16, &d.ino) - stateSourceObject.Load(17, &d.mapsMu) - stateSourceObject.Load(18, &d.lowerMappings) - stateSourceObject.Load(19, &d.dataMu) - stateSourceObject.Load(20, &d.wrappedMappable) - stateSourceObject.Load(21, &d.isMappable) - stateSourceObject.Load(22, &d.locks) - stateSourceObject.Load(23, &d.watches) + stateSourceObject.Load(17, &d.lowerMappings) + stateSourceObject.Load(18, &d.wrappedMappable) + stateSourceObject.Load(19, &d.isMappable) + stateSourceObject.Load(20, &d.locks) + stateSourceObject.Load(21, &d.watches) } func (fd *fileDescription) StateTypeName() string { |