NAND: fix off-by-one error in erase command argument range
authorJon Povey <jon.povey@racelogic.co.uk>
Thu, 13 May 2010 09:31:41 +0000 (18:31 +0900)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Fri, 14 May 2010 11:22:59 +0000 (13:22 +0200)
The last_block argument to nand_erase() is checked against nand->num_blocks,
but the highest valid block number is (total - 1), the test for invalid should
be ">=" rather than ">".

Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
src/flash/nand/core.c

index 9013812d284c006129dd3eec3fa1eeff55eb61ca..e76349165e2189bc6179c73e955a768daf5ef10b 100644 (file)
@@ -528,7 +528,7 @@ int nand_erase(struct nand_device *nand, int first_block, int last_block)
        if (!nand->device)
                return ERROR_NAND_DEVICE_NOT_PROBED;
 
-       if ((first_block < 0) || (last_block > nand->num_blocks))
+       if ((first_block < 0) || (last_block >= nand->num_blocks))
                return ERROR_INVALID_ARGUMENTS;
 
        /* make sure we know if a block is bad before erasing it */