* [dpdk-dev] [PATCH] net/bnxt: fix undefined shift in vers_get
@ 2021-11-02 21:27 Stephen Hemminger
2021-11-03 2:18 ` Somnath Kotur
0 siblings, 1 reply; 4+ messages in thread
From: Stephen Hemminger @ 2021-11-02 21:27 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, Ajit Khaparde, Somnath Kotur
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@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
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] net/bnxt: fix undefined shift in vers_get
2021-11-02 21:27 [dpdk-dev] [PATCH] net/bnxt: fix undefined shift in vers_get Stephen Hemminger
@ 2021-11-03 2:18 ` Somnath Kotur
2021-11-03 4:13 ` Ajit Khaparde
0 siblings, 1 reply; 4+ messages in thread
From: Somnath Kotur @ 2021-11-03 2:18 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev, Ajit Khaparde
[-- Attachment #1: Type: text/plain, Size: 1632 bytes --]
On Wed, 3 Nov 2021, 02:57 Stephen Hemminger, <stephen@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@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@broadcom.com>
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] net/bnxt: fix undefined shift in vers_get
2021-11-03 2:18 ` Somnath Kotur
@ 2021-11-03 4:13 ` Ajit Khaparde
2021-11-03 4:14 ` Ajit Khaparde
0 siblings, 1 reply; 4+ messages in thread
From: Ajit Khaparde @ 2021-11-03 4:13 UTC (permalink / raw)
To: Somnath Kotur; +Cc: Stephen Hemminger, dev
On Tue, Nov 2, 2021 at 7:18 PM Somnath Kotur <somnath.kotur@broadcom.com> wrote:
>
>
>
> On Wed, 3 Nov 2021, 02:57 Stephen Hemminger, <stephen@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@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@broadcom.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Patch applied to dpdk-next-net-brcm. Thanks
>>
>>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] net/bnxt: fix undefined shift in vers_get
2021-11-03 4:13 ` Ajit Khaparde
@ 2021-11-03 4:14 ` Ajit Khaparde
0 siblings, 0 replies; 4+ messages in thread
From: Ajit Khaparde @ 2021-11-03 4:14 UTC (permalink / raw)
To: Somnath Kotur; +Cc: Stephen Hemminger, dev
On Tue, Nov 2, 2021 at 9:13 PM Ajit Khaparde <ajit.khaparde@broadcom.com> wrote:
>
> On Tue, Nov 2, 2021 at 7:18 PM Somnath Kotur <somnath.kotur@broadcom.com> wrote:
> >
> >
> >
> > On Wed, 3 Nov 2021, 02:57 Stephen Hemminger, <stephen@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@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@broadcom.com>
> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
>
> Patch applied to dpdk-next-net-brcm. Thanks
FYI -
During commit, I updated the commit headline a bit -
net/bnxt: fix undefined shift in ver get
>
> >>
> >>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-11-03 4:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-02 21:27 [dpdk-dev] [PATCH] net/bnxt: fix undefined shift in vers_get Stephen Hemminger
2021-11-03 2:18 ` Somnath Kotur
2021-11-03 4:13 ` Ajit Khaparde
2021-11-03 4:14 ` Ajit Khaparde
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).