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@ti.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
}
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]);
return 0;
}
-