@@ -852,20 +852,14 @@ DRESULT disk_read (
852852 int rv ;
853853
854854 if (count > 1 && mnt -> dev_dma ) {
855- #ifdef FATFS_USE_DMA_BUF
856- if ((uintptr_t )buff & 31 ) {
857- if (count <= mnt -> fs -> csize ) {
858- dest = mnt -> dmabuf ;
859- }
860- else {
861- dest = (uint8_t * )memalign (32 , count << dev -> l_block_size );
862- }
863- }
864- dev = mnt -> dev_dma ;
865- #else
866855 if (((uintptr_t )buff & 31 ) == 0 ) {
867856 dev = mnt -> dev_dma ;
868857 }
858+ #ifdef FATFS_USE_DMA_BUF
859+ else if (count <= mnt -> fs -> csize ) {
860+ dest = mnt -> dmabuf ;
861+ dev = mnt -> dev_dma ;
862+ }
869863#endif
870864 }
871865
@@ -878,10 +872,6 @@ DRESULT disk_read (
878872#ifdef FATFS_USE_DMA_BUF
879873 if (dest != buff ) {
880874 memcpy (buff , dest , count << dev -> l_block_size );
881-
882- if (dest != mnt -> dmabuf ) {
883- free (dest );
884- }
885875 }
886876#endif
887877
@@ -911,21 +901,15 @@ DRESULT disk_write (
911901 int rv ;
912902
913903 if (count > 1 && mnt -> dev_dma ) {
914- #ifdef FATFS_USE_DMA_BUF
915- if ((uintptr_t )buff & 31 ) {
916- if (count <= mnt -> fs -> csize ) {
917- src = mnt -> dmabuf ;
918- }
919- else {
920- src = (uint8_t * )memalign (32 , count << dev -> l_block_size );
921- }
922- memcpy (src , buff , count << dev -> l_block_size );
923- }
924- dev = mnt -> dev_dma ;
925- #else
926904 if (((uintptr_t )buff & 31 ) == 0 ) {
927905 dev = mnt -> dev_dma ;
928906 }
907+ #ifdef FATFS_USE_DMA_BUF
908+ else if (count <= mnt -> fs -> csize ) {
909+ src = mnt -> dmabuf ;
910+ dev = mnt -> dev_dma ;
911+ memcpy (src , buff , count << dev -> l_block_size );
912+ }
929913#endif
930914 }
931915
@@ -935,12 +919,6 @@ DRESULT disk_write (
935919
936920 rv = dev -> write_blocks (dev , sector , count , src );
937921
938- #ifdef FATFS_USE_DMA_BUF
939- if (src != buff && src != mnt -> dmabuf ) {
940- free (src );
941- }
942- #endif
943-
944922 if (rv < 0 ) {
945923 DBG ((DBG_ERROR , "FATFS: %s[%d] %s error: %d\n" ,
946924 __func__ , pdrv ,
0 commit comments