Hi Jisheng, On sam., sept. 30 2017, Jisheng Zhang <Jisheng.Zhang@xxxxxxxxxxxxx> wrote: > Hi Thomas, > > On Sat, 30 Sep 2017 08:07:10 +0200 Thomas Petazzoni wrote: > >> Hello, >> >> On Sat, 30 Sep 2017 10:41:09 +0800, Jisheng Zhang wrote: >> >> > > + priv->axi_clk = devm_clk_get(&pdev->dev, "axi"); >> > > + if (IS_ERR(priv->axi_clk)) { >> > > + err = PTR_ERR(priv->axi_clk); >> > > + if (err == -EPROBE_DEFER) >> > > + goto err_clk; >> > > + priv->axi_clk = NULL; >> > >> > IMHO, this assignment could be removed. What do you think? >> >> No, because if the clock is not present in the Device Tree, >> priv->axi_clk will contain an error code encoded as a pointer, so >> priv->axi_clk will not be NULL. Hence the rest of the code that will > > FWICT, the clk_disable_unprepare() could also check whether the clk > is err, am I wrong? You're right, I've jsut checked it. So I will remove it to have a smaller fix. Thanks, Gregory > >> operate on this clock will believe there is a valid clock pointed by >> priv->axi_clk. So we really want to reset it to NULL when there was an >> error getting the clock. >> >> Best regards, >> >> Thomas > -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com