Commit dc8b338f authored by Claudiu Beznea's avatar Claudiu Beznea Committed by Kalle Valo
Browse files

wilc1000: use goto labels on error path



Use goto labels on error path for probe functions. This makes code easier
to read. With this introduce also netdev_cleanup and call it where
necessary.

Signed-off-by: default avatarClaudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210806081229.721731-2-claudiu.beznea@microchip.com
parent b05897ca
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -129,10 +129,8 @@ static int wilc_sdio_probe(struct sdio_func *func,

	ret = wilc_cfg80211_init(&wilc, &func->dev, WILC_HIF_SDIO,
				 &wilc_hif_sdio);
	if (ret) {
		kfree(sdio_priv);
		return ret;
	}
	if (ret)
		goto free;

	if (IS_ENABLED(CONFIG_WILC1000_HW_OOB_INTR)) {
		struct device_node *np = func->card->dev.of_node;
@@ -150,13 +148,19 @@ static int wilc_sdio_probe(struct sdio_func *func,

	wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc");
	if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) {
		kfree(sdio_priv);
		return -EPROBE_DEFER;
		ret = -EPROBE_DEFER;
		goto netdev_cleanup;
	} else if (!IS_ERR(wilc->rtc_clk))
		clk_prepare_enable(wilc->rtc_clk);

	dev_info(&func->dev, "Driver Initializing success\n");
	return 0;

netdev_cleanup:
	wilc_netdev_cleanup(wilc);
free:
	kfree(sdio_priv);
	return ret;
}

static void wilc_sdio_remove(struct sdio_func *func)
+10 −6
Original line number Diff line number Diff line
@@ -154,10 +154,8 @@ static int wilc_bus_probe(struct spi_device *spi)
		return -ENOMEM;

	ret = wilc_cfg80211_init(&wilc, &spi->dev, WILC_HIF_SPI, &wilc_hif_spi);
	if (ret) {
		kfree(spi_priv);
		return ret;
	}
	if (ret)
		goto free;

	spi_set_drvdata(spi, wilc);
	wilc->dev = &spi->dev;
@@ -166,12 +164,18 @@ static int wilc_bus_probe(struct spi_device *spi)

	wilc->rtc_clk = devm_clk_get(&spi->dev, "rtc");
	if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) {
		kfree(spi_priv);
		return -EPROBE_DEFER;
		ret = -EPROBE_DEFER;
		goto netdev_cleanup;
	} else if (!IS_ERR(wilc->rtc_clk))
		clk_prepare_enable(wilc->rtc_clk);

	return 0;

netdev_cleanup:
	wilc_netdev_cleanup(wilc);
free:
	kfree(spi_priv);
	return ret;
}

static int wilc_bus_remove(struct spi_device *spi)