diff --git a/CHANGELOG b/CHANGELOG
index 5ef76d220620019f87bb0a8546127b5df0ccaae4..e451b517a4a86803478b0509a9429021e3351cde 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,10 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* Fix control-c handing in CONFIG_CMDLINE_EDITING
+  Properly pass break code back from readline.
+  Patch by Roger Blofeld, 31 Jul 2006
+
 * Add commandline history support to all AMCC eval boards
   Patch by Stefan Roese, 07 Aug 2006
 
diff --git a/common/main.c b/common/main.c
index 3788bd5e4a18f94065a400ac8895760e0c33a473..13d12a430807ba94e1607a3590eddc2a9b0020e2 100644
--- a/common/main.c
+++ b/common/main.c
@@ -937,6 +937,7 @@ int readline (const char *const prompt)
 #ifdef CONFIG_CMDLINE_EDITING
 	char *p = console_buffer;
 	unsigned int len=MAX_CMDBUF_SIZE;
+	int rc;
 	static int initted = 0;
 
 	if (!initted) {
@@ -946,8 +947,8 @@ int readline (const char *const prompt)
 
 	puts (prompt);
 
-	cread_line(p, &len);
-	return len;
+	rc = cread_line(p, &len);
+	return rc < 0 ? rc : len;
 #else
 	char   *p = console_buffer;
 	int	n = 0;				/* buffer index		*/