diff options
Diffstat (limited to 'drivers/misc/cxl/flash.c')
| -rw-r--r-- | drivers/misc/cxl/flash.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c index 7c61c70ba3f6..3aa216bf0939 100644 --- a/drivers/misc/cxl/flash.c +++ b/drivers/misc/cxl/flash.c @@ -401,8 +401,10 @@ static int device_open(struct inode *inode, struct file *file)  	if (down_interruptible(&sem) != 0)  		return -EPERM; -	if (!(adapter = get_cxl_adapter(adapter_num))) -		return -ENODEV; +	if (!(adapter = get_cxl_adapter(adapter_num))) { +		rc = -ENODEV; +		goto err_unlock; +	}  	file->private_data = adapter;  	continue_token = 0; @@ -446,6 +448,8 @@ err1:  		free_page((unsigned long) le);  err:  	put_device(&adapter->dev); +err_unlock: +	up(&sem);  	return rc;  } |