spi: fix NULL pointer dereferences by checking dmaengine_prep_slave_sg
diff mbox series

Message ID 20190314064202.14864-1-kjlu@umn.edu
State New
Headers show
Series
  • spi: fix NULL pointer dereferences by checking dmaengine_prep_slave_sg
Related show

Commit Message

Kangjie Lu March 14, 2019, 6:42 a.m. UTC
In case dmaengine_prep_slave_sg fails, the fix returns to avoid
NULL pointer dereference.

Signed-off-by: Kangjie Lu <kjlu@umn.edu>
---
 drivers/spi/spi-s3c64xx.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Krzysztof Kozlowski March 14, 2019, 8:17 a.m. UTC | #1
On Thu, 14 Mar 2019 at 07:42, Kangjie Lu <kjlu@umn.edu> wrote:
>
> In case dmaengine_prep_slave_sg fails, the fix returns to avoid
> NULL pointer dereference.
>
> Signed-off-by: Kangjie Lu <kjlu@umn.edu>

Hi,

Thanks for the patch, but the fix is the same as here:
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1402451.html
and the answer is the same as there - I think you did not handle the
error at all. Did you test the error path in this case? How does it
behave? I think there is no point to replace one NULL pointer to
another NULL pointer right after it. :)

Best regards,
Krzysztof

> ---
>  drivers/spi/spi-s3c64xx.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> index 7b7151ec14c8..3a5f161ce558 100644
> --- a/drivers/spi/spi-s3c64xx.c
> +++ b/drivers/spi/spi-s3c64xx.c
> @@ -293,6 +293,8 @@ static void prepare_dma(struct s3c64xx_spi_dma_data *dma,
>
>         desc = dmaengine_prep_slave_sg(dma->ch, sgt->sgl, sgt->nents,
>                                        dma->direction, DMA_PREP_INTERRUPT);
> +       if (!desc)
> +               return;
>
>         desc->callback = s3c64xx_spi_dmacb;
>         desc->callback_param = dma;
> --
> 2.17.1
>

Patch
diff mbox series

diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 7b7151ec14c8..3a5f161ce558 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -293,6 +293,8 @@  static void prepare_dma(struct s3c64xx_spi_dma_data *dma,
 
 	desc = dmaengine_prep_slave_sg(dma->ch, sgt->sgl, sgt->nents,
 				       dma->direction, DMA_PREP_INTERRUPT);
+	if (!desc)
+		return;
 
 	desc->callback = s3c64xx_spi_dmacb;
 	desc->callback_param = dma;