Message ID | 20200520085837.1399-1-dinghao.liu@zju.edu.cn (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Lorenzo Pieralisi |
Headers | show |
Series | PCI: qcom: fix runtime pm imbalance on error | expand |
On Wed, May 20, 2020 at 04:58:37PM +0800, Dinghao Liu wrote: > pm_runtime_get_sync() increments the runtime PM usage counter even > it returns an error code. Thus a pairing decrement is needed on > the error handling path to keep the counter balanced. > > Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> > --- > drivers/pci/controller/dwc/pcie-qcom.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c > index 138e1a2d21cc..35686930df1d 100644 > --- a/drivers/pci/controller/dwc/pcie-qcom.c > +++ b/drivers/pci/controller/dwc/pcie-qcom.c > @@ -1340,8 +1340,7 @@ static int qcom_pcie_probe(struct platform_device *pdev) > pm_runtime_enable(dev); > ret = pm_runtime_get_sync(dev); > if (ret < 0) { > - pm_runtime_disable(dev); > - return ret; > + goto err_pm_runtime_put; I think you need to remove the brackets - this become a single line if statement. Lorenzo > } > > pci->dev = dev; > -- > 2.17.1 >
> > pm_runtime_get_sync() increments the runtime PM usage counter even > > it returns an error code. Thus a pairing decrement is needed on > > the error handling path to keep the counter balanced. > > > > Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> > > --- > > drivers/pci/controller/dwc/pcie-qcom.c | 3 +-- > > 1 file changed, 1 insertion(+), 2 deletions(-) > > > > diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c > > index 138e1a2d21cc..35686930df1d 100644 > > --- a/drivers/pci/controller/dwc/pcie-qcom.c > > +++ b/drivers/pci/controller/dwc/pcie-qcom.c > > @@ -1340,8 +1340,7 @@ static int qcom_pcie_probe(struct platform_device *pdev) > > pm_runtime_enable(dev); > > ret = pm_runtime_get_sync(dev); > > if (ret < 0) { > > - pm_runtime_disable(dev); > > - return ret; > > + goto err_pm_runtime_put; > > I think you need to remove the brackets - this become a single line > if statement. > Thank you for your advice! I will fix this in the next version of patch. Regards, Dinghao
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index 138e1a2d21cc..35686930df1d 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -1340,8 +1340,7 @@ static int qcom_pcie_probe(struct platform_device *pdev) pm_runtime_enable(dev); ret = pm_runtime_get_sync(dev); if (ret < 0) { - pm_runtime_disable(dev); - return ret; + goto err_pm_runtime_put; } pci->dev = dev;
pm_runtime_get_sync() increments the runtime PM usage counter even it returns an error code. Thus a pairing decrement is needed on the error handling path to keep the counter balanced. Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> --- drivers/pci/controller/dwc/pcie-qcom.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)