diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2017-01-11 11:45:18 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2017-01-12 11:02:18 +0100 |
commit | dffaa1d4d1cfabdf325967dd9766adde7320e05e (patch) | |
tree | 992115ea6994f8f22a4efd6a1c763d08e73e7fdc | |
parent | 1bfee8660131fca7a18f68e9548a18ca6b3378a0 (diff) |
nandwrite: add stricter sanity checking for blockalign
This patch makes sure that a virtual erase block is always
composed of a postivie number of erase blocks (i.e. 1 or more)
and enforces the block alignment to be a power of two as
suggested by the help text and assumed throughout the program.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r-- | nand-utils/nandwrite.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/nand-utils/nandwrite.c b/nand-utils/nandwrite.c index 9602a6e..998c68c 100644 --- a/nand-utils/nandwrite.c +++ b/nand-utils/nandwrite.c @@ -191,9 +191,13 @@ static void process_options(int argc, char * const argv[]) errmsg_die("Can't specify negative device offset with option" " -s: %lld", mtdoffset); - if (blockalign < 0) - errmsg_die("Can't specify negative blockalign with option -b:" - " %d", blockalign); + if (blockalign <= 0) + errmsg_die("Can't specify negative or zero blockalign with " + "option -b: %d", blockalign); + + if (!is_power_of_2(blockalign)) + errmsg_die("Can't specify a non-power-of-two blockalign with " + "option -b: %d", blockalign); if (autoplace && noecc) errmsg_die("Autoplacement and no-ECC are mutually exclusive"); |