Skip to content

Commit

Permalink
f_fs: ffs_func_free: cleanup requests allocated by autoconfig
Browse files Browse the repository at this point in the history
functionfs was leaking request objects created by autoconfig.

Signed-off-by: Peter Korsgaard <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
  • Loading branch information
jacmet authored and Felipe Balbi committed May 4, 2012
1 parent b4036cc commit 4f06539
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions drivers/usb/gadget/f_fs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1473,8 +1473,22 @@ static int functionfs_bind_config(struct usb_composite_dev *cdev,

static void ffs_func_free(struct ffs_function *func)
{
struct ffs_ep *ep = func->eps;
unsigned count = func->ffs->eps_count;
unsigned long flags;

ENTER();

/* cleanup after autoconfig */
spin_lock_irqsave(&func->ffs->eps_lock, flags);
do {
if (ep->ep && ep->req)
usb_ep_free_request(ep->ep, ep->req);
ep->req = NULL;
++ep;
} while (--count);
spin_unlock_irqrestore(&func->ffs->eps_lock, flags);

ffs_data_put(func->ffs);

kfree(func->eps);
Expand Down

0 comments on commit 4f06539

Please sign in to comment.