ftl: fix ftl_flush will read/erase beyond the end of the partition
Signed-off-by: guohao15 <guohao15@xiaomi.com>
This commit is contained in:
parent
1d6b9d3e98
commit
2740f377eb
@ -144,6 +144,16 @@ static void rwb_wrflush(FAR struct rwbuffer_s *rwb)
|
||||
finfo("Flushing: blockstart=0x%08lx nblocks=%d from buffer=%p\n",
|
||||
(long)rwb->wrblockstart, rwb->wrnblocks, rwb->wrbuffer);
|
||||
|
||||
padblocks = rwb->wrblockstart % rwb->wralignblocks;
|
||||
if (padblocks)
|
||||
{
|
||||
memmove(rwb->wrbuffer + padblocks * rwb->blocksize,
|
||||
rwb->wrbuffer, rwb->wrnblocks * rwb->blocksize);
|
||||
rwb->wrblockstart -= padblocks;
|
||||
rwb->wrnblocks += padblocks;
|
||||
rwb_read_(rwb, rwb->wrblockstart, padblocks, rwb->wrbuffer);
|
||||
}
|
||||
|
||||
padblocks = rwb->wrnblocks % rwb->wralignblocks;
|
||||
if (padblocks)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user