mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-30 11:38:15 +00:00 
			
		
		
		
	usb: gadget: Add full ep_matches() check past .match_ep() callback
If .match_ep() callback returns non-NULL endpoint, immediately check
its usability and if the returned endpoint is usable, stop search and
return the endpoint. Otherwise, continue with best effort search for
usable endpoint.
Currently the code would attempt the best effort search in any case,
which may find another unexpected endpoint. It is likely that the
intention of the original code was to stop the search early.
Fixes: 77dcbdf3c1ce ("usb: gadget: Add match_ep() op to usb_gadget_ops")
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Tested-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # on vim3
Link: https://lore.kernel.org/r/20240609213449.194762-5-marek.vasut+renesas@mailbox.org
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
			
			
This commit is contained in:
		
							parent
							
								
									db62b6a0a0
								
							
						
					
					
						commit
						bd7ec7b04f
					
				| @ -247,8 +247,11 @@ struct usb_ep *usb_ep_autoconfig( | |||||||
| 			return ep; | 			return ep; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (gadget->ops->match_ep) | 	if (gadget->ops->match_ep) { | ||||||
| 		ep = gadget->ops->match_ep(gadget, desc, NULL); | 		ep = gadget->ops->match_ep(gadget, desc, NULL); | ||||||
|  | 		if (ep && ep_matches(gadget, ep, desc)) | ||||||
|  | 			return ep; | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	/* Second, look at endpoints until an unclaimed one looks usable */ | 	/* Second, look at endpoints until an unclaimed one looks usable */ | ||||||
| 	list_for_each_entry(ep, &gadget->ep_list, ep_list) { | 	list_for_each_entry(ep, &gadget->ep_list, ep_list) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user