Hi Dinghao, Thanks for the patch! On 5/24/20 8:29 AM, Dinghao Liu wrote: > pm_runtime_get_sync() increments the runtime PM usage counter even > when it returns an error code. Thus a pairing decrement is needed on > the error handling path to keep the counter balanced. For other error > paths after this call, things are the same. > > Signed-off-by: Dinghao Liu <dinghao.liu@xxxxxxxxxx> > --- > drivers/media/platform/qcom/venus/core.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c > index 194b10b98767..37db3b594dca 100644 > --- a/drivers/media/platform/qcom/venus/core.c > +++ b/drivers/media/platform/qcom/venus/core.c > @@ -289,18 +289,24 @@ static int venus_probe(struct platform_device *pdev) > goto err_core_deinit; > > ret = pm_runtime_put_sync(dev); > - if (ret) > - goto err_dev_unregister; > + if (ret) { > + v4l2_device_unregister(&core->v4l2_dev); > + hfi_core_deinit(core, false); > + venus_shutdown(core); > + pm_runtime_set_suspended(dev); > + pm_runtime_disable(dev); > + hfi_destroy(core); > + return ret; Could you just reorder error labels below instead of releasing everything here? > + } > > return 0; > > -err_dev_unregister: > - v4l2_device_unregister(&core->v4l2_dev); > err_core_deinit: > hfi_core_deinit(core, false); > err_venus_shutdown: > venus_shutdown(core); > err_runtime_disable: > + pm_runtime_put_noidle(dev); > pm_runtime_set_suspended(dev); > pm_runtime_disable(dev); > hfi_destroy(core); > -- regards, Stan