Hello Sascha, On 10.01.23 15:41, Sascha Hauer wrote: > On Mon, Jan 09, 2023 at 05:00:57PM +0100, Ahmad Fatoum wrote: >> We evaluate timeout_us for truthiness to determine whether we are >> entering an infinite poll loop. When timeout_us contains a >> multiplication, GCC will warn about it and suggest replacing the * >> with &&. Silence this warning by comparing directly against 0. >> >> Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> >> --- >> include/linux/iopoll.h | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/include/linux/iopoll.h b/include/linux/iopoll.h >> index 8bf912e173b3..b8c55583f97f 100644 >> --- a/include/linux/iopoll.h >> +++ b/include/linux/iopoll.h >> @@ -32,13 +32,13 @@ >> #define read_poll_timeout(op, val, cond, timeout_us, args...) \ >> ({ \ >> uint64_t start; \ >> - if (!IN_PBL && timeout_us) \ >> + if (!IN_PBL && timeout_us != 0) \ > > You should rather put timeout_us in brackets. Doesn't help: drivers/mtd/nand/atmel/nand-controller.c:279:51: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context] 279 | timeout_ms * 1000); include/linux/iopoll.h:35:25: note: in definition of macro 'read_poll_timeout' 35 | if (!IN_PBL && (timeout_us)) \ | ^~~~~~~~~~ Ok to apply? Cheers, Ahmad > > Sascha > >> start = get_time_ns(); \ >> for (;;) { \ >> (val) = op(args); \ >> if (cond) \ >> break; \ >> - if (!IN_PBL && timeout_us && \ >> + if (!IN_PBL && timeout_us != 0 && \ >> is_timeout(start, ((timeout_us) * USECOND))) { \ >> (val) = op(args); \ >> break; \ >> -- >> 2.30.2 >> >> >> > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |