From 96b7161fd843176d3438e192d3076776ed0c1d0d Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Thu, 3 May 2012 12:58:49 +0200 Subject: [PATCH] --- yaml --- r: 303814 b: refs/heads/master c: 4f06539ffa1948f1d2623f549136c87e33dc1d75 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/gadget/f_fs.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5dd8c6950795..da2facc4c6d7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b4036ccdd2ce5ec0c4f29b91312dd3cf19fc9152 +refs/heads/master: 4f06539ffa1948f1d2623f549136c87e33dc1d75 diff --git a/trunk/drivers/usb/gadget/f_fs.c b/trunk/drivers/usb/gadget/f_fs.c index f52cb1ae45d9..1d4c535671a7 100644 --- a/trunk/drivers/usb/gadget/f_fs.c +++ b/trunk/drivers/usb/gadget/f_fs.c @@ -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);