mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-28 23:24:50 +00: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
1 changed files with 3 additions and 3 deletions
|
@ -1725,17 +1725,17 @@ static void ffs_func_eps_disable(struct ffs_function *func)
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (epfile)
|
|
||||||
mutex_lock(&epfile->mutex);
|
|
||||||
spin_lock_irqsave(&func->ffs->eps_lock, flags);
|
spin_lock_irqsave(&func->ffs->eps_lock, flags);
|
||||||
/* pending requests get nuked */
|
/* pending requests get nuked */
|
||||||
if (likely(ep->ep))
|
if (likely(ep->ep))
|
||||||
usb_ep_disable(ep->ep);
|
usb_ep_disable(ep->ep);
|
||||||
++ep;
|
++ep;
|
||||||
|
if (epfile)
|
||||||
|
epfile->ep = NULL;
|
||||||
spin_unlock_irqrestore(&func->ffs->eps_lock, flags);
|
spin_unlock_irqrestore(&func->ffs->eps_lock, flags);
|
||||||
|
|
||||||
if (epfile) {
|
if (epfile) {
|
||||||
epfile->ep = NULL;
|
mutex_lock(&epfile->mutex);
|
||||||
kfree(epfile->read_buffer);
|
kfree(epfile->read_buffer);
|
||||||
epfile->read_buffer = NULL;
|
epfile->read_buffer = NULL;
|
||||||
mutex_unlock(&epfile->mutex);
|
mutex_unlock(&epfile->mutex);
|
||||||
|
|
Loading…
Reference in a new issue