summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fs
diff options
context:
space:
mode:
authorNicolas Lacasse <nlacasse@google.com>2019-04-02 17:27:30 -0700
committerShentubot <shentubot@google.com>2019-04-02 17:28:36 -0700
commit1776ab28f0fb934d399361e6012945c70dcd996f (patch)
tree4c4cdd0f8e9e528c852332b41b3271fb57cdab7a /pkg/sentry/fs
parentf9431fb20f24834dd1d5c450631bdfa04fe042f4 (diff)
Add test that symlinking over a directory returns EEXIST.
Also remove comments in InodeOperations that required that implementation of some Create* operations ensure that the name does not already exist, since these checks are all centralized in the Dirent. PiperOrigin-RevId: 241637335 Change-Id: Id098dc6063ff7c38347af29d1369075ad1e89a58
Diffstat (limited to 'pkg/sentry/fs')
-rw-r--r--pkg/sentry/fs/inode_operations.go6
-rw-r--r--pkg/sentry/fs/ramfs/dir.go4
2 files changed, 1 insertions, 9 deletions
diff --git a/pkg/sentry/fs/inode_operations.go b/pkg/sentry/fs/inode_operations.go
index 548f1eb8b..e8b9ab96b 100644
--- a/pkg/sentry/fs/inode_operations.go
+++ b/pkg/sentry/fs/inode_operations.go
@@ -104,15 +104,12 @@ type InodeOperations interface {
CreateLink(ctx context.Context, dir *Inode, oldname string, newname string) error
// CreateHardLink creates a hard link under dir between the target
- // Inode and name. Implementations must ensure that name does not
- // already exist.
+ // Inode and name.
//
// The caller must ensure this operation is permitted.
CreateHardLink(ctx context.Context, dir *Inode, target *Inode, name string) error
// CreateFifo creates a new named pipe under dir at name.
- // Implementations must ensure that an Inode at name does not
- // already exist.
//
// The caller must ensure that this operation is permitted.
CreateFifo(ctx context.Context, dir *Inode, name string, perm FilePermissions) error
@@ -144,7 +141,6 @@ type InodeOperations interface {
Rename(ctx context.Context, oldParent *Inode, oldName string, newParent *Inode, newName string, replacement bool) error
// Bind binds a new socket under dir at the given name.
- // Implementations must ensure that name does not already exist.
//
// The caller must ensure that this operation is permitted.
Bind(ctx context.Context, dir *Inode, name string, data transport.BoundEndpoint, perm FilePermissions) (*Dirent, error)
diff --git a/pkg/sentry/fs/ramfs/dir.go b/pkg/sentry/fs/ramfs/dir.go
index b60dab243..05d716afb 100644
--- a/pkg/sentry/fs/ramfs/dir.go
+++ b/pkg/sentry/fs/ramfs/dir.go
@@ -268,10 +268,6 @@ func (d *Dir) createInodeOperationsCommon(ctx context.Context, name string, make
d.mu.Lock()
defer d.mu.Unlock()
- if _, ok := d.children[name]; ok {
- return nil, syscall.EEXIST
- }
-
inode, err := makeInodeOperations()
if err != nil {
return nil, err