The return from the call to ida_alloc() is int, it can be a negative
error code, however this is being assigned to an unsigned int variable
'mhi_cntrl->index', so assign the value to 'ret' concurrently to solve
this problem without affecting other functions.
Eliminate the following coccicheck warning:
./drivers/bus/mhi/ep/main.c:1422:5-21: WARNING: Unsigned expression
compared with zero: mhi_cntrl -> index < 0
Reported-by: Abaci Robot <[email protected]>
Signed-off-by: Yang Li <[email protected]>
---
drivers/bus/mhi/ep/main.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/bus/mhi/ep/main.c b/drivers/bus/mhi/ep/main.c
index 3e98107f08c4..b27e90d97029 100644
--- a/drivers/bus/mhi/ep/main.c
+++ b/drivers/bus/mhi/ep/main.c
@@ -1418,11 +1418,9 @@ int mhi_ep_register_controller(struct mhi_ep_cntrl *mhi_cntrl,
mhi_ep_mmio_set_env(mhi_cntrl, MHI_EE_AMSS);
/* Set controller index */
- mhi_cntrl->index = ida_alloc(&mhi_ep_cntrl_ida, GFP_KERNEL);
- if (mhi_cntrl->index < 0) {
- ret = mhi_cntrl->index;
+ mhi_cntrl->index = ret = ida_alloc(&mhi_ep_cntrl_ida, GFP_KERNEL);
+ if (ret < 0)
goto err_destroy_wq;
- }
irq_set_status_flags(mhi_cntrl->irq, IRQ_NOAUTOEN);
ret = request_irq(mhi_cntrl->irq, mhi_ep_irq, IRQF_TRIGGER_HIGH,
--
2.20.1.7.g153144c
On Fri, Mar 04, 2022 at 08:11:39AM +0800, Yang Li wrote:
> The return from the call to ida_alloc() is int, it can be a negative
> error code, however this is being assigned to an unsigned int variable
> 'mhi_cntrl->index', so assign the value to 'ret' concurrently to solve
> this problem without affecting other functions.
>
> Eliminate the following coccicheck warning:
> ./drivers/bus/mhi/ep/main.c:1422:5-21: WARNING: Unsigned expression
> compared with zero: mhi_cntrl -> index < 0
>
> Reported-by: Abaci Robot <[email protected]>
> Signed-off-by: Yang Li <[email protected]>
Thanks for the fix. Since the MHI EP series is under development, I've
squashed this patch with the original patch that added the offending code.
I'll make a note about this in changelog.
> ---
> drivers/bus/mhi/ep/main.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/bus/mhi/ep/main.c b/drivers/bus/mhi/ep/main.c
> index 3e98107f08c4..b27e90d97029 100644
> --- a/drivers/bus/mhi/ep/main.c
> +++ b/drivers/bus/mhi/ep/main.c
> @@ -1418,11 +1418,9 @@ int mhi_ep_register_controller(struct mhi_ep_cntrl *mhi_cntrl,
> mhi_ep_mmio_set_env(mhi_cntrl, MHI_EE_AMSS);
>
> /* Set controller index */
> - mhi_cntrl->index = ida_alloc(&mhi_ep_cntrl_ida, GFP_KERNEL);
> - if (mhi_cntrl->index < 0) {
> - ret = mhi_cntrl->index;
> + mhi_cntrl->index = ret = ida_alloc(&mhi_ep_cntrl_ida, GFP_KERNEL);
> + if (ret < 0)
> goto err_destroy_wq;
> - }
I've just used "ret" for catching the ida_alloc() and assigned it to
index after success.
Thanks,
Mani
>
> irq_set_status_flags(mhi_cntrl->irq, IRQ_NOAUTOEN);
> ret = request_irq(mhi_cntrl->irq, mhi_ep_irq, IRQF_TRIGGER_HIGH,
> --
> 2.20.1.7.g153144c
>