Message ID | 20230418135612.598-1-d202180596@hust.edu.cn |
---|---|
State | Superseded |
Headers | show |
Series | i2c: qup: Add missing unwind goto in qup_i2c_probe() | expand |
> -----原始邮件----- > 发件人: "Shuai Jiang" <d202180596@hust.edu.cn> > 发送时间: 2023-04-18 21:56:12 (星期二) > 收件人: "Andy Gross" <agross@kernel.org>, "Bjorn Andersson" <andersson@kernel.org>, "Konrad Dybcio" <konrad.dybcio@linaro.org>, "Wolfram Sang" <wsa@kernel.org>, "Ivan T. Ivanov" <iivanov@mm-sol.com>, "Sricharan R" <sricharan@codeaurora.org>, "Naveen Kaje" <nkaje@codeaurora.org>, "Austin Christ" <austinwc@codeaurora.org> > 抄送: hust-os-kernel-patches@googlegroups.com, "Shuai Jiang" <d202180596@hust.edu.cn>, "Andy Gross" <agross@codeaurora.org>, linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org > 主题: [PATCH] i2c: qup: Add missing unwind goto in qup_i2c_probe() > > Smatch Warns: > drivers/i2c/busses/i2c-qup.c:1784 qup_i2c_probe() > warn: missing unwind goto? > > The goto label "fail_runtime" and "fail" will disable qup->pclk, > but here qup->pclk failed to obtain, in order to be consistent, > change the direct return to goto label "fail_dma". > > Fixes: 10c5a8425968 ("i2c: qup: New bus driver for the Qualcomm QUP I2C controller") > Fixes: 515da746983b ("i2c: qup: add ACPI support") > Signed-off-by: Shuai Jiang <d202180596@hust.edu.cn> > Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn> > --- > The issue is found by static analysis and remains untested. > --- > drivers/i2c/busses/i2c-qup.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c > index 2e153f2f71b6..78682388e02e 100644 > --- a/drivers/i2c/busses/i2c-qup.c > +++ b/drivers/i2c/busses/i2c-qup.c > @@ -1752,16 +1752,21 @@ static int qup_i2c_probe(struct platform_device *pdev) > if (!clk_freq || clk_freq > I2C_MAX_FAST_MODE_PLUS_FREQ) { > dev_err(qup->dev, "clock frequency not supported %d\n", > clk_freq); > - return -EINVAL; > + ret = -EINVAL; > + goto fail_dma; > } > > qup->base = devm_platform_ioremap_resource(pdev, 0); > - if (IS_ERR(qup->base)) > - return PTR_ERR(qup->base); > + if (IS_ERR(qup->base)) { > + ret = PTR_ERR(qup->base); > + goto fail_dma; > + } > > qup->irq = platform_get_irq(pdev, 0); > - if (qup->irq < 0) > - return qup->irq; > + if (qup->irq < 0) { > + ret = qup->irq; > + goto fail_dma; > + } > > if (has_acpi_companion(qup->dev)) { > ret = device_property_read_u32(qup->dev, > @@ -1775,13 +1780,15 @@ static int qup_i2c_probe(struct platform_device *pdev) > qup->clk = devm_clk_get(qup->dev, "core"); > if (IS_ERR(qup->clk)) { > dev_err(qup->dev, "Could not get core clock\n"); > - return PTR_ERR(qup->clk); > + ret = PTR_ERR(qup->clk); > + goto fail_dma; > } > > qup->pclk = devm_clk_get(qup->dev, "iface"); > if (IS_ERR(qup->pclk)) { > dev_err(qup->dev, "Could not get iface clock\n"); > - return PTR_ERR(qup->pclk); > + ret = PTR_ERR(qup->pclk); > + goto fail_dma; > } > qup_i2c_enable_clocks(qup); > src_clk_freq = clk_get_rate(qup->clk); > -- > 2.25.1 ping?
On Fri, May 05, 2023 at 09:18:16AM +0800, d202180596@hust.edu.cn wrote: > > > -----原始邮件----- > > 发件人: "Shuai Jiang" <d202180596@hust.edu.cn> > > 发送时间: 2023-04-18 21:56:12 (星期二) ^^^^^^^^^^ You can't ping the list when the merge window is open. You have to wait for a couple weeks after. The weeks before and during the merge window are busy and then afterward maintainers have to deal with the backlog of postponed stuff... Just be patient. regards, dan carpenter
On Tue, Apr 18, 2023 at 09:56:12PM +0800, Shuai Jiang wrote: > Smatch Warns: > drivers/i2c/busses/i2c-qup.c:1784 qup_i2c_probe() > warn: missing unwind goto? > > The goto label "fail_runtime" and "fail" will disable qup->pclk, > but here qup->pclk failed to obtain, in order to be consistent, > change the direct return to goto label "fail_dma". > > Fixes: 10c5a8425968 ("i2c: qup: New bus driver for the Qualcomm QUP I2C controller") > Fixes: 515da746983b ("i2c: qup: add ACPI support") These are not the correct Fixes, the correct fix is: Fixes: 9cedf3b2f099 ("i2c: qup: Add bam dma capabilities") > Signed-off-by: Shuai Jiang <d202180596@hust.edu.cn> > Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn> and Cc: <stable@vger.kernel.org> # v4.6+ Patch looks good: Reviewed-by: Andi Shyti <andi.shyti@kernel.org> Andi > --- > The issue is found by static analysis and remains untested. > --- > drivers/i2c/busses/i2c-qup.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c > index 2e153f2f71b6..78682388e02e 100644 > --- a/drivers/i2c/busses/i2c-qup.c > +++ b/drivers/i2c/busses/i2c-qup.c > @@ -1752,16 +1752,21 @@ static int qup_i2c_probe(struct platform_device *pdev) > if (!clk_freq || clk_freq > I2C_MAX_FAST_MODE_PLUS_FREQ) { > dev_err(qup->dev, "clock frequency not supported %d\n", > clk_freq); > - return -EINVAL; > + ret = -EINVAL; > + goto fail_dma; > } > > qup->base = devm_platform_ioremap_resource(pdev, 0); > - if (IS_ERR(qup->base)) > - return PTR_ERR(qup->base); > + if (IS_ERR(qup->base)) { > + ret = PTR_ERR(qup->base); > + goto fail_dma; > + } > > qup->irq = platform_get_irq(pdev, 0); > - if (qup->irq < 0) > - return qup->irq; > + if (qup->irq < 0) { > + ret = qup->irq; > + goto fail_dma; > + } > > if (has_acpi_companion(qup->dev)) { > ret = device_property_read_u32(qup->dev, > @@ -1775,13 +1780,15 @@ static int qup_i2c_probe(struct platform_device *pdev) > qup->clk = devm_clk_get(qup->dev, "core"); > if (IS_ERR(qup->clk)) { > dev_err(qup->dev, "Could not get core clock\n"); > - return PTR_ERR(qup->clk); > + ret = PTR_ERR(qup->clk); > + goto fail_dma; > } > > qup->pclk = devm_clk_get(qup->dev, "iface"); > if (IS_ERR(qup->pclk)) { > dev_err(qup->dev, "Could not get iface clock\n"); > - return PTR_ERR(qup->pclk); > + ret = PTR_ERR(qup->pclk); > + goto fail_dma; > } > qup_i2c_enable_clocks(qup); > src_clk_freq = clk_get_rate(qup->clk); > -- > 2.25.1 >
On Tue, Apr 18, 2023 at 09:56:12PM +0800, Shuai Jiang wrote: > Smatch Warns: > drivers/i2c/busses/i2c-qup.c:1784 qup_i2c_probe() > warn: missing unwind goto? > > The goto label "fail_runtime" and "fail" will disable qup->pclk, > but here qup->pclk failed to obtain, in order to be consistent, > change the direct return to goto label "fail_dma". > > Fixes: 10c5a8425968 ("i2c: qup: New bus driver for the Qualcomm QUP I2C controller") > Fixes: 515da746983b ("i2c: qup: add ACPI support") > Signed-off-by: Shuai Jiang <d202180596@hust.edu.cn> > Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn> Applied to for-current, thanks! Thanks Andi, for the proper Fixes tag!
diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c index 2e153f2f71b6..78682388e02e 100644 --- a/drivers/i2c/busses/i2c-qup.c +++ b/drivers/i2c/busses/i2c-qup.c @@ -1752,16 +1752,21 @@ static int qup_i2c_probe(struct platform_device *pdev) if (!clk_freq || clk_freq > I2C_MAX_FAST_MODE_PLUS_FREQ) { dev_err(qup->dev, "clock frequency not supported %d\n", clk_freq); - return -EINVAL; + ret = -EINVAL; + goto fail_dma; } qup->base = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(qup->base)) - return PTR_ERR(qup->base); + if (IS_ERR(qup->base)) { + ret = PTR_ERR(qup->base); + goto fail_dma; + } qup->irq = platform_get_irq(pdev, 0); - if (qup->irq < 0) - return qup->irq; + if (qup->irq < 0) { + ret = qup->irq; + goto fail_dma; + } if (has_acpi_companion(qup->dev)) { ret = device_property_read_u32(qup->dev, @@ -1775,13 +1780,15 @@ static int qup_i2c_probe(struct platform_device *pdev) qup->clk = devm_clk_get(qup->dev, "core"); if (IS_ERR(qup->clk)) { dev_err(qup->dev, "Could not get core clock\n"); - return PTR_ERR(qup->clk); + ret = PTR_ERR(qup->clk); + goto fail_dma; } qup->pclk = devm_clk_get(qup->dev, "iface"); if (IS_ERR(qup->pclk)) { dev_err(qup->dev, "Could not get iface clock\n"); - return PTR_ERR(qup->pclk); + ret = PTR_ERR(qup->pclk); + goto fail_dma; } qup_i2c_enable_clocks(qup); src_clk_freq = clk_get_rate(qup->clk);