Skip to content

Commit

Permalink
vfs: skip unresolved mount promises in procfs
Browse files Browse the repository at this point in the history
Also handle PathnameReachable() failure in GenerateProcMounts() consistently
with GenerateProcMountInfo() (the latter changed in cl/485155018).

PiperOrigin-RevId: 689518020
  • Loading branch information
nixprime authored and gvisor-bot committed Oct 26, 2024
1 parent 0b2cae1 commit ff5927a
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions pkg/sentry/vfs/mount.go
Original file line number Diff line number Diff line change
Expand Up @@ -1366,17 +1366,20 @@ func (vfs *VirtualFilesystem) GenerateProcMounts(ctx context.Context, taskRootDi
mount: mnt,
dentry: mnt.root,
}
if mp := vfs.getMountPromise(mntRootVD); mp != nil && !mp.resolved.Load() {
// Skip unresolved mount promises for consistency with
// GenerateProcMountInfo.
continue
}
path, err := vfs.PathnameReachable(ctx, taskRootDir, mntRootVD)
if err != nil {
// For some reason we didn't get a path. Log a warning
// and run with empty path.
// For some reason we didn't get a path.
ctx.Warningf("VFS.GenerateProcMounts: error getting pathname for mount root: %v", err)
path = ""
continue
}
if path == "" {
// Either an error occurred, or path is not reachable
// from root.
break
// The path is not reachable from root.
continue
}

mntOpts := mnt.Options()
Expand Down Expand Up @@ -1433,10 +1436,14 @@ func (vfs *VirtualFilesystem) GenerateProcMountInfo(ctx context.Context, taskRoo
mount: mnt,
dentry: mnt.root,
}
if mp := vfs.getMountPromise(mntRootVD); mp != nil && !mp.resolved.Load() {
// Skip unresolved mount promises to prevent mounters from
// deadlocking by reading /proc/*/mountinfo.
continue
}
pathFromRoot, err := vfs.PathnameReachable(ctx, taskRootDir, mntRootVD)
if err != nil {
// For some reason we didn't get a path. Log a warning
// and run with empty path.
// For some reason we didn't get a path.
ctx.Warningf("VFS.GenerateProcMountInfo: error getting pathname for mount root: %v", err)
continue
}
Expand Down

0 comments on commit ff5927a

Please sign in to comment.