Index: uspace/drv/char/ns8250/cyclic_buffer.h
===================================================================
--- uspace/drv/char/ns8250/cyclic_buffer.h	(revision fd418d9c9df736e34fdfef1cd5f55e0f3406b693)
+++ uspace/drv/char/ns8250/cyclic_buffer.h	(revision 8a99c7ed8506480ce279d2129b1efc24cd26f307)
@@ -36,5 +36,5 @@
 #define CYCLIC_BUFFER_H_
 
-#define BUF_LEN 256
+#define BUF_LEN 4096
 
 typedef struct cyclic_buffer {
Index: uspace/drv/char/ns8250/ns8250.c
===================================================================
--- uspace/drv/char/ns8250/ns8250.c	(revision fd418d9c9df736e34fdfef1cd5f55e0f3406b693)
+++ uspace/drv/char/ns8250/ns8250.c	(revision 8a99c7ed8506480ce279d2129b1efc24cd26f307)
@@ -745,7 +745,6 @@
 	bool cont = true;
 	
+	fibril_mutex_lock(&ns->mutex);
 	while (cont) {
-		fibril_mutex_lock(&ns->mutex);
-		
 		cont = ns8250_received(regs);
 		if (cont) {
@@ -757,4 +756,5 @@
 					ddf_msg(LVL_WARN, "Buffer overflow on "
 					    "%s.", ns->dev->name);
+					break;
 				} else {
 					ddf_msg(LVL_DEBUG2, "Character %c saved "
@@ -766,8 +766,7 @@
 			}
 		}
-		
-		fibril_mutex_unlock(&ns->mutex);
-		fibril_yield();
-	}
+	}
+	fibril_mutex_unlock(&ns->mutex);
+	fibril_yield();
 }
 
