Skip to content

Commit ab38244

Browse files
zhou1615broonie
authored andcommitted
spi: spi-zynq-qspi: Fix a NULL pointer dereference in zynq_qspi_exec_mem_op()
In zynq_qspi_exec_mem_op(), kzalloc() is directly used in memset(), which could lead to a NULL pointer dereference on failure of kzalloc(). Fix this bug by adding a check of tmpbuf. This bug was found by a static analyzer. The analysis employs differential checking to identify inconsistent security operations (e.g., checks or kfrees) between two code paths and confirms that the inconsistent operations are not recovered in the current function or the callers, so they constitute bugs. Note that, as a bug found by static analysis, it can be a false positive or hard to trigger. Multiple researchers have cross-reviewed the bug. Builds with CONFIG_SPI_ZYNQ_QSPI=m show no new warnings, and our static analyzer no longer warns about this code. Fixes: 67dca5e ("spi: spi-mem: Add support for Zynq QSPI controller") Signed-off-by: Zhou Qingyang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent f83a96e commit ab38244

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

drivers/spi/spi-zynq-qspi.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,9 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,
570570

571571
if (op->dummy.nbytes) {
572572
tmpbuf = kzalloc(op->dummy.nbytes, GFP_KERNEL);
573+
if (!tmpbuf)
574+
return -ENOMEM;
575+
573576
memset(tmpbuf, 0xff, op->dummy.nbytes);
574577
reinit_completion(&xqspi->data_completion);
575578
xqspi->txbuf = tmpbuf;

0 commit comments

Comments
 (0)