fpga: zynq-fpga: Fix issue with drvdata being overwritten.
[firefly-linux-kernel-4.4.55.git] / drivers / fpga / zynq-fpga.c
index 31db5509f3d493a202dcda1fc245b2bfd276aefd..c2fb4120bd6239fc762a368ccdbbdfb339b7f2a7 100644 (file)
@@ -416,7 +416,6 @@ static int zynq_fpga_probe(struct platform_device *pdev)
        if (!priv)
                return -ENOMEM;
 
-       platform_set_drvdata(pdev, priv);
        priv->dev = dev;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -477,10 +476,12 @@ static int zynq_fpga_probe(struct platform_device *pdev)
 static int zynq_fpga_remove(struct platform_device *pdev)
 {
        struct zynq_fpga_priv *priv;
+       struct fpga_manager *mgr;
 
-       fpga_mgr_unregister(&pdev->dev);
+       mgr = platform_get_drvdata(pdev);
+       priv = mgr->priv;
 
-       priv = platform_get_drvdata(pdev);
+       fpga_mgr_unregister(&pdev->dev);
 
        clk_unprepare(priv->clk);