--- x/fs/kernfs/dir.c +++ y/fs/kernfs/dir.c @@ -1028,9 +1028,12 @@ struct kernfs_node *kernfs_create_dir_ns struct kernfs_node *kn; int rc; + if (!atomic_inc_not_zero(&parent->count)) + return ERR_PTR(-EINVAL); /* allocate */ kn = kernfs_new_node(parent, name, mode | S_IFDIR, uid, gid, KERNFS_DIR); + kernfs_put(parent); if (!kn) return ERR_PTR(-ENOMEM);