diff options
Diffstat (limited to 'fs/configfs/file.c')
| -rw-r--r-- | fs/configfs/file.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/fs/configfs/file.c b/fs/configfs/file.c index e6d5754a715..cf33fac68c8 100644 --- a/fs/configfs/file.c +++ b/fs/configfs/file.c @@ -275,13 +275,14 @@ static int check_perm(struct inode * inode, struct file * file)  	 * it in file->private_data for easy access.  	 */  	buffer = kzalloc(sizeof(struct configfs_buffer),GFP_KERNEL); -	if (buffer) { -		init_MUTEX(&buffer->sem); -		buffer->needs_read_fill = 1; -		buffer->ops = ops; -		file->private_data = buffer; -	} else +	if (!buffer) {  		error = -ENOMEM; +		goto Enomem; +	} +	init_MUTEX(&buffer->sem); +	buffer->needs_read_fill = 1; +	buffer->ops = ops; +	file->private_data = buffer;  	goto Done;   Einval: @@ -289,6 +290,7 @@ static int check_perm(struct inode * inode, struct file * file)  	goto Done;   Eaccess:  	error = -EACCES; + Enomem:  	module_put(attr->ca_owner);   Done:  	if (error && item)  | 
