f_fs: fix scheduling while atomic issue of ffs_epfile_io()

move wait_for_completion() outside of spinlock.

Change-Id: Ib4cb7058aa96a55be40e757434ac64327264f104
Signed-off-by: Linyu Yuan <linyyuan@codeaurora.org>
This commit is contained in:
Linyu Yuan 2020-11-09 11:02:10 +08:00
commit 8d61117a97

View file

@ -1185,10 +1185,12 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
interrupted = true;
if (ep->ep) {
usb_ep_dequeue(ep->ep, req);
spin_unlock_irq(&epfile->ffs->eps_lock);
wait_for_completion(&done);
interrupted = ep->status < 0;
} else {
spin_unlock_irq(&epfile->ffs->eps_lock);
}
spin_unlock_irq(&epfile->ffs->eps_lock);
}
ffs_log("%s:ep status %d for req %pK", epfile->name, ep->status,