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
master
Stefan Roese 12 years ago
parent a005f19eff
commit be73913b91
  1. 11
      fs/ubifs/ubifs.c

@ -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…
Cancel
Save