On 03/11/2020 02:52, Vidya Sagar wrote: > > > On 11/2/2020 8:00 PM, Zhang Qilong wrote: >> External email: Use caution opening links or attachments >> >> >> pm_runtime_get_sync will increment pm usage counter even it >> failed. Forgetting to pm_runtime_put_noidle will result in >> reference leak in pex_ep_event_pex_rst_deassert, so we should >> fix it. >> >> Fixes: c57247f940e8e ("PCI: tegra: Add support for PCIe endpoint mode >> in Tegra194") >> Signed-off-by: Zhang Qilong <zhangqilong3@xxxxxxxxxx> >> --- >> drivers/pci/controller/dwc/pcie-tegra194.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c >> b/drivers/pci/controller/dwc/pcie-tegra194.c >> index f920e7efe118..936510b5c649 100644 >> --- a/drivers/pci/controller/dwc/pcie-tegra194.c >> +++ b/drivers/pci/controller/dwc/pcie-tegra194.c >> @@ -1662,6 +1662,7 @@ static void pex_ep_event_pex_rst_deassert(struct >> tegra_pcie_dw *pcie) >> >> ret = pm_runtime_get_sync(dev); >> if (ret < 0) { >> + pm_runtime_put_noidle(dev); > Why can't we call pm_runtime_put_sync(dev) as that is what is being > called in failure cases anyway further down in this API? Simply because this is a failure case where the get_sync did not complete. So this change is correct, however, now we have pm_runtime_resume_and_get(), it is better/simpler just to replace the pm_runtime_get_sync with pm_runtime_resume_and_get. Cheers Jon -- nvpublic