vfs: fix dentry leak in simple_fill_super()
authorKonstantin Khlebnikov <khlebnikov@openvz.org>
Tue, 1 Nov 2011 13:12:33 +0000 (16:12 +0300)
committerChristoph Hellwig <hch@serles.lst.de>
Wed, 2 Nov 2011 11:53:42 +0000 (12:53 +0100)
put dentry if inode allocation failed, d_genocide() cannot release it

Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/libfs.c

index c18e9a1..a2c0029 100644 (file)
@@ -510,8 +510,10 @@ int simple_fill_super(struct super_block *s, unsigned long magic,
                if (!dentry)
                        goto out;
                inode = new_inode(s);
-               if (!inode)
+               if (!inode) {
+                       dput(dentry);
                        goto out;
+               }
                inode->i_mode = S_IFREG | files->mode;
                inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
                inode->i_fop = files->ops;