|
|
|
@ -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) |
|
|
|
|