Blackfin: fix length checking in kgdb_ebin2mem
authorRoel Kluin <roel.kluin@gmail.com>
Thu, 4 Jun 2009 23:57:24 +0000 (19:57 -0400)
committerMike Frysinger <vapier@gentoo.org>
Fri, 12 Jun 2009 10:12:07 +0000 (06:12 -0400)
The kgdb_ebin2mem() was decrementing the count variable to do parsing, but
then later still tries to use it based on its original meaning.  So leave
it untouched and use a different variable to walk the memory.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/kernel/kgdb.c

index c5362b2..da28f79 100644 (file)
@@ -587,19 +587,18 @@ int kgdb_ebin2mem(char *buf, char *mem, int count)
        unsigned short *mmr16;
        unsigned long *mmr32;
        int err;
-       int size = 0;
+       int size;
        int cpu = raw_smp_processor_id();
 
        tmp_old = tmp_new = buf;
 
-       while (count-- > 0) {
+       for (size = 0; size < count; ++size) {
                if (*tmp_old == 0x7d)
                        *tmp_new = *(++tmp_old) ^ 0x20;
                else
                        *tmp_new = *tmp_old;
                tmp_new++;
                tmp_old++;
-               size++;
        }
 
        err = validate_memory_access_address((unsigned long)mem, size);