When cnt reaches 0, any shift operation will keep cnt=0, so the condition
`cnt >= 0` doesn't make sense.

To fix this endless loop, we drop the useless condition and simply break the
loop when cnt reaches 0.

Signed-off-by: Eddy Petrișor <[email protected]>
---
 common/memsize.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/common/memsize.c b/common/memsize.c
index 5c0d279..a6af993 100644
--- a/common/memsize.c
+++ b/common/memsize.c
@@ -33,7 +33,7 @@ long get_ram_size(long *base, long maxsize)
        long           size;
        int            i = 0;
 
-       for (cnt = (maxsize / sizeof(long)) >> 1; cnt >= 0; cnt >>= 1) {
+       for (cnt = (maxsize / sizeof(long)) >> 1; ; cnt >>= 1) {
                addr = base + cnt;      /* pointer arith! */
                sync();
                save[i] = *addr;
@@ -43,6 +43,7 @@ long get_ram_size(long *base, long maxsize)
                        *addr = ~cnt;
                } else {
                        *addr = 0;
+                       break;
                }
        }
 
-- 
1.9.2.459.g68773ac

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to