On Tue, Mar 23, 2021 at 6:18 AM Arnd Bergmann <a...@kernel.org> wrote: > > From: Arnd Bergmann <a...@arndb.de> > > When building with extra warnings enabled, clang points out a > mistake in the error handling: > > drivers/irqchip/irq-gic-v3-mbi.c:306:21: error: result of comparison of > constant 18446744073709551615 with expression of type 'phys_addr_t' (aka > 'unsigned int') is always false > [-Werror,-Wtautological-constant-out-of-range-compare]
Looks like based on CONFIG_PHYS_ADDR_T_64BIT, phys_addr_t can be u64 or u32, but of_translate_address always returns a u64. This is fine for the current value of OF_BAD_ADDR, but I think there's a risk of losing the top 32b of the return value of of_translate_address() here? > if (mbi_phys_base == OF_BAD_ADDR) { > > Truncate the constant to the same type as the variable it gets compared > to, to shut make the check work and void the warning. > > Fixes: 505287525c24 ("irqchip/gic-v3: Add support for Message Based > Interrupts as an MSI controller") > Signed-off-by: Arnd Bergmann <a...@arndb.de> > --- > drivers/irqchip/irq-gic-v3-mbi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/irqchip/irq-gic-v3-mbi.c > b/drivers/irqchip/irq-gic-v3-mbi.c > index 563a9b366294..e81e89a81cb5 100644 > --- a/drivers/irqchip/irq-gic-v3-mbi.c > +++ b/drivers/irqchip/irq-gic-v3-mbi.c > @@ -303,7 +303,7 @@ int __init mbi_init(struct fwnode_handle *fwnode, struct > irq_domain *parent) > reg = of_get_property(np, "mbi-alias", NULL); > if (reg) { > mbi_phys_base = of_translate_address(np, reg); > - if (mbi_phys_base == OF_BAD_ADDR) { > + if (mbi_phys_base == (phys_addr_t)OF_BAD_ADDR) { > ret = -ENXIO; > goto err_free_mbi; > } > -- > 2.29.2 > -- Thanks, ~Nick Desaulniers