u-boot-2012.07/fs/ubifs/ubifs.c
@@ -336,7 +336,8 @@ static int ubifs_finddir(struct super_bl
if ((strncmp(dirname, (char *)dent->name, nm.len) == 0) &&
(strlen(dirname) == nm.len)) {
*inum = le64_to_cpu(dent->inum);
- return 1;
+ err = 0;
+ goto out;
}
/* Switch to the next entry */
@@ -355,9 +356,8 @@ static int ubifs_finddir(struct super_bl
}
out:
- if (err != -ENOENT) {
+ if ( (err != 0) && (err != -ENOENT) ) {
ubifs_err("cannot find next direntry, error %d", err);
- return err;
}
if (file->private_data)
@@ -369,7 +369,9 @@ out:
if (dir)
free(dir);
- return 0;
+ if (0 != err) err = 0;
+ else err = 1;
+ return err;
}
static unsigned long ubifs_findfile(struct super_block *sb, char *filename)