Index: Drivers/ccid/src/ccid_usb.c
===================================================================
--- Drivers/ccid/src/ccid_usb.c	(revision 7053)
+++ Drivers/ccid/src/ccid_usb.c	(working copy)
@@ -1531,7 +1531,6 @@
 	interrupt_mask = 0x02 << (2 * (usbDevice[reader_index].ccid.bCurrentSlotIndex % 4));
 
 	/* Wait until the condition is signaled or a timeout occurs */
-	pthread_mutex_lock(&msExt->mutex);
 	gettimeofday(&local_time, NULL);
 	cond_wait_until.tv_sec = local_time.tv_sec;
 	cond_wait_until.tv_nsec = local_time.tv_usec * 1000;
@@ -1540,6 +1539,8 @@
 	cond_wait_until.tv_nsec += 1000000 * (timeout % 1000);
 
 again:
+	pthread_mutex_lock(&msExt->mutex);
+
 	rv = pthread_cond_timedwait(&msExt->condition, &msExt->mutex,
 		&cond_wait_until);
 
