On Mon, May 8, 2023 at 6:41 AM Junyan Ye <yejunyan@xxxxxxxxxxx> wrote: > Smatch reported: > 1. drivers/pci/controller/pci-ftpci100.c:526 faraday_pci_probe() warn: > 'clk' from clk_prepare_enable() not released on lines: 442,451,462,478,512,517. > 2. drivers/pci/controller/pci-ftpci100.c:526 faraday_pci_probe() warn: > 'p->bus_clk' from clk_prepare_enable() not released on lines: 451,462,478,512,517. > > The clock resource is obtained by devm_clk_get(), and then > clk_prepare_enable() makes the clock resource ready for use. After that, > clk_disable_unprepare() should be called to release the clock resource > when it is no longer needed. However, while doing some error handling > in faraday_pci_probe(), clk_disable_unprepare() is not called to release > clk and p->bus_clk before returning. These return lines are exactly 442, > 451, 462, 478, 512, 517. > > Fix this warning by replacing devm_clk_get() with devm_clk_get_enabled(), > which is equivalent to devm_clk_get() + clk_prepare_enable(). And with > devm_clk_get_enabled(), the clock will automatically be disabled, > unprepared and freed when the device is unbound from the bus. > > Fixes: b3c433efb8a3 ("PCI: faraday: Fix wrong pointer passed to PTR_ERR()") > Fixes: 2eeb02b28579 ("PCI: faraday: Add clock handling") > Fixes: 783a862563f7 ("PCI: faraday: Use pci_parse_request_of_pci_ranges()") > Fixes: d3c68e0a7e34 ("PCI: faraday: Add Faraday Technology FTPCI100 PCI Host Bridge driver") > Fixes: f1e8bd21e39e ("PCI: faraday: Convert IRQ masking to raw PCI config accessors") > Reviewed-by: Dongliang Mu <dzm91@xxxxxxxxxxx> > Signed-off-by: Junyan Ye <yejunyan@xxxxxxxxxxx> > --- > v2 -> v3: Rebase to v6.4-rc1 and modify commit message. Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> It's a fine fix since it saves lots of code. I would merge it as a non-urgent fix. Yours, Linus Walleij