mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
fix(spi_master): fix the heap corruption bug that RX DMA writes over the temporary buffer boundary.
TW#15434 Closes #994.
This commit is contained in:
parent
e32c8be6bf
commit
074f36afff
@ -620,8 +620,8 @@ esp_err_t spi_device_queue_trans(spi_device_handle_t handle, spi_transaction_t *
|
||||
trans_buf.buffer_to_rcv = trans_desc->rx_buffer;
|
||||
}
|
||||
if ( trans_buf.buffer_to_rcv && handle->host->dma_chan && (!esp_ptr_dma_capable( trans_buf.buffer_to_rcv ) || ((int)trans_buf.buffer_to_rcv%4!=0)) ) {
|
||||
//if rxbuf in the desc not DMA-capable, malloc a new one
|
||||
trans_buf.buffer_to_rcv = heap_caps_malloc((trans_desc->rxlength+7)/8, MALLOC_CAP_DMA);
|
||||
//if rxbuf in the desc not DMA-capable, malloc a new one. The rx buffer need to be length of multiples of 32 bits to avoid heap corruption.
|
||||
trans_buf.buffer_to_rcv = heap_caps_malloc((trans_desc->rxlength+31)/8, MALLOC_CAP_DMA);
|
||||
if ( trans_buf.buffer_to_rcv==NULL ) return ESP_ERR_NO_MEM;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user