Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3416905b authored by Andrzej Pietrasiewicz's avatar Andrzej Pietrasiewicz Committed by Felipe Balbi
Browse files

usb: gadget: ffs: fix enable multiple instances



This patch fixes an "off-by-one" bug found in
581791f5 (FunctionFS: enable multiple functions).

During gfs_bind/gfs_unbind the functionfs_bind/functionfs_unbind should be
called for every functionfs instance. With the "i" pre-decremented they
were not called for the zeroth instance.

Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Cc: <stable@vger.kernel.org>

[ balbi@ti.com : added offending commit's subject ]

Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 8119b55a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -357,7 +357,7 @@ static int gfs_bind(struct usb_composite_dev *cdev)
		goto error;
	gfs_dev_desc.iProduct = gfs_strings[USB_GADGET_PRODUCT_IDX].id;

	for (i = func_num; --i; ) {
	for (i = func_num; i--; ) {
		ret = functionfs_bind(ffs_tab[i].ffs_data, cdev);
		if (unlikely(ret < 0)) {
			while (++i < func_num)
@@ -413,7 +413,7 @@ static int gfs_unbind(struct usb_composite_dev *cdev)
		gether_cleanup();
	gfs_ether_setup = false;

	for (i = func_num; --i; )
	for (i = func_num; i--; )
		if (ffs_tab[i].ffs_data)
			functionfs_unbind(ffs_tab[i].ffs_data);