summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fsimpl/overlay
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2020-10-24 00:53:27 +0000
committergVisor bot <gvisor-bot@google.com>2020-10-24 00:53:27 +0000
commit70cbe923d390e91fc05b06dfa05c6810b0701037 (patch)
treefba2e949690078ba4ffef65d03a2bdfaa9b01b61 /pkg/sentry/fsimpl/overlay
parentb1dbae4ae486840d512fc3e0ba8606ae66580234 (diff)
parent9f87400f087df0492cf181c97f431b6d5ce3a987 (diff)
Merge release-20201019.0-51-g9f87400f0 (automated)
Diffstat (limited to 'pkg/sentry/fsimpl/overlay')
-rw-r--r--pkg/sentry/fsimpl/overlay/fstree.go11
-rw-r--r--pkg/sentry/fsimpl/overlay/overlay.go4
-rw-r--r--pkg/sentry/fsimpl/overlay/overlay_state_autogen.go26
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 {