From: Dean Camera Date: Thu, 13 May 2010 07:43:18 +0000 (+0000) Subject: Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the contr... X-Git-Tag: LUFA-110528-BETA~470 X-Git-Url: http://git.linex4red.de/pub/USBasp.git/commitdiff_plain/1331cce08a6e899b15382dd1c6110565ed1b34c5?ds=inline Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly selected when the ISR completes. --- diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c index 43df5f61a..1c6d6caa7 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c @@ -237,10 +237,13 @@ ISR(USB_COM_vect, ISR_BLOCK) Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); USB_INT_Disable(USB_INT_RXSTPI); - sei(); - USB_USBTask(); + NONATOMIC_BLOCK(NONATOMIC_FORCEOFF) + { + USB_Device_ProcessControlRequest(); + } + Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); USB_INT_Enable(USB_INT_RXSTPI); Endpoint_SelectEndpoint(PrevSelectedEndpoint); } diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.h b/LUFA/Drivers/USB/LowLevel/USBInterrupt.h index a191a2994..6f8bf7cea 100644 --- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.h +++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.h @@ -44,6 +44,7 @@ /* Includes: */ #include #include + #include #include #include "../../../Common/Common.h" diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 16925c00b..09a168dc1 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -15,6 +15,8 @@ * LIBUSB_DRIVER_COMPAT, as it applies to all software on all platforms using the libUSB driver * * Fixed: + * - Fixed possible device lockup when INTERRUPT_CONTROL_ENDPOINT is enabled and the control endpoint is not properly + * selected when the ISR completes * * \section Sec_ChangeLog100512 Version 100512 *