[PATCH] spi: amlogic: spifc-a4: Fix DMA mapping error handling
Xianwei Zhao
xianwei.zhao at amlogic.com
Thu Mar 5 17:42:15 PST 2026
On 2026/3/6 01:24, Felix Gu wrote:
> Fix three bugs in aml_sfc_dma_buffer_setup() error paths:
> 1. Unnecessary goto: When the first DMA mapping (sfc->daddr) fails,
> nothing needs cleanup. Use direct return instead of goto.
> 2. Double-unmap bug: When info DMA mapping failed, the code would
> unmap sfc->daddr inline, then fall through to out_map_data which
> would unmap it again, causing a double-unmap.
> 3. Wrong unmap size: The out_map_info label used datalen instead of
> infolen when unmapping sfc->iaddr, which could lead to incorrect
> DMA sync behavior.
>
> Fixes: 4670db6f32e9 ("spi: amlogic: add driver for Amlogic SPI Flash Controller")
> Signed-off-by: Felix Gu<ustc.gu at gmail.com>
> ---
> drivers/spi/spi-amlogic-spifc-a4.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/spi/spi-amlogic-spifc-a4.c b/drivers/spi/spi-amlogic-spifc-a4.c
> index 2aef528cfc1b..3956869cfec1 100644
> --- a/drivers/spi/spi-amlogic-spifc-a4.c
> +++ b/drivers/spi/spi-amlogic-spifc-a4.c
> @@ -411,7 +411,7 @@ static int aml_sfc_dma_buffer_setup(struct aml_sfc *sfc, void *databuf,
> ret = dma_mapping_error(sfc->dev, sfc->daddr);
> if (ret) {
> dev_err(sfc->dev, "DMA mapping error\n");
> - goto out_map_data;
> + return ret;
> }
>
> cmd = CMD_DATA_ADDRL(sfc->daddr);
> @@ -429,7 +429,6 @@ static int aml_sfc_dma_buffer_setup(struct aml_sfc *sfc, void *databuf,
> ret = dma_mapping_error(sfc->dev, sfc->iaddr);
> if (ret) {
> dev_err(sfc->dev, "DMA mapping error\n");
> - dma_unmap_single(sfc->dev, sfc->daddr, datalen, dir);
> goto out_map_data;
> }
>
> @@ -448,7 +447,7 @@ static int aml_sfc_dma_buffer_setup(struct aml_sfc *sfc, void *databuf,
> return 0;
>
> out_map_info:
> - dma_unmap_single(sfc->dev, sfc->iaddr, datalen, dir);
> + dma_unmap_single(sfc->dev, sfc->iaddr, infolen, dir);
> out_map_data:
> dma_unmap_single(sfc->dev, sfc->daddr, datalen, dir);
>
>
Reviewed-by: Xianwei Zhao <xianwei.zhao at amlogic.com>
> ---
> base-commit: 3f9cd19e764b782706dbaacc69e502099cb014ba
> change-id: 20260306-spifc-a4-d40f84506d6a
>
> Best regards,
> --
> Felix Gu<ustc.gu at gmail.com>
More information about the linux-amlogic
mailing list