mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-12 13:36:45 +07:00
spi : spi-topcliff-pch: Fix to handle empty DMA buffers
pch_alloc_dma_buf allocated tx, rx DMA buffers which can fail. Further, these buffers are used without a check. The patch checks for these failures and sends the error upstream. Signed-off-by: Aditya Pakki <pakki001@umn.edu> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
5356c2c70e
commit
f37d8e67f3
@ -1300,18 +1300,27 @@ static void pch_free_dma_buf(struct pch_spi_board_data *board_dat,
|
||||
dma->rx_buf_virt, dma->rx_buf_dma);
|
||||
}
|
||||
|
||||
static void pch_alloc_dma_buf(struct pch_spi_board_data *board_dat,
|
||||
static int pch_alloc_dma_buf(struct pch_spi_board_data *board_dat,
|
||||
struct pch_spi_data *data)
|
||||
{
|
||||
struct pch_spi_dma_ctrl *dma;
|
||||
int ret;
|
||||
|
||||
dma = &data->dma;
|
||||
ret = 0;
|
||||
/* Get Consistent memory for Tx DMA */
|
||||
dma->tx_buf_virt = dma_alloc_coherent(&board_dat->pdev->dev,
|
||||
PCH_BUF_SIZE, &dma->tx_buf_dma, GFP_KERNEL);
|
||||
if (!dma->tx_buf_virt)
|
||||
ret = -ENOMEM;
|
||||
|
||||
/* Get Consistent memory for Rx DMA */
|
||||
dma->rx_buf_virt = dma_alloc_coherent(&board_dat->pdev->dev,
|
||||
PCH_BUF_SIZE, &dma->rx_buf_dma, GFP_KERNEL);
|
||||
if (!dma->rx_buf_virt)
|
||||
ret = -ENOMEM;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int pch_spi_pd_probe(struct platform_device *plat_dev)
|
||||
@ -1388,7 +1397,9 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev)
|
||||
|
||||
if (use_dma) {
|
||||
dev_info(&plat_dev->dev, "Use DMA for data transfers\n");
|
||||
pch_alloc_dma_buf(board_dat, data);
|
||||
ret = pch_alloc_dma_buf(board_dat, data);
|
||||
if (ret)
|
||||
goto err_spi_register_master;
|
||||
}
|
||||
|
||||
ret = spi_register_master(master);
|
||||
|
Loading…
Reference in New Issue
Block a user