ubifs: Fix memory leak in ubifs_finddir
This patch fixes a memory leak in ubifs_finddir(). Signed-off-by: Stefan Roese <sr@denx.de> Cc: dev.ma.dma@gmail.com
This commit is contained in:
parent
a005f19eff
commit
be73913b91
@ -295,6 +295,7 @@ static int ubifs_finddir(struct super_block *sb, char *dirname,
|
||||
struct file *file;
|
||||
struct dentry *dentry;
|
||||
struct inode *dir;
|
||||
int ret = 0;
|
||||
|
||||
file = kzalloc(sizeof(struct file), 0);
|
||||
dentry = kzalloc(sizeof(struct dentry), 0);
|
||||
@ -336,7 +337,8 @@ static int ubifs_finddir(struct super_block *sb, char *dirname,
|
||||
if ((strncmp(dirname, (char *)dent->name, nm.len) == 0) &&
|
||||
(strlen(dirname) == nm.len)) {
|
||||
*inum = le64_to_cpu(dent->inum);
|
||||
return 1;
|
||||
ret = 1;
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
/* Switch to the next entry */
|
||||
@ -355,11 +357,10 @@ static int ubifs_finddir(struct super_block *sb, char *dirname,
|
||||
}
|
||||
|
||||
out:
|
||||
if (err != -ENOENT) {
|
||||
if (err != -ENOENT)
|
||||
ubifs_err("cannot find next direntry, error %d", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
out_free:
|
||||
if (file->private_data)
|
||||
kfree(file->private_data);
|
||||
if (file)
|
||||
@ -369,7 +370,7 @@ out:
|
||||
if (dir)
|
||||
free(dir);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static unsigned long ubifs_findfile(struct super_block *sb, char *filename)
|
||||
|
Loading…
Reference in New Issue
Block a user