Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision 53ee27e46dd5864a8ace801fe844ed654a140169)
+++ libcfa/src/concurrency/io.cfa	(revision eafec07b12a788288434fcd3ceef84d0588949b2)
@@ -244,5 +244,5 @@
 				uint32_t idx = (i + off) & mask;
 				struct io_uring_sqe * sqe = &ring.submit_q.sqes[idx];
-				volatile uint64_t * udata = &sqe->user_data;
+				volatile uint64_t * udata = (volatile uint64_t *)&sqe->user_data;
 
 				if( *udata == expected &&
@@ -319,5 +319,5 @@
 		__io_data & ring = *ctx->thrd.ring;
 		// Get now the data we definetely need
-		uint32_t * const tail = ring.submit_q.tail;
+		volatile uint32_t * const tail = ring.submit_q.tail;
 		const uint32_t mask  = *ring.submit_q.mask;
 
@@ -366,5 +366,5 @@
 			}
 
-			/* paranoid */ verify( ret > 0 || (ring.ring_flags & IORING_SETUP_SQPOLL) );
+			/* paranoid */ verify( ret > 0 || to_submit == 0 || (ring.ring_flags & IORING_SETUP_SQPOLL) );
 
 			// Release the consumed SQEs
