diff --git a/CHANGELOG b/CHANGELOG
index b6e289ea119a8cbae40cc7c2f8242c7b6b70bc5a..216cb633f75da113b3f96169c85aead7b33063b8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,13 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* Fixes common/cmd_flash.c:
+
+   - fix some compiler/parser error, if using m68k tool chain
+   - optical fix for protect on/off all messages, if using more
+     then one bank
+  Patch by Jens Scharsig, 28 July 2005
+
 * Fix Lite5200B support: initialize SDelay register
   See Freescale's AN3221 "MPC5200B SDRAM Initialization and
   Configuration", 3.3.1 SDelay--MBAR + 0x0190
diff --git a/common/cmd_flash.c b/common/cmd_flash.c
index 201f4e33d44178a4ef169f3d0c9c2f8ffb842d2c..cb1c5bb432be9fb231078ad2175b27e9de8ae646 100644
--- a/common/cmd_flash.c
+++ b/common/cmd_flash.c
@@ -125,13 +125,16 @@ abbrev_spec (char *str, flash_info_t ** pinfo, int *psf, int *psl)
 static int
 addr_spec(char *arg1, char *arg2, ulong *addr_first, ulong *addr_last)
 {
-	char len_used = 0; /* indicates if the "start +length" form used */
 	char *ep;
+	char len_used; /* indicates if the "start +length" form used */
+	char found;
+	ulong bank;
 
 	*addr_first = simple_strtoul(arg1, &ep, 16);
 	if (ep == arg1 || *ep != '\0')
 		return -1;
 
+	len_used = 0;
 	if (arg2 && *arg2 == '+'){
 		len_used = 1;
 		++arg2;
@@ -142,9 +145,6 @@ addr_spec(char *arg1, char *arg2, ulong *addr_first, ulong *addr_last)
 		return -1;
 
 	if (len_used){
-		char found = 0;
-		ulong bank;
-
 		/*
 		 * *addr_last has the length, compute correct *addr_last
 		 * XXX watch out for the integer overflow! Right now it is
@@ -159,6 +159,7 @@ addr_spec(char *arg1, char *arg2, ulong *addr_first, ulong *addr_last)
 		 */
 
 		/* find the end addr of the sector where the *addr_last is */
+		found = 0;
 		for (bank = 0; bank < CFG_MAX_FLASH_BANKS && !found; ++bank){
 			int i;
 			flash_info_t *info = &flash_info[bank];
@@ -506,12 +507,10 @@ int do_protect (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 				info->protect[i] = p;
 #endif	/* CFG_FLASH_PROTECTION */
 			}
-		}
-
 #if defined(CFG_FLASH_PROTECTION)
-		if (!rcode) puts (" done\n");
+			if (!rcode) puts (" done\n");
 #endif	/* CFG_FLASH_PROTECTION */
-
+		}
 		return rcode;
 	}