2021-05-07 14:26:50

by Jiapeng Chong

[permalink] [raw]
Subject: [PATCH] powerpc/xive: Fix unsigned comparison with less than zero

The return from the call to irq_domain_alloc_irqs() is int, it can be
a negative error code, however this is being assigned to an unsigned
int variable 'irq', this may lead to invalid if statement detection,
so that kfree execution is invalid. So making 'irq' an int.

Clean up the following coccicheck warning:

./arch/powerpc/sysdev/xive/common.c:1157:6-14: WARNING: Unsigned
expression compared with zero: xid -> irq < 0.

Reported-by: Abaci Robot <[email protected]>
Signed-off-by: Jiapeng Chong <[email protected]>
---
arch/powerpc/sysdev/xive/common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/sysdev/xive/common.c b/arch/powerpc/sysdev/xive/common.c
index a830432..a5fd45a 100644
--- a/arch/powerpc/sysdev/xive/common.c
+++ b/arch/powerpc/sysdev/xive/common.c
@@ -65,7 +65,7 @@
#ifdef CONFIG_SMP
/* The IPIs use the same logical irq number when on the same chip */
static struct xive_ipi_desc {
- unsigned int irq;
+ int irq;
char name[16];
} *xive_ipis;

--
1.8.3.1


2022-03-17 05:14:32

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH] powerpc/xive: Fix unsigned comparison with less than zero



Le 07/05/2021 à 12:20, Jiapeng Chong a écrit :
> The return from the call to irq_domain_alloc_irqs() is int, it can be
> a negative error code, however this is being assigned to an unsigned
> int variable 'irq', this may lead to invalid if statement detection,
> so that kfree execution is invalid. So making 'irq' an int.
>
> Clean up the following coccicheck warning:
>
> ./arch/powerpc/sysdev/xive/common.c:1157:6-14: WARNING: Unsigned
> expression compared with zero: xid -> irq < 0.
>
> Reported-by: Abaci Robot <[email protected]>
> Signed-off-by: Jiapeng Chong <[email protected]>

This was fixed by
https://github.com/linuxppc/linux/commit/3f601608b71c3ca1e199898cd16f09d707fedb56

> ---
> arch/powerpc/sysdev/xive/common.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/sysdev/xive/common.c b/arch/powerpc/sysdev/xive/common.c
> index a830432..a5fd45a 100644
> --- a/arch/powerpc/sysdev/xive/common.c
> +++ b/arch/powerpc/sysdev/xive/common.c
> @@ -65,7 +65,7 @@
> #ifdef CONFIG_SMP
> /* The IPIs use the same logical irq number when on the same chip */
> static struct xive_ipi_desc {
> - unsigned int irq;
> + int irq;
> char name[16];
> } *xive_ipis;
>