Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision 52769ba568eeb7ba8e696a1b2ac3130da4f70701)
+++ libcfa/src/concurrency/io.cfa	(revision 8ae4165a41b46016828a17bdeb68b98d7a593162)
@@ -684,5 +684,4 @@
 		verify( data != 0 );
 
-		disable_interrupts();
 
 		// Prepare the data we need
@@ -691,5 +690,8 @@
 		uint32_t cnt = *ring.submit_q.num;
 		uint32_t mask = *ring.submit_q.mask;
-		uint32_t off = __tls_rand();
+
+		disable_interrupts();
+			uint32_t off = __tls_rand();
+		enable_interrupts( __cfaabi_dbg_ctx );
 
 		// Loop around looking for an available spot
@@ -707,10 +709,11 @@
 					// update statistics
 					#if !defined(__CFA_NO_STATISTICS__)
-						__tls_stats()->io.submit_q.alloc_avg.val   += len;
-						__tls_stats()->io.submit_q.alloc_avg.block += block;
-						__tls_stats()->io.submit_q.alloc_avg.cnt   += 1;
+						disable_interrupts();
+							__tls_stats()->io.submit_q.alloc_avg.val   += len;
+							__tls_stats()->io.submit_q.alloc_avg.block += block;
+							__tls_stats()->io.submit_q.alloc_avg.cnt   += 1;
+						enable_interrupts( __cfaabi_dbg_ctx );
 					#endif
 
-					enable_interrupts( __cfaabi_dbg_ctx );
 
 					// Success return the data
