USB: cdc-wdm: cleanup error codes
authorOliver Neukum <oliver@neukum.org>
Mon, 30 Apr 2012 07:57:31 +0000 (09:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 Apr 2012 13:58:56 +0000 (09:58 -0400)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The internal error codes returned in the write() code
path cannot be simply passed on to user space.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Tested-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/class/cdc-wdm.c

index 4e8451ca2d6c81b4296816fa2c51ea58c95506ec..cd017a914c5d4df4ca071ca2095ae11e01eccfbf 100644 (file)
@@ -368,6 +368,7 @@ static ssize_t wdm_write
        r = usb_autopm_get_interface(desc->intf);
        if (r < 0) {
                kfree(buf);
+               rv = usb_translate_errors(r);
                goto outnp;
        }
 
@@ -383,6 +384,7 @@ static ssize_t wdm_write
 
        if (r < 0) {
                kfree(buf);
+               rv = r;
                goto out;
        }
 
@@ -412,6 +414,7 @@ static ssize_t wdm_write
                kfree(buf);
                clear_bit(WDM_IN_USE, &desc->flags);
                dev_err(&desc->intf->dev, "Tx URB error: %d\n", rv);
+               rv = usb_translate_errors(rv);
        } else {
                dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d",
                        req->wIndex);
@@ -593,6 +596,7 @@ static int wdm_open(struct inode *inode, struct file *file)
                        desc->count--;
                        dev_err(&desc->intf->dev,
                                "Error submitting int urb - %d\n", rv);
+                       rv = usb_translate_errors(rv);
                }
        } else {
                rv = 0;