diff --git a/cmd/mem.c b/cmd/mem.c
index 575893c..190e2b9 100644
--- a/cmd/mem.c
+++ b/cmd/mem.c
@@ -53,7 +53,8 @@
 static ulong	mm_last_addr, mm_last_size;
 
 static	ulong	base_address = 0;
-#ifdef CONFIG_MEM_SEARCH
+#ifdef CONFIG_CMD_MEM_SEARCH
+static ulong dp_last_ms_length;
 static u8 search_buf[64];
 static uint search_len;
 #endif
@@ -367,7 +368,7 @@
 	return 0;
 }
 
-#ifdef CONFIG_MEM_SEARCH
+#ifdef CONFIG_CMD_MEM_SEARCH
 static int do_mem_search(struct cmd_tbl *cmdtp, int flag, int argc,
 			 char *const argv[])
 {
@@ -377,6 +378,7 @@
 	ulong last_pos;		/* Offset of last match in 'size' units*/
 	ulong last_addr;	/* Address of last displayed line */
 	int limit = 10;
+	int used_len;
 	int count;
 	int size;
 	int i;
@@ -384,12 +386,12 @@
 	/* We use the last specified parameters, unless new ones are entered */
 	addr = dp_last_addr;
 	size = dp_last_size;
-	length = dp_last_length;
+	length = dp_last_ms_length;
 
 	if (argc < 3)
 		return CMD_RET_USAGE;
 
-	if ((!flag & CMD_FLAG_REPEAT)) {
+	if (!(flag & CMD_FLAG_REPEAT)) {
 		/*
 		 * Check for a size specification.
 		 * Defaults to long if no or incorrect specification.
@@ -398,7 +400,8 @@
 		if (size < 0 && size != -2 /* string */)
 			return 1;
 
-		argc--; argv++;
+		argc--;
+		argv++;
 		while (argc && *argv[0] == '-') {
 			int ch = argv[0][1];
 
@@ -408,7 +411,8 @@
 				limit = simple_strtoul(argv[0] + 2, NULL, 16);
 			else
 				return CMD_RET_USAGE;
-			argc--; argv++;
+			argc--;
+			argv++;
 		}
 
 		/* Address is specified since argc > 1 */
@@ -421,7 +425,7 @@
 		/* Read the bytes to search for */
 		end = search_buf + sizeof(search_buf);
 		for (i = 2, ptr = search_buf; i < argc && ptr < end; i++) {
-			if (SUPPORT_64BIT_DATA && size == 8) {
+			if (MEM_SUPPORT_64BIT_DATA && size == 8) {
 				u64 val = simple_strtoull(argv[i], NULL, 16);
 
 				*(u64 *)ptr = val;
@@ -460,7 +464,8 @@
 	last_pos = 0;
 	last_addr = 0;
 	count = 0;
-	for (offset = 0; offset <= bytes - search_len && count < limit;
+	for (offset = 0;
+	     offset < bytes && offset <= bytes - search_len && count < limit;
 	     offset += size) {
 		void *ptr = buf + offset;
 
@@ -495,9 +500,10 @@
 
 	unmap_sysmem(buf);
 
-	dp_last_addr = addr + offset / size;
+	used_len = offset / size;
+	dp_last_addr = addr + used_len;
 	dp_last_size = size;
-	dp_last_length = length - offset / size;
+	dp_last_ms_length = length < used_len ? 0 : length - used_len;
 
 	return count ? 0 : CMD_RET_FAILURE;
 }
@@ -1337,13 +1343,13 @@
 	"[.b, .w, .l" HELP_Q "] addr1 addr2 count"
 );
 
-#ifdef CONFIG_MEM_SEARCH
+#ifdef CONFIG_CMD_MEM_SEARCH
 /**************************************************/
 U_BOOT_CMD(
 	ms,	255,	1,	do_mem_search,
 	"memory search",
 	"[.b, .w, .l" HELP_Q ", .s] [-q | -<n>] address #-of-objects <value>..."
-	"  -q = quiet, -l<val> = match limit" :
+	"  -q = quiet, -l<val> = match limit"
 );
 #endif
 
