tools/env: return with error if redundant environments have unequal size
authorAndreas Fenkart <andreas.fenkart@digitalstrom.com>
Wed, 17 Aug 2016 21:41:53 +0000 (23:41 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 20 Aug 2016 18:03:26 +0000 (14:03 -0400)
For double buffering to work, the target buffer must always be big
enough to hold all data. This can only be ensured if buffers are of
equal size, otherwise one must be smaller and we risk data loss
when copying from the bigger to the smaller buffer.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
tools/env/fw_env.c

index d2b167deb9c1aa27198b7a4e7a659e4e4d656caa..7cc748806071861fa678997cac2836933afb6f74 100644 (file)
@@ -1423,10 +1423,9 @@ static int parse_config(struct env_opts *opts)
                        return rc;
 
                if (ENVSIZE(0) != ENVSIZE(1)) {
-                       ENVSIZE(0) = ENVSIZE(1) = min(ENVSIZE(0), ENVSIZE(1));
                        fprintf(stderr,
-                               "Redundant environments have inequal size, set to 0x%08lx\n",
-                               ENVSIZE(1));
+                               "Redundant environments have unequal size");
+                       return -1;
                }
        }