Commit 4f06539f authored by Peter Korsgaard's avatar Peter Korsgaard Committed by Felipe Balbi
Browse files

f_fs: ffs_func_free: cleanup requests allocated by autoconfig



functionfs was leaking request objects created by autoconfig.

Signed-off-by: default avatarPeter Korsgaard <peter.korsgaard@barco.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent b4036ccd
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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);