drivers/dma: fix bug that may copy one byte too much
This happens when src
and dst
are odd and len
is even.
Example:
-
dst = 0x13
,src = 0x41
,len = 14
Calculate length of DMA copy:
- ->
dma0sz = len / 2 = 7
The first byte will be manually copied to word-align src and dst:
- ->
dst = 0x14
,src = 0x42
,len = 13
Now the DMA transfer will copy 7 words (= 14 bytes), although only 13 bytes
should be copied. This will therefore corrupt memory @ dst + len
.