struct reset_control *rst;
        int ret;
 
-       master = spi_alloc_master(&pdev->dev, sizeof(struct stm32_spi));
+       master = devm_spi_alloc_master(&pdev->dev, sizeof(struct stm32_spi));
        if (!master) {
                dev_err(&pdev->dev, "spi master allocation failed\n");
                return -ENOMEM;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        spi->base = devm_ioremap_resource(&pdev->dev, res);
-       if (IS_ERR(spi->base)) {
-               ret = PTR_ERR(spi->base);
-               goto err_master_put;
-       }
+       if (IS_ERR(spi->base))
+               return PTR_ERR(spi->base);
 
        spi->phys_addr = (dma_addr_t)res->start;
 
        spi->irq = platform_get_irq(pdev, 0);
-       if (spi->irq <= 0) {
-               ret = dev_err_probe(&pdev->dev, spi->irq, "failed to get irq\n");
-               goto err_master_put;
-       }
+       if (spi->irq <= 0)
+               return dev_err_probe(&pdev->dev, spi->irq,
+                                    "failed to get irq\n");
+
        ret = devm_request_threaded_irq(&pdev->dev, spi->irq,
                                        spi->cfg->irq_handler_event,
                                        spi->cfg->irq_handler_thread,
        if (ret) {
                dev_err(&pdev->dev, "irq%d request failed: %d\n", spi->irq,
                        ret);
-               goto err_master_put;
+               return ret;
        }
 
        spi->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(spi->clk)) {
                ret = PTR_ERR(spi->clk);
                dev_err(&pdev->dev, "clk get failed: %d\n", ret);
-               goto err_master_put;
+               return ret;
        }
 
        ret = clk_prepare_enable(spi->clk);
        if (ret) {
                dev_err(&pdev->dev, "clk enable failed: %d\n", ret);
-               goto err_master_put;
+               return ret;
        }
        spi->clk_rate = clk_get_rate(spi->clk);
        if (!spi->clk_rate) {
                dma_release_channel(spi->dma_rx);
 err_clk_disable:
        clk_disable_unprepare(spi->clk);
-err_master_put:
-       spi_master_put(master);
 
        return ret;
 }