diff options
author | gVisor bot <gvisor-bot@google.com> | 2021-05-03 20:54:38 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-05-03 20:54:38 +0000 |
commit | 7e08899808dd1fb223add55875237e9389268e21 (patch) | |
tree | 2dfd65bb5b74a2058996df6d43400d155f196740 /pkg/sentry/fsimpl/kernfs/kernfs.go | |
parent | c8eee758e7e9ed96c651d4b002f720eaccc65db4 (diff) | |
parent | 1947c873423cabcaf5e67b667542421ade7414ff (diff) |
Merge release-20210419.0-52-g1947c8734 (automated)
Diffstat (limited to 'pkg/sentry/fsimpl/kernfs/kernfs.go')
-rw-r--r-- | pkg/sentry/fsimpl/kernfs/kernfs.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/pkg/sentry/fsimpl/kernfs/kernfs.go b/pkg/sentry/fsimpl/kernfs/kernfs.go index 16486eeae..6f699c9cd 100644 --- a/pkg/sentry/fsimpl/kernfs/kernfs.go +++ b/pkg/sentry/fsimpl/kernfs/kernfs.go @@ -534,6 +534,9 @@ func (d *Dentry) FSLocalPath() string { // - Checking that dentries passed to methods are of the appropriate file type. // - Checking permissions. // +// Inode functions may be called holding filesystem wide locks and are not +// allowed to call vfs functions that may reenter, unless otherwise noted. +// // Specific responsibilities of implementations are documented below. type Inode interface { // Methods related to reference counting. A generic implementation is @@ -680,6 +683,9 @@ type inodeDirectory interface { type inodeSymlink interface { // Readlink returns the target of a symbolic link. If an inode is not a // symlink, the implementation should return EINVAL. + // + // Readlink is called with no kernfs locks held, so it may reenter if needed + // to resolve symlink targets. Readlink(ctx context.Context, mnt *vfs.Mount) (string, error) // Getlink returns the target of a symbolic link, as used by path |