[dpdk-dev] [PATCH] net/bnxt: fix undefined shift in vers_get

Ajit Khaparde ajit.khaparde at broadcom.com
Wed Nov 3 05:13:20 CET 2021


On Tue, Nov 2, 2021 at 7:18 PM Somnath Kotur <somnath.kotur at broadcom.com> wrote:
>
>
>
> On Wed, 3 Nov 2021, 02:57 Stephen Hemminger, <stephen at networkplumber.org> 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 <stephen at networkplumber.org>
>> ---
>>  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 <somnath.kotur at broadcom.com>
Acked-by: Ajit Khaparde <ajit.khaparde at broadcom.com>

Patch applied to dpdk-next-net-brcm. Thanks

>>
>>


More information about the dev mailing list