summaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/zero.c
diff options
context:
space:
mode:
authorAndrzej Pietrasiewicz <andrzej.p@samsung.com>2013-04-18 14:43:26 +0200
committerFelipe Balbi <balbi@ti.com>2013-04-23 13:12:21 +0200
commitabe7a4097dd0141d21d02e4bd949b377a0a75120 (patch)
tree3e3f446f518fcca9886428eb7097fc44310c1109 /drivers/usb/gadget/zero.c
parentusb: gadget: f_sourcesink.c: correct a copy-paste misnomer (diff)
downloadlinux-abe7a4097dd0141d21d02e4bd949b377a0a75120.tar.xz
linux-abe7a4097dd0141d21d02e4bd949b377a0a75120.zip
usb: gadget: zero: put function instances on unbind
If function instances are not put on gadget's unbind, their implementation module's refcount is nonzero and it is impossible to unload them. Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/zero.c')
-rw-r--r--drivers/usb/gadget/zero.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/gadget/zero.c b/drivers/usb/gadget/zero.c
index 685fa681cb65..2cd6262e8b71 100644
--- a/drivers/usb/gadget/zero.c
+++ b/drivers/usb/gadget/zero.c
@@ -368,8 +368,10 @@ static int zero_unbind(struct usb_composite_dev *cdev)
del_timer_sync(&autoresume_timer);
if (!IS_ERR_OR_NULL(func_ss))
usb_put_function(func_ss);
+ usb_put_function_instance(func_inst_ss);
if (!IS_ERR_OR_NULL(func_lb))
usb_put_function(func_lb);
+ usb_put_function_instance(func_inst_lb);
return 0;
}