diff mbox series

[next] i2c: qcom-cci: Fix error checking in cci_probe()

Message ID 20230823194202.2280957-1-harshit.m.mogalapalli@oracle.com (mailing list archive)
State Not Applicable
Headers show
Series [next] i2c: qcom-cci: Fix error checking in cci_probe() | expand

Commit Message

Harshit Mogalapalli Aug. 23, 2023, 7:42 p.m. UTC
devm_clk_bulk_get_all() can return zero when no clocks are obtained.
Passing zero to dev_err_probe() is a success which is incorrect.

Fixes: 605efbf43813 ("i2c: qcom-cci: Use dev_err_probe in probe function")
Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
---
Only compile tested, found by static analysis with smatch.

https://lore.kernel.org/all/CAA8EJprTOjbOy7N5+8NiJaNNhK+_btdUUFcpHKPkMuCZj5umMA@mail.gmail.com/
^^ I reported initially here, Dmitry suggested we need to fix it in a
different patch.

the Fixes commit used above pointed this bug, but the real fixes tag is this:
Fixes: e517526195de ("i2c: Add Qualcomm CCI I2C driver")
---
 drivers/i2c/busses/i2c-qcom-cci.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Bryan O'Donoghue Aug. 24, 2023, 9:10 a.m. UTC | #1
On 23/08/2023 20:42, Harshit Mogalapalli wrote:
> devm_clk_bulk_get_all() can return zero when no clocks are obtained.
> Passing zero to dev_err_probe() is a success which is incorrect.
> 
> Fixes: 605efbf43813 ("i2c: qcom-cci: Use dev_err_probe in probe function")
> Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
> ---
> Only compile tested, found by static analysis with smatch.
> 
> https://lore.kernel.org/all/CAA8EJprTOjbOy7N5+8NiJaNNhK+_btdUUFcpHKPkMuCZj5umMA@mail.gmail.com/
> ^^ I reported initially here, Dmitry suggested we need to fix it in a
> different patch.
> 
> the Fixes commit used above pointed this bug, but the real fixes tag is this:
> Fixes: e517526195de ("i2c: Add Qualcomm CCI I2C driver")
> ---
>   drivers/i2c/busses/i2c-qcom-cci.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/busses/i2c-qcom-cci.c b/drivers/i2c/busses/i2c-qcom-cci.c
> index cf13abec05f1..414882c57d7f 100644
> --- a/drivers/i2c/busses/i2c-qcom-cci.c
> +++ b/drivers/i2c/busses/i2c-qcom-cci.c
> @@ -588,8 +588,10 @@ static int cci_probe(struct platform_device *pdev)
>   	/* Clocks */
>   
>   	ret = devm_clk_bulk_get_all(dev, &cci->clocks);
> -	if (ret < 1)
> +	if (ret < 0)
>   		return dev_err_probe(dev, ret, "failed to get clocks\n");
> +	else if (!ret)
> +		return dev_err_probe(dev, -EINVAL, "not enough clocks in DT\n");
>   	cci->nclocks = ret;
>   
>   	/* Retrieve CCI clock rate */
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Andi Shyti Aug. 24, 2023, 4:11 p.m. UTC | #2
Hi Harshit,

On Wed, Aug 23, 2023 at 12:42:02PM -0700, Harshit Mogalapalli wrote:
> devm_clk_bulk_get_all() can return zero when no clocks are obtained.
> Passing zero to dev_err_probe() is a success which is incorrect.
> 
> Fixes: 605efbf43813 ("i2c: qcom-cci: Use dev_err_probe in probe function")
> Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>

Reviewed-by: Andi Shyti <andi.shyti@kernel.org> 

Andi
Wolfram Sang Aug. 25, 2023, 8:07 p.m. UTC | #3
On Wed, Aug 23, 2023 at 12:42:02PM -0700, Harshit Mogalapalli wrote:
> devm_clk_bulk_get_all() can return zero when no clocks are obtained.
> Passing zero to dev_err_probe() is a success which is incorrect.
> 
> Fixes: 605efbf43813 ("i2c: qcom-cci: Use dev_err_probe in probe function")
> Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>

Applied to for-next, thanks!
Dan Carpenter Sept. 5, 2023, 9:10 a.m. UTC | #4
On Wed, Aug 23, 2023 at 12:42:02PM -0700, Harshit Mogalapalli wrote:
> devm_clk_bulk_get_all() can return zero when no clocks are obtained.
> Passing zero to dev_err_probe() is a success which is incorrect.
> 
> Fixes: 605efbf43813 ("i2c: qcom-cci: Use dev_err_probe in probe function")
> Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
> ---
> Only compile tested, found by static analysis with smatch.
> 
> https://lore.kernel.org/all/CAA8EJprTOjbOy7N5+8NiJaNNhK+_btdUUFcpHKPkMuCZj5umMA@mail.gmail.com/
> ^^ I reported initially here, Dmitry suggested we need to fix it in a
> different patch.
> 
> the Fixes commit used above pointed this bug, but the real fixes tag is this:
> Fixes: e517526195de ("i2c: Add Qualcomm CCI I2C driver")

This has already been applied but, for future reference, you should have
gone with the real fixes tag instead of where the static checker started
complaining.

regards,
dan carpenter
Harshit Mogalapalli Sept. 5, 2023, 9:24 a.m. UTC | #5
Hi,

On 05/09/23 2:40 pm, Dan Carpenter wrote:
> On Wed, Aug 23, 2023 at 12:42:02PM -0700, Harshit Mogalapalli wrote:
>> devm_clk_bulk_get_all() can return zero when no clocks are obtained.
>> Passing zero to dev_err_probe() is a success which is incorrect.
>>
>> Fixes: 605efbf43813 ("i2c: qcom-cci: Use dev_err_probe in probe function")
>> Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
>> ---
>> Only compile tested, found by static analysis with smatch.
>>
>> https://lore.kernel.org/all/CAA8EJprTOjbOy7N5+8NiJaNNhK+_btdUUFcpHKPkMuCZj5umMA@mail.gmail.com/
>> ^^ I reported initially here, Dmitry suggested we need to fix it in a
>> different patch.
>>
>> the Fixes commit used above pointed this bug, but the real fixes tag is this:
>> Fixes: e517526195de ("i2c: Add Qualcomm CCI I2C driver")
> 
> This has already been applied but, for future reference, you should have
> gone with the real fixes tag instead of where the static checker started
> complaining.
> 

Thank you for sharing this.
Will use the real fixes from next time.

Regards,
Harshit

> regards,
> dan carpenter
>
Andi Shyti Sept. 5, 2023, 10:25 a.m. UTC | #6
Hi Dan,

On Tue, Sep 05, 2023 at 12:10:31PM +0300, Dan Carpenter wrote:
> On Wed, Aug 23, 2023 at 12:42:02PM -0700, Harshit Mogalapalli wrote:
> > devm_clk_bulk_get_all() can return zero when no clocks are obtained.
> > Passing zero to dev_err_probe() is a success which is incorrect.
> > 
> > Fixes: 605efbf43813 ("i2c: qcom-cci: Use dev_err_probe in probe function")
> > Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
> > ---
> > Only compile tested, found by static analysis with smatch.
> > 
> > https://lore.kernel.org/all/CAA8EJprTOjbOy7N5+8NiJaNNhK+_btdUUFcpHKPkMuCZj5umMA@mail.gmail.com/
> > ^^ I reported initially here, Dmitry suggested we need to fix it in a
> > different patch.
> > 
> > the Fixes commit used above pointed this bug, but the real fixes tag is this:
> > Fixes: e517526195de ("i2c: Add Qualcomm CCI I2C driver")
> 
> This has already been applied but, for future reference, you should have
> gone with the real fixes tag instead of where the static checker started
> complaining.

yeah... sorry... I normally check all the "Fixes:" tags, but
sometimes, out of sheer laziness, I trust the commit.

Andi
diff mbox series

Patch

diff --git a/drivers/i2c/busses/i2c-qcom-cci.c b/drivers/i2c/busses/i2c-qcom-cci.c
index cf13abec05f1..414882c57d7f 100644
--- a/drivers/i2c/busses/i2c-qcom-cci.c
+++ b/drivers/i2c/busses/i2c-qcom-cci.c
@@ -588,8 +588,10 @@  static int cci_probe(struct platform_device *pdev)
 	/* Clocks */
 
 	ret = devm_clk_bulk_get_all(dev, &cci->clocks);
-	if (ret < 1)
+	if (ret < 0)
 		return dev_err_probe(dev, ret, "failed to get clocks\n");
+	else if (!ret)
+		return dev_err_probe(dev, -EINVAL, "not enough clocks in DT\n");
 	cci->nclocks = ret;
 
 	/* Retrieve CCI clock rate */