diff --git a/Demos/Device/RNDISEthernet/RNDISEthernet.c b/Demos/Device/RNDISEthernet/RNDISEthernet.c
index 96fef399295f646387adee3dd74780a54dd59eb7..fd88ecf8967e9ccd2266f69bfca1cb99b6508ed7 100644
--- a/Demos/Device/RNDISEthernet/RNDISEthernet.c
+++ b/Demos/Device/RNDISEthernet/RNDISEthernet.c
@@ -113,10 +113,6 @@ EVENT_HANDLER(USB_Disconnect)
 EVENT_HANDLER(USB_ConfigurationChanged)
 {
 	/* Setup CDC Notification, Rx and Tx Endpoints */
-	Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
-		                       ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
-	                           ENDPOINT_BANK_SINGLE);
-
 	Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,
 		                       ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
 	                           ENDPOINT_BANK_SINGLE);
@@ -125,6 +121,10 @@ EVENT_HANDLER(USB_ConfigurationChanged)
 		                       ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
 	                           ENDPOINT_BANK_SINGLE);
 
+	Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
+		                       ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
+	                           ENDPOINT_BANK_SINGLE);
+
 	/* Indicate USB connected and ready */
 	UpdateStatus(Status_USBReady);
 
diff --git a/Demos/Host/CDCHost/ConfigDescriptor.c b/Demos/Host/CDCHost/ConfigDescriptor.c
index 9a23fc3fa1d0fbf7b0d01f6189abb1a06563c1f1..29afbfaa16844cdf31af574e26bc5296ec4c4fd9 100644
--- a/Demos/Host/CDCHost/ConfigDescriptor.c
+++ b/Demos/Host/CDCHost/ConfigDescriptor.c
@@ -95,6 +95,14 @@ uint8_t ProcessConfigurationDescriptor(void)
 			}
 			else
 			{
+				/* Clear the found endpoints mask, since any already processed endpoints aren't in the CDC interface we need */
+				FoundEndpoints = 0;
+
+				/* Disable any already configured endpoints from the invalid CDC interfaces */
+				Endpoint_DisableEndpoint(CDC_NOTIFICATIONPIPE);
+				Endpoint_DisableEndpoint(CDC_DATAPIPE_IN);
+				Endpoint_DisableEndpoint(CDC_DATAPIPE_OUT);
+			
 				/* Get the next CDC control interface from the configuration descriptor (CDC class has two CDC interfaces) */
 				if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, NextCDCControlInterface))
 				{
diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt
index be15e73f87325258fb1aa8d91583457d3d58bddf..69a60f1437e5a45805531b9d3e4340102410cdf8 100644
--- a/LUFA/ChangeLog.txt
+++ b/LUFA/ChangeLog.txt
@@ -15,6 +15,8 @@
   *  - Removed support for endpoint/pipe non-control interrupts; these did not act in the way users expected, and had many subtle issues
   *  - Fixed Device Mode not handling Set Feature and Clear Feature Chapter 9 requests that are addressed to the device (thanks to Brian Dickman)
   *  - Moved control endpoint interrupt handling into the library itself, enable via the new INTERRUPT_CONTROL_ENDPOINT token
+  *  - Fixed CDCHost not clearing configured endpoints and resetting configured endpoints mask when a partially enumerated invalid CDC
+  *    interface is skipped
   *
   *
   *  \section Sec_ChangeLog090510 Version 090510