Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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()

+13 -3
+10 -3
drivers/spi/spi-rockchip.c
··· 585 585 { 586 586 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); 587 587 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); 588 594 rs->slave_abort = true; 589 595 spi_finalize_current_transfer(ctlr); 590 596 ··· 660 654 struct spi_controller *ctlr; 661 655 struct resource *mem; 662 656 struct device_node *np = pdev->dev.of_node; 663 - u32 rsd_nsecs; 657 + u32 rsd_nsecs, num_cs; 664 658 bool slave_mode; 665 659 666 660 slave_mode = of_property_read_bool(np, "spi-slave"); ··· 770 764 * rk spi0 has two native cs, spi1..5 one cs only 771 765 * if num-cs is missing in the dts, default to 1 772 766 */ 773 - if (of_property_read_u16(np, "num-cs", &ctlr->num_chipselect)) 774 - ctlr->num_chipselect = 1; 767 + if (of_property_read_u32(np, "num-cs", &num_cs)) 768 + num_cs = 1; 769 + ctlr->num_chipselect = num_cs; 775 770 ctlr->use_gpio_descriptors = true; 776 771 } 777 772 ctlr->dev.of_node = pdev->dev.of_node;
+3
drivers/spi/spi-zynq-qspi.c
··· 570 570 571 571 if (op->dummy.nbytes) { 572 572 tmpbuf = kzalloc(op->dummy.nbytes, GFP_KERNEL); 573 + if (!tmpbuf) 574 + return -ENOMEM; 575 + 573 576 memset(tmpbuf, 0xff, op->dummy.nbytes); 574 577 reinit_completion(&xqspi->data_completion); 575 578 xqspi->txbuf = tmpbuf;