fix debugfs inode leak
Looking at the reiser4 crash, I found a leak in debugfs. In debugfs_mknod(), we create the inode before checking if the dentry already has one attached. We don't free it if that is the case. Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Adrian Bunk <bunk@stusta.de>
This commit is contained in:
+2
-1
@@ -67,12 +67,13 @@ static struct inode *debugfs_get_inode(struct super_block *sb, int mode, dev_t d
|
||||
static int debugfs_mknod(struct inode *dir, struct dentry *dentry,
|
||||
int mode, dev_t dev)
|
||||
{
|
||||
struct inode *inode = debugfs_get_inode(dir->i_sb, mode, dev);
|
||||
struct inode *inode;
|
||||
int error = -EPERM;
|
||||
|
||||
if (dentry->d_inode)
|
||||
return -EEXIST;
|
||||
|
||||
inode = debugfs_get_inode(dir->i_sb, mode, dev);
|
||||
if (inode) {
|
||||
d_instantiate(dentry, inode);
|
||||
dget(dentry);
|
||||
|
||||
Reference in New Issue
Block a user