diff --git a/drivers/usb/gadget/function/f_generic.c b/drivers/usb/gadget/function/f_generic.c index eaf79b27721d538a18473906e1cc21a25dc68e3d..34596696b0949da5e39bcda10ff4e9586055a808 100644 --- a/drivers/usb/gadget/function/f_generic.c +++ b/drivers/usb/gadget/function/f_generic.c @@ -1311,6 +1311,11 @@ static long ffs_epfile_ioctl(struct file *file, unsigned code, unsigned long val return 0; } } + if (epfile->ep->req->buf == (void *)(ffsm->mem + myIoData.buf - ffsm->vm_start)) { + usb_ep_dequeue(epfile->ep->ep, epfile->ep->req); + spin_unlock_irq(&epfile->ffs->eps_lock); + return 0; + } spin_unlock_irq(&epfile->ffs->eps_lock); return -EFAULT; }