Skip to contentSkip to conversation

gadget: f_thor: fix hang-up with ctrl-c

PATCH New Seung-Woo Kim 2 participants 2 messages Jun 4, 2018 – Jun 12, 2018 1 message not in the archive USB

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): CGME20180604065410epcas1p43c4bf88f56b8de9e8d5f55bcd4274518@epcas1p4.samsung.com

#1 lore raw

PATCH 1/3 gadget: f_thor: fix hang-up with ctrl-c

After the commit 6aae84769a0b ("gadget: f_thor: Fix memory leaks of usb request and its buffer"), there is hang-up with ctrl-c in some udc. It is because req of out_ep is freed before out_ep is disabled. Fix hang-up with ctrl-c by disabling ep before free req of the ep.

---
 drivers/usb/gadget/f_thor.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/usb/gadget/f_thor.c +2 -2
index 1aa6be4..8b3b19f 100644
@@ -877,14 +877,14 @@ static void thor_func_disable(struct usb_function *f)
 
 	/* Avoid freeing memory when ep is still claimed */
 	if (dev->in_ep->driver_data) {
-		free_ep_req(dev->in_ep, dev->in_req);
 		usb_ep_disable(dev->in_ep);
+		free_ep_req(dev->in_ep, dev->in_req);
 		dev->in_ep->driver_data = NULL;
 	}
 
 	if (dev->out_ep->driver_data) {
-		usb_ep_free_request(dev->out_ep, dev->out_req);
 		usb_ep_disable(dev->out_ep);
+		usb_ep_free_request(dev->out_ep, dev->out_req);
 		dev->out_ep->driver_data = NULL;
 	}
 
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH 1/3 gadget: f_thor: fix hang-up with ctrl-c

Hi Seung-Woo,

Quoted 21 lines

After the commit 6aae84769a0b ("gadget: f_thor: Fix memory leaks of usb request and its buffer"), there is hang-up with ctrl-c in some udc. It is because req of out_ep is freed before out_ep is disabled. Fix hang-up with ctrl-c by disabling ep before free req of the ep.

---
 drivers/usb/gadget/f_thor.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/usb/gadget/f_thor.c +1 -1
index 1aa6be4..8b3b19f 100644
@@ -877,14 +877,14 @@ static void thor_func_disable(struct
 usb_function *f) 
 	/* Avoid freeing memory when ep is still claimed */
 	if (dev->in_ep->driver_data) {
-		free_ep_req(dev->in_ep, dev->in_req);
 		usb_ep_disable(dev->in_ep);
+		free_ep_req(dev->in_ep, dev->in_req);

drivers/usb/gadget/f_thor.c static void thor_func_disable(struct · line 890

Quoted 10 lines
drivers/usb/gadget/f_thor.c +1 -1
 		dev->in_ep->driver_data = NULL;
 	}
 
 	if (dev->out_ep->driver_data) {
-		usb_ep_free_request(dev->out_ep, dev->out_req);
 		usb_ep_disable(dev->out_ep);
+		usb_ep_free_request(dev->out_ep, dev->out_req);
 		dev->out_ep->driver_data = NULL;
 	}
 

Applied to u-boot-dfu tree.

Thanks for this fix.

Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180612/ae79ee1b/attachment.sig>