RE: [PATCH/RFC] usb: gadget: function: printer: avoid wrong list handling in printer_write()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux