mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 07:01:57 +00:00
pcmcia: fix error handling in cm4000_cs.c
In the original code we used -ENODEV as the number of bytes to copy_to_user() and we didn't release the locks. Signed-off-by: Dan Carpenter <error27@gmail.com> Acked-by: Harald Welte <laforge@gnumonks.org> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
This commit is contained in:
parent
42d284b986
commit
07a71415d5
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user