summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJohan Hovold2011-11-10 17:40:44 +0100
committerGreg Kroah-Hartman2011-11-15 19:49:42 +0100
commitc6249ff7521c0211e9daa37f07a4c016a5c4d454 (patch)
treeec21f5ec94e2fc221bf883436899eee66486d82f /drivers
parentUSB: serial: fix whitespace issues (diff)
downloadkernel-qcow2-linux-c6249ff7521c0211e9daa37f07a4c016a5c4d454.tar.gz
kernel-qcow2-linux-c6249ff7521c0211e9daa37f07a4c016a5c4d454.tar.xz
kernel-qcow2-linux-c6249ff7521c0211e9daa37f07a4c016a5c4d454.zip
USB: serial: do not forward USB specific errors in write
Use usb_translate_errors() to map USB-specific errors to errors appropriate for user space (ENOMEM, ENODEV and EIO) in write. Currently almost all serial drivers simply forward error codes from the stack (e.g. from usb_submit_urb()), but these codes often have different meanings in user-space. Doing the mapping in usb-serial core simplifies driver code and allows for more consistent error reporting. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/serial/usb-serial.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index 5c4fcf8d5f98..8c46813b9afa 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -364,6 +364,8 @@ static int serial_write(struct tty_struct *tty, const unsigned char *buf,
/* pass on to the driver specific version of this function */
retval = port->serial->type->write(tty, port, buf, count);
+ if (retval < 0)
+ retval = usb_translate_errors(retval);
exit:
return retval;
}