On Wed, 3 Nov 2021, 02:57 Stephen Hemminger, wrote: > 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") > Signed-off-by: Stephen Hemminger > --- > 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 82e89b7c8af7..f3d46bafd265 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.30.2 > Acked-by: Somnath Kotur > >