[RFC] [PATCH] [MTD-UTILS]: flash_lock: fix length being passed
Artem Bityutskiy
dedekind1 at gmail.com
Fri Dec 4 03:41:45 EST 2009
On Wed, 2009-12-02 at 19:58 +0530, Vimal Singh wrote:
> 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 <vimalsingh at ti.com>
> ---
>
> --- flash_lock.c.org 2009-11-24 19:33:18.000000000 +0530
> +++ flash_lock.c 2009-11-24 19:33:13.000000000 +0530
> @@ -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[])
So if num_sectors is 1, mtdLockInfo.length is 0 - is it expected?
--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
More information about the linux-mtd
mailing list