diff options
Diffstat (limited to 'drivers/char/pcmcia/cm4000_cs.c')
| -rw-r--r-- | drivers/char/pcmcia/cm4000_cs.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c index c9bc896d68a..90b199f97be 100644 --- a/drivers/char/pcmcia/cm4000_cs.c +++ b/drivers/char/pcmcia/cm4000_cs.c @@ -1026,14 +1026,16 @@ static ssize_t cmm_read(struct file *filp, __user char *buf, size_t count,  	xoutb(0, REG_FLAGS1(iobase));	/* clear detectCMM */  	/* last check before exit */ -	if (!io_detect_cm4000(iobase, dev)) -		count = -ENODEV; +	if (!io_detect_cm4000(iobase, dev)) { +		rc = -ENODEV; +		goto release_io; +	}  	if (test_bit(IS_INVREV, &dev->flags) && count > 0)  		str_invert_revert(dev->rbuf, count);  	if (copy_to_user(buf, dev->rbuf, count)) -		return -EFAULT; +		rc = -EFAULT;  release_io:  	clear_bit(LOCK_IO, &dev->flags);  |