mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-20 09:34:44 +08:00
usb: gadget: f_fs: edit epfile->ep under lock
epfile->ep is protected by ffs->eps_lock (not epfile->mutex) so clear it while holding the spin lock. Tested-by: John Stultz <john.stultz@linaro.org> Tested-by: Chen Yu <chenyu56@huawei.com> Signed-off-by: Michal Nazarewicz <mina86@mina86.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
a07ce8d34e
commit
454915dde0
@ -1725,17 +1725,17 @@ static void ffs_func_eps_disable(struct ffs_function *func)
|
||||
unsigned long flags;
|
||||
|
||||
do {
|
||||
if (epfile)
|
||||
mutex_lock(&epfile->mutex);
|
||||
spin_lock_irqsave(&func->ffs->eps_lock, flags);
|
||||
/* pending requests get nuked */
|
||||
if (likely(ep->ep))
|
||||
usb_ep_disable(ep->ep);
|
||||
++ep;
|
||||
if (epfile)
|
||||
epfile->ep = NULL;
|
||||
spin_unlock_irqrestore(&func->ffs->eps_lock, flags);
|
||||
|
||||
if (epfile) {
|
||||
epfile->ep = NULL;
|
||||
mutex_lock(&epfile->mutex);
|
||||
kfree(epfile->read_buffer);
|
||||
epfile->read_buffer = NULL;
|
||||
mutex_unlock(&epfile->mutex);
|
||||
|
Loading…
Reference in New Issue
Block a user