USB: serial: pl2303: fix line-setting error handling
authorJohan Hovold <johan@kernel.org>
Thu, 12 Jan 2017 13:56:19 +0000 (14:56 +0100)
committerJohan Hovold <johan@kernel.org>
Mon, 16 Jan 2017 15:38:56 +0000 (16:38 +0100)
Make sure to return an error on zero-length transfers when retrieving
the line settings even if the driver currently ignores the return value.

Also remove a redundant check for short transfer when setting the line
settings.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/pl2303.c

index 46fca6b7584686744a9e79aae0bd78db08192813..3ba713570c6b0a3fb1d4ac5119a1209d20426199 100644 (file)
@@ -449,7 +449,7 @@ static int pl2303_get_line_request(struct usb_serial_port *port,
        if (ret != 7) {
                dev_err(&port->dev, "%s - failed: %d\n", __func__, ret);
 
-               if (ret > 0)
+               if (ret >= 0)
                        ret = -EIO;
 
                return ret;
@@ -469,12 +469,8 @@ static int pl2303_set_line_request(struct usb_serial_port *port,
        ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
                                SET_LINE_REQUEST, SET_LINE_REQUEST_TYPE,
                                0, 0, buf, 7, 100);
-       if (ret != 7) {
+       if (ret < 0) {
                dev_err(&port->dev, "%s - failed: %d\n", __func__, ret);
-
-               if (ret > 0)
-                       ret = -EIO;
-
                return ret;
        }