diff --git a/CHANGELOG b/CHANGELOG
index 7fe7ee28be2f9c3e723da05ef56695d6210a6e62..3923ca8ed69df8e5e9333636e3305ae9fe17ef31 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+======================================================================
+Changes for U-Boot 1.1.1:
+======================================================================
+
+* Fix if / elif handling bug in HUSH shell
+
 ======================================================================
 Changes for U-Boot 1.1.0:
 ======================================================================
diff --git a/common/hush.c b/common/hush.c
index 4712adcbfc2fdbeb5a498b693076f3de7ebe441a..eeb970cd536b79a4a5b9c265703472f66975c75d 100644
--- a/common/hush.c
+++ b/common/hush.c
@@ -1843,7 +1843,7 @@ static int run_list_real(struct pipe *pi)
 		if (rmode == RES_THEN || rmode == RES_ELSE) if_code = next_if_code;
 		if (rmode == RES_THEN &&  if_code) continue;
 		if (rmode == RES_ELSE && !if_code) continue;
-		if (rmode == RES_ELIF && !if_code) continue;
+		if (rmode == RES_ELIF && !if_code) break;
 		if (rmode == RES_FOR && pi->num_progs) {
 			if (!list) {
 				/* if no variable values after "in" we skip "for" */
diff --git a/include/version.h b/include/version.h
index e91860f42563ffdfefc2942b5d92a6743aa08a9b..90eb79db34ec2477aa80bff08c5fef9b5f3fc4af 100644
--- a/include/version.h
+++ b/include/version.h
@@ -24,6 +24,6 @@
 #ifndef	__VERSION_H__
 #define	__VERSION_H__
 
-#define	U_BOOT_VERSION	"U-Boot 1.1.0"
+#define	U_BOOT_VERSION	"U-Boot 1.1.1"
 
 #endif	/* __VERSION_H__ */