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

spi: spi-zynq-qspi: Fix some wrong goto jumps & missing error code

In zynq_qspi_probe function, when enable the device clock is done,
the return of all the functions should goto the clk_dis_all label.

If num_cs is not right then this should return a negative error
code but currently it returns success.

Signed-off-by: zpershuai <zpershuai@gmail.com>
Link: https://lore.kernel.org/r/1622110857-21812-1-git-send-email-zpershuai@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

zpershuai and committed by
Mark Brown
f131767e 2ec6f20b

+4 -3
+4 -3
drivers/spi/spi-zynq-qspi.c
··· 678 678 xqspi->irq = platform_get_irq(pdev, 0); 679 679 if (xqspi->irq <= 0) { 680 680 ret = -ENXIO; 681 - goto remove_master; 681 + goto clk_dis_all; 682 682 } 683 683 ret = devm_request_irq(&pdev->dev, xqspi->irq, zynq_qspi_irq, 684 684 0, pdev->name, xqspi); 685 685 if (ret != 0) { 686 686 ret = -ENXIO; 687 687 dev_err(&pdev->dev, "request_irq failed\n"); 688 - goto remove_master; 688 + goto clk_dis_all; 689 689 } 690 690 691 691 ret = of_property_read_u32(np, "num-cs", ··· 693 693 if (ret < 0) { 694 694 ctlr->num_chipselect = 1; 695 695 } else if (num_cs > ZYNQ_QSPI_MAX_NUM_CS) { 696 + ret = -EINVAL; 696 697 dev_err(&pdev->dev, "only 2 chip selects are available\n"); 697 - goto remove_master; 698 + goto clk_dis_all; 698 699 } else { 699 700 ctlr->num_chipselect = num_cs; 700 701 }