vfs: fix warning: 'dirent' is used uninitialized in this function
[sfrench/cifs-2.6.git] / security / inode.c
index 1c812e874504ef90e1b8748e28d6d9e73d6a5912..8c777f022ad132eca07eed38503ea1af716f8dfd 100644 (file)
@@ -86,7 +86,7 @@ static int mknod(struct inode *dir, struct dentry *dentry,
                         int mode, dev_t dev)
 {
        struct inode *inode;
-       int error = -EPERM;
+       int error = -ENOMEM;
 
        if (dentry->d_inode)
                return -EEXIST;
@@ -166,6 +166,8 @@ static int create_by_name(const char *name, mode_t mode,
                        error = mkdir(parent->d_inode, *dentry, mode);
                else
                        error = create(parent->d_inode, *dentry, mode);
+               if (error)
+                       dput(*dentry);
        } else
                error = PTR_ERR(*dentry);
        mutex_unlock(&parent->d_inode->i_mutex);