Message ID | 20210510031606.3112-2-thunder.leizhen@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/msm/dpu: Fix error return code in dpu_mdss_init() | expand |
On 10/05/2021 06:16, Zhen Lei wrote: > The error code returned by platform_get_irq() is stored in 'irq', it's > forgotten to be copied to 'ret' before being returned. As a result, the > value 0 of 'ret' is returned incorrectly. > > After the above fix is completed, initializing the local variable 'ret' > to 0 is no longer needed, remove it. > > In addition, when dpu_mdss_init() is successfully returned, the value of > 'ret' is always 0. Therefore, replace "return ret" with "return 0" to make > the code clearer. > > Fixes: 070e64dc1bbc ("drm/msm/dpu: Convert to a chained irq chip") > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c > index 06b56fec04e047a..6b0a7bc87eb75b8 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c > @@ -225,7 +225,7 @@ int dpu_mdss_init(struct drm_device *dev) > struct msm_drm_private *priv = dev->dev_private; > struct dpu_mdss *dpu_mdss; > struct dss_module_power *mp; > - int ret = 0; > + int ret; > int irq; > > dpu_mdss = devm_kzalloc(dev->dev, sizeof(*dpu_mdss), GFP_KERNEL); > @@ -253,8 +253,10 @@ int dpu_mdss_init(struct drm_device *dev) > goto irq_domain_error; > > irq = platform_get_irq(pdev, 0); > - if (irq < 0) > + if (irq < 0) { > + ret = irq; > goto irq_error; > + } > > irq_set_chained_handler_and_data(irq, dpu_mdss_irq, > dpu_mdss); > @@ -263,7 +265,7 @@ int dpu_mdss_init(struct drm_device *dev) > > pm_runtime_enable(dev->dev); > > - return ret; > + return 0; > > irq_error: > _dpu_mdss_irq_domain_fini(dpu_mdss); >
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c index 06b56fec04e047a..6b0a7bc87eb75b8 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c @@ -225,7 +225,7 @@ int dpu_mdss_init(struct drm_device *dev) struct msm_drm_private *priv = dev->dev_private; struct dpu_mdss *dpu_mdss; struct dss_module_power *mp; - int ret = 0; + int ret; int irq; dpu_mdss = devm_kzalloc(dev->dev, sizeof(*dpu_mdss), GFP_KERNEL); @@ -253,8 +253,10 @@ int dpu_mdss_init(struct drm_device *dev) goto irq_domain_error; irq = platform_get_irq(pdev, 0); - if (irq < 0) + if (irq < 0) { + ret = irq; goto irq_error; + } irq_set_chained_handler_and_data(irq, dpu_mdss_irq, dpu_mdss); @@ -263,7 +265,7 @@ int dpu_mdss_init(struct drm_device *dev) pm_runtime_enable(dev->dev); - return ret; + return 0; irq_error: _dpu_mdss_irq_domain_fini(dpu_mdss);
The error code returned by platform_get_irq() is stored in 'irq', it's forgotten to be copied to 'ret' before being returned. As a result, the value 0 of 'ret' is returned incorrectly. After the above fix is completed, initializing the local variable 'ret' to 0 is no longer needed, remove it. In addition, when dpu_mdss_init() is successfully returned, the value of 'ret' is always 0. Therefore, replace "return ret" with "return 0" to make the code clearer. Fixes: 070e64dc1bbc ("drm/msm/dpu: Convert to a chained irq chip") Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> --- drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)