Hi,

> From: Felipe Balbi, Sent: Monday, May 21, 2018 5:05 PM
<snip>
> seems like it would be better to just move this like before
> usb_ep_queue():
> 
> modified   drivers/usb/gadget/function/f_printer.c
> @@ -631,19 +631,19 @@ printer_write(struct file *fd, const char __user *buf, 
> size_t len, loff_t *ptr)
>                       return -EAGAIN;
>               }
> 
> +             list_add(&req->list, &dev->tx_reqs_active);
> +
>               /* here, we unlock, and only unlock, to avoid deadlock. */
>               spin_unlock(&dev->lock);
>               value = usb_ep_queue(dev->in_ep, req, GFP_ATOMIC);
>               spin_lock(&dev->lock);
>               if (value) {
> +                     list_del(&req->list);
>                       list_add(&req->list, &dev->tx_reqs);
>                       spin_unlock_irqrestore(&dev->lock, flags);
>                       mutex_unlock(&dev->lock_printer_io);
>                       return -EAGAIN;
>               }
> -
> -             list_add(&req->list, &dev->tx_reqs_active);
> -
>       }
> 
>       spin_unlock_irqrestore(&dev->lock, flags);
> 
> --

Thank you very much for your patch! This could resolve the issue.
So, should I submit this your patch as your author?

Best regards,
Yoshihiro Shimoda

> balbi

Reply via email to