Skip to content

Commit 4b23c6e

Browse files
committed
Merge tag 'spi-fix-v5.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Pull spi fixes from Mark Brown: "A few small driver specific fixes" * tag 'spi-fix-v5.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: spi: rockchip: terminate dma transmission when slave abort spi: rockchip: Fix error in getting num-cs property spi: spi-zynq-qspi: Fix a NULL pointer dereference in zynq_qspi_exec_mem_op()
2 parents 64b5132 + 8080876 commit 4b23c6e

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

drivers/spi/spi-rockchip.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,12 @@ static int rockchip_spi_slave_abort(struct spi_controller *ctlr)
585585
{
586586
struct rockchip_spi *rs = spi_controller_get_devdata(ctlr);
587587

588+
if (atomic_read(&rs->state) & RXDMA)
589+
dmaengine_terminate_sync(ctlr->dma_rx);
590+
if (atomic_read(&rs->state) & TXDMA)
591+
dmaengine_terminate_sync(ctlr->dma_tx);
592+
atomic_set(&rs->state, 0);
593+
spi_enable_chip(rs, false);
588594
rs->slave_abort = true;
589595
spi_finalize_current_transfer(ctlr);
590596

@@ -654,7 +660,7 @@ static int rockchip_spi_probe(struct platform_device *pdev)
654660
struct spi_controller *ctlr;
655661
struct resource *mem;
656662
struct device_node *np = pdev->dev.of_node;
657-
u32 rsd_nsecs;
663+
u32 rsd_nsecs, num_cs;
658664
bool slave_mode;
659665

660666
slave_mode = of_property_read_bool(np, "spi-slave");
@@ -764,8 +770,9 @@ static int rockchip_spi_probe(struct platform_device *pdev)
764770
* rk spi0 has two native cs, spi1..5 one cs only
765771
* if num-cs is missing in the dts, default to 1
766772
*/
767-
if (of_property_read_u16(np, "num-cs", &ctlr->num_chipselect))
768-
ctlr->num_chipselect = 1;
773+
if (of_property_read_u32(np, "num-cs", &num_cs))
774+
num_cs = 1;
775+
ctlr->num_chipselect = num_cs;
769776
ctlr->use_gpio_descriptors = true;
770777
}
771778
ctlr->dev.of_node = pdev->dev.of_node;

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)