From 211262d925268a3f5ac1c6a5a6610762b5ca5f5a Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 2 Nov 2021 14:27:44 -0700 Subject: [PATCH] net/bnxt: fix firmware version query UBSan testing revealed undefined shift here. The firmware returns the version in bytes; and shifting a 8 bit quantity here can lead to undefined behaviour or truncation. The fix is to promote the bytes to 32 bit before shifting. Bugzilla ID: 838 Fixes: 9a891c1764ea ("net/bnxt: update HWRM to version 1.9.2") Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger Acked-by: Somnath Kotur Acked-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_hwrm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 55dcb1dd6a..3fefd558d8 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -1260,9 +1260,9 @@ int bnxt_hwrm_ver_get(struct bnxt *bp, uint32_t timeout) resp->hwrm_intf_upd_8b, resp->hwrm_fw_maj_8b, resp->hwrm_fw_min_8b, resp->hwrm_fw_bld_8b, resp->hwrm_fw_rsvd_8b); - bp->fw_ver = (resp->hwrm_fw_maj_8b << 24) | - (resp->hwrm_fw_min_8b << 16) | - (resp->hwrm_fw_bld_8b << 8) | + bp->fw_ver = ((uint32_t)resp->hwrm_fw_maj_8b << 24) | + ((uint32_t)resp->hwrm_fw_min_8b << 16) | + ((uint32_t)resp->hwrm_fw_bld_8b << 8) | resp->hwrm_fw_rsvd_8b; PMD_DRV_LOG(INFO, "Driver HWRM version: %d.%d.%d\n", HWRM_VERSION_MAJOR, HWRM_VERSION_MINOR, HWRM_VERSION_UPDATE); -- 2.39.5