diff options
author | Johan Hovold <jhovold@gmail.com> | 2011-11-10 17:40:44 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-11-15 10:49:42 -0800 |
commit | c6249ff7521c0211e9daa37f07a4c016a5c4d454 (patch) | |
tree | ec21f5ec94e2fc221bf883436899eee66486d82f /drivers/usb/serial/usb-serial.c | |
parent | 3e1f49011973ff3e67014d03cac50593004cee3c (diff) | |
download | blackbird-op-linux-c6249ff7521c0211e9daa37f07a4c016a5c4d454.tar.gz blackbird-op-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/usb/serial/usb-serial.c')
-rw-r--r-- | drivers/usb/serial/usb-serial.c | 2 |
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; } |