From: Jiada Wang Date: Thu, 18 May 2017 10:01:12 +0000 (-0700) Subject: spi: imx: fix issue when tx_buf or rx_buf is NULL X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=179547e143e773f9f866ad3536275ab627711f3a;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git spi: imx: fix issue when tx_buf or rx_buf is NULL In case either transfer->tx_buf or transfer->rx_buf is NULL, manipulation of buffer in spi_imx_u32_swap_u[8|16]() will cause NULL pointer dereference crash. Add buffer check at very beginning of spi_imx_u32_swap_u[8|16](), to avoid such crash. Signed-off-by: Jiada Wang Reported-by: Leonard Crestez Tested-by: Leonard Crestez Signed-off-by: Mark Brown --- diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index 782045f0d79e..19b30cf7d2b7 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c @@ -288,6 +288,9 @@ static void spi_imx_u32_swap_u8(struct spi_transfer *transfer, u32 *buf) { int i; + if (!buf) + return; + for (i = 0; i < transfer->len / 4; i++) *(buf + i) = cpu_to_be32(*(buf + i)); } @@ -296,6 +299,9 @@ static void spi_imx_u32_swap_u16(struct spi_transfer *transfer, u32 *buf) { int i; + if (!buf) + return; + for (i = 0; i < transfer->len / 4; i++) { u16 *temp = (u16 *)buf;