aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/kernfs/dir.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index e55bb02f15a4..ba5f372a226d 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -430,6 +430,9 @@ int kernfs_add_one(struct kernfs_addrm_cxt *acxt, struct kernfs_node *kn,
430 if (kernfs_type(parent) != KERNFS_DIR) 430 if (kernfs_type(parent) != KERNFS_DIR)
431 return -EINVAL; 431 return -EINVAL;
432 432
433 if (parent->flags & KERNFS_REMOVED)
434 return -ENOENT;
435
433 kn->hash = kernfs_name_hash(kn->name, kn->ns); 436 kn->hash = kernfs_name_hash(kn->name, kn->ns);
434 kn->parent = parent; 437 kn->parent = parent;
435 kernfs_get(parent); 438 kernfs_get(parent);
@@ -863,6 +866,10 @@ int kernfs_rename_ns(struct kernfs_node *kn, struct kernfs_node *new_parent,
863 866
864 mutex_lock(&kernfs_mutex); 867 mutex_lock(&kernfs_mutex);
865 868
869 error = -ENOENT;
870 if ((kn->flags | new_parent->flags) & KERNFS_REMOVED)
871 goto out;
872
866 error = 0; 873 error = 0;
867 if ((kn->parent == new_parent) && (kn->ns == new_ns) && 874 if ((kn->parent == new_parent) && (kn->ns == new_ns) &&
868 (strcmp(kn->name, new_name) == 0)) 875 (strcmp(kn->name, new_name) == 0))