From 43feb39f35a9ee0ed318df80433243c0bfe263ea Mon Sep 17 00:00:00 2001 From: Vimal Singh Date: Wed, 2 Dec 2009 19:58:08 +0530 Subject: flash_lock: fix length being passed This patch fixes the 'length' calculation. Making it: + mtdLockInfo.length = (num_sectors - 1) * mtdInfo.erasesize; Rather: - mtdLockInfo.length = num_sectors * mtdInfo.erasesize; Say there are 240 blocks present in the device. Then: offset starts from: 0x0 and full size of device: 0x1E00000 doing: 240 * 0x20000 gives -> 0x1E00000 But last block address should be 0x1DE0000 (which spans for 0x20000 bytes, adding upto size of 0x1E00000) Signed-off-by: Vimal Singh Signed-off-by: Artem Bityutskiy --- flash_lock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/flash_lock.c b/flash_lock.c index dca6794..37f2ad3 100644 --- a/flash_lock.c +++ b/flash_lock.c @@ -71,7 +71,7 @@ int main(int argc, char *argv[]) } mtdLockInfo.start = ofs; - mtdLockInfo.length = num_sectors * mtdInfo.erasesize; + mtdLockInfo.length = (num_sectors - 1) * mtdInfo.erasesize; if(ioctl(fd, MEMLOCK, &mtdLockInfo)) { fprintf(stderr, "Could not lock MTD device: %s\n", argv[1]); @@ -81,4 +81,3 @@ int main(int argc, char *argv[]) return 0; } - -- cgit v1.2.3