diff options
Diffstat (limited to 'fs/ubifs/ubifs.c')
| -rw-r--r-- | fs/ubifs/ubifs.c | 15 | 
1 files changed, 8 insertions, 7 deletions
| diff --git a/fs/ubifs/ubifs.c b/fs/ubifs/ubifs.c index 604eb8fdc..44be3f53e 100644 --- a/fs/ubifs/ubifs.c +++ b/fs/ubifs/ubifs.c @@ -37,8 +37,8 @@ DECLARE_GLOBAL_DATA_PTR;  static int gzip_decompress(const unsigned char *in, size_t in_len,  			   unsigned char *out, size_t *out_len)  { -	unsigned long len = in_len; -	return zunzip(out, *out_len, (unsigned char *)in, &len, 0, 0); +	return zunzip(out, *out_len, (unsigned char *)in, +		      (unsigned long *)out_len, 0, 0);  }  /* Fake description object for the "none" compressor */ @@ -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) |