Messages in this thread | | | From | Alan Tull <> | Date | Tue, 11 Apr 2017 09:53:38 -0500 | Subject | Re: [PATCH] fpga altera-hps2fpga: disable/unprepare clock on error in alt_fpga_bridge_probe() |
| |
On Tue, Apr 11, 2017 at 4:22 AM, Tobias Klauser <tklauser@distanz.ch> wrote:
Hi Tobias,
Thanks!
> If either _alt_hps2fpga_enable_set() or fpga_bridge_register() fail in > alt_fpga_bridge_probe(), the clock remains enabled and prepared. Also, > in the error path for _alt_hps2fpga_enable_set() a call to > fpga_bridge_unregister() is made even though the bridge was not > registered yet. > > Remove the unnecessary call to fpga_bridge_unregister() and call > clk_disable_unprepare() in both error paths in order to make sure the > clock gets properly disabled and unprepared. > > Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Alan Tull <atull@kernel.org>
> --- > drivers/fpga/altera-hps2fpga.c | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/drivers/fpga/altera-hps2fpga.c b/drivers/fpga/altera-hps2fpga.c > index 4b354c79be31..3066b805f2d0 100644 > --- a/drivers/fpga/altera-hps2fpga.c > +++ b/drivers/fpga/altera-hps2fpga.c > @@ -181,15 +181,18 @@ static int alt_fpga_bridge_probe(struct platform_device *pdev) > (enable ? "enabling" : "disabling")); > > ret = _alt_hps2fpga_enable_set(priv, enable); > - if (ret) { > - fpga_bridge_unregister(&pdev->dev); > - return ret; > - } > + if (ret) > + goto err; > } > } > > - return fpga_bridge_register(dev, priv->name, &altera_hps2fpga_br_ops, > - priv); > + ret = fpga_bridge_register(dev, priv->name, &altera_hps2fpga_br_ops, > + priv); > +err: > + if (ret) > + clk_disable_unprepare(priv->clk); > + > + return ret; > } > > static int alt_fpga_bridge_remove(struct platform_device *pdev) > -- > 2.12.2 > >
| |