mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
usb: misc: cypress_cy7c63: check result of IO
If the device returns a bogus short read, treat it as EIO. Actually check for IO errors. Signed-off-by: Oliver Neukum <oneukum@suse.com> Link: https://patch.msgid.link/20260710095523.1646308-1-oneukum@suse.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b60af0b9e7
commit
0673b919e0
|
|
@ -89,8 +89,11 @@ static int vendor_command(struct cypress *dev, unsigned char request,
|
|||
address, data, iobuf, CYPRESS_MAX_REQSIZE,
|
||||
USB_CTRL_GET_TIMEOUT);
|
||||
/* we must not process garbage */
|
||||
if (retval < 2)
|
||||
if (retval < 2) {
|
||||
if (retval >= 0)
|
||||
retval = -EIO;
|
||||
goto err_buf;
|
||||
}
|
||||
|
||||
/* store returned data (more READs to be added) */
|
||||
switch (request) {
|
||||
|
|
@ -175,8 +178,9 @@ static ssize_t read_port(struct device *dev, struct device_attribute *attr,
|
|||
dev_dbg(&cyp->udev->dev, "READ_PORT%d called\n", port_num);
|
||||
|
||||
result = vendor_command(cyp, CYPRESS_READ_PORT, read_id, 0);
|
||||
|
||||
dev_dbg(&cyp->udev->dev, "Result of vendor_command: %d\n\n", result);
|
||||
if (result < 0)
|
||||
return result;
|
||||
|
||||
return sprintf(buf, "%d", cyp->port[port_num]);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user