Loading drivers/usb/class/cdc-wdm.c +16 −15 Original line number Diff line number Diff line Loading @@ -349,30 +349,25 @@ static ssize_t wdm_write r = copy_from_user(buf, buffer, count); if (r > 0) { kfree(buf); rv = -EFAULT; goto outnl; goto out_free_mem; } /* concurrent writes and disconnect */ r = mutex_lock_interruptible(&desc->wlock); rv = -ERESTARTSYS; if (r) { kfree(buf); goto outnl; } if (r) goto out_free_mem; if (test_bit(WDM_DISCONNECTING, &desc->flags)) { kfree(buf); rv = -ENODEV; goto outnp; goto out_free_mem_lock; } r = usb_autopm_get_interface(desc->intf); if (r < 0) { kfree(buf); rv = usb_translate_errors(r); goto outnp; goto out_free_mem_lock; } if (!(file->f_flags & O_NONBLOCK)) Loading @@ -386,9 +381,8 @@ static ssize_t wdm_write r = -EIO; if (r < 0) { kfree(buf); rv = r; goto out; goto out_free_mem_pm; } req = desc->orq; Loading @@ -415,21 +409,28 @@ static ssize_t wdm_write rv = usb_submit_urb(desc->command, GFP_KERNEL); if (rv < 0) { kfree(buf); desc->outbuf = NULL; clear_bit(WDM_IN_USE, &desc->flags); dev_err(&desc->intf->dev, "Tx URB error: %d\n", rv); rv = usb_translate_errors(rv); goto out_free_mem_pm; } else { dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d", req->wIndex); } out: usb_autopm_put_interface(desc->intf); outnp: mutex_unlock(&desc->wlock); outnl: return rv < 0 ? rv : count; out_free_mem_pm: usb_autopm_put_interface(desc->intf); out_free_mem_lock: mutex_unlock(&desc->wlock); out_free_mem: kfree(buf); return rv; } /* Loading Loading
drivers/usb/class/cdc-wdm.c +16 −15 Original line number Diff line number Diff line Loading @@ -349,30 +349,25 @@ static ssize_t wdm_write r = copy_from_user(buf, buffer, count); if (r > 0) { kfree(buf); rv = -EFAULT; goto outnl; goto out_free_mem; } /* concurrent writes and disconnect */ r = mutex_lock_interruptible(&desc->wlock); rv = -ERESTARTSYS; if (r) { kfree(buf); goto outnl; } if (r) goto out_free_mem; if (test_bit(WDM_DISCONNECTING, &desc->flags)) { kfree(buf); rv = -ENODEV; goto outnp; goto out_free_mem_lock; } r = usb_autopm_get_interface(desc->intf); if (r < 0) { kfree(buf); rv = usb_translate_errors(r); goto outnp; goto out_free_mem_lock; } if (!(file->f_flags & O_NONBLOCK)) Loading @@ -386,9 +381,8 @@ static ssize_t wdm_write r = -EIO; if (r < 0) { kfree(buf); rv = r; goto out; goto out_free_mem_pm; } req = desc->orq; Loading @@ -415,21 +409,28 @@ static ssize_t wdm_write rv = usb_submit_urb(desc->command, GFP_KERNEL); if (rv < 0) { kfree(buf); desc->outbuf = NULL; clear_bit(WDM_IN_USE, &desc->flags); dev_err(&desc->intf->dev, "Tx URB error: %d\n", rv); rv = usb_translate_errors(rv); goto out_free_mem_pm; } else { dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d", req->wIndex); } out: usb_autopm_put_interface(desc->intf); outnp: mutex_unlock(&desc->wlock); outnl: return rv < 0 ? rv : count; out_free_mem_pm: usb_autopm_put_interface(desc->intf); out_free_mem_lock: mutex_unlock(&desc->wlock); out_free_mem: kfree(buf); return rv; } /* Loading