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:
guohao15 2023-06-06 10:04:00 +08:00 committed by Xiang Xiao
parent 1d6b9d3e98
commit 2740f377eb

View File

@ -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)
{