Fixed possible deadlock in the CDC device driver if the USB connection is dropped while the CDC_REQ_SetLineEncoding control request is being processed by the stack (thanks to Jonathan Hudgins).
This commit is contained in:
		
							parent
							
								
									46d511c021
								
							
						
					
					
						commit
						2d98e5499b
					
				
					 2 changed files with 8 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -69,8 +69,12 @@ void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInter
 | 
			
		|||
			{
 | 
			
		||||
				Endpoint_ClearSETUP();
 | 
			
		||||
 | 
			
		||||
				while (!(Endpoint_IsOUTReceived()));
 | 
			
		||||
 | 
			
		||||
				while (!(Endpoint_IsOUTReceived()))
 | 
			
		||||
				{
 | 
			
		||||
					if (USB_DeviceState == DEVICE_STATE_Unattached)
 | 
			
		||||
					  return;
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
				CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE();
 | 
			
		||||
				CDCInterfaceInfo->State.LineEncoding.CharFormat  = Endpoint_Read_8();
 | 
			
		||||
				CDCInterfaceInfo->State.LineEncoding.ParityType  = Endpoint_Read_8();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue