kfree_exit only returns ret, remove it. This also fixes the devm_regmap_init_spi error case where the probe wouldn't actually fail because ret is initialized to 0. Signed-off-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> --- drivers/rtc/rtc-pcf2123.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c index 106d5a4cf9b8..2e2a14134346 100644 --- a/drivers/rtc/rtc-pcf2123.c +++ b/drivers/rtc/rtc-pcf2123.c @@ -389,10 +389,9 @@ static int pcf2123_probe(struct spi_device *spi) dev_set_drvdata(&spi->dev, pcf2123); pcf2123->map = devm_regmap_init_spi(spi, &pcf2123_regmap_config); - if (IS_ERR(pcf2123->map)) { dev_err(&spi->dev, "regmap init failed.\n"); - goto kfree_exit; + return PTR_ERR(pcf2123->map); } ret = pcf2123_rtc_read_time(&spi->dev, &tm); @@ -400,7 +399,7 @@ static int pcf2123_probe(struct spi_device *spi) ret = pcf2123_reset(&spi->dev); if (ret < 0) { dev_err(&spi->dev, "chip not found\n"); - goto kfree_exit; + return ret; } } @@ -413,8 +412,7 @@ static int pcf2123_probe(struct spi_device *spi) if (IS_ERR(rtc)) { dev_err(&spi->dev, "failed to register.\n"); - ret = PTR_ERR(rtc); - goto kfree_exit; + return PTR_ERR(rtc); } pcf2123->rtc = rtc; @@ -439,9 +437,6 @@ static int pcf2123_probe(struct spi_device *spi) pcf2123->rtc->uie_unsupported = 1; return 0; - -kfree_exit: - return ret; } #ifdef CONFIG_OF -- 2.21.0