net: liquidio: fix overflow in octeon_init_instr_queue()
authorAlexey Nepomnyashih <sdl@nppct.ru>
Wed, 17 Sep 2025 15:30:58 +0000 (15:30 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 18 Sep 2025 14:47:17 +0000 (07:47 -0700)
The expression `(conf->instr_type == 64) << iq_no` can overflow because
`iq_no` may be as high as 64 (`CN23XX_MAX_RINGS_PER_PF`). Casting the
operand to `u64` ensures correct 64-bit arithmetic.

Fixes: f21fb3ed364b ("Add support of Cavium Liquidio ethernet adapters")
Signed-off-by: Alexey Nepomnyashih <sdl@nppct.ru>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cavium/liquidio/request_manager.c

index de8a6ce86ad7e2ba399d62064d5d9549b85afa76..12105ffb5dac6dfb5579fa54c5c0f53c2eea4859 100644 (file)
@@ -126,7 +126,7 @@ int octeon_init_instr_queue(struct octeon_device *oct,
        oct->io_qmask.iq |= BIT_ULL(iq_no);
 
        /* Set the 32B/64B mode for each input queue */
-       oct->io_qmask.iq64B |= ((conf->instr_type == 64) << iq_no);
+       oct->io_qmask.iq64B |= ((u64)(conf->instr_type == 64) << iq_no);
        iq->iqcmd_64B = (conf->instr_type == 64);
 
        oct->fn_list.setup_iq_regs(oct, iq_no);