* [PATCH 00/16] small bug fixes from PVS studio bug list @ 2024-11-15 6:05 Stephen Hemminger 2024-11-15 6:05 ` [PATCH 01/16] common/cnxk: remove duplicate condition Stephen Hemminger ` (16 more replies) 0 siblings, 17 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger More bug fixes from PVS studio bug reports. And one other fix to ptpclient. Stephen Hemminger (16): common/cnxk: remove duplicate condition net/cpfl: avoid calling log (printf) with null raw/cnxk_gpio: fix file descriptor leak net/ntnic: remove dead code net/i40e: remove duplicate code eal: fix out of bounds access in devargs net/qede: fix missing debug string examples/ptpclient: replace rte_memcpy with assignment examples/ptpclient: fix self memcmp net/octeon_ep: remove duplicate code net/hinic: fix flow type bitmask overflow crypto/dpaa2_sec: fix bitmask truncation crypto/dpaa_sec: fix bitmask truncation event/dpaa: fix bitmask truncation net/dpaa: fix bitmask truncation net/dpaa2: fix bitmask truncation drivers/common/cnxk/cnxk_security.c | 16 ++++++++------ drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 8 +++---- drivers/crypto/dpaa_sec/dpaa_sec.c | 7 +++--- drivers/event/dpaa/dpaa_eventdev.c | 10 ++++----- drivers/net/cpfl/cpfl_ethdev.c | 2 +- drivers/net/dpaa/dpaa_rxtx.c | 7 +++--- drivers/net/dpaa2/dpaa2_rxtx.c | 6 +++--- drivers/net/hinic/hinic_pmd_flow.c | 14 ++++++------ drivers/net/i40e/i40e_fdir.c | 10 ++++----- drivers/net/ntnic/ntnic_ethdev.c | 8 ------- drivers/net/octeon_ep/otx_ep_ethdev.c | 9 ++------ drivers/net/qede/qede_debug.c | 3 +++ drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c | 24 +++++++++++++-------- examples/ptpclient/ptpclient.c | 10 +++------ lib/eal/common/eal_common_devargs.c | 2 +- 15 files changed, 64 insertions(+), 72 deletions(-) -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 01/16] common/cnxk: remove duplicate condition 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:16 ` [EXTERNAL] " Anoob Joseph 2024-11-15 6:05 ` [PATCH 02/16] net/cpfl: avoid calling log (printf) with null Stephen Hemminger ` (15 subsequent siblings) 16 siblings, 1 reply; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, Nithin Dabilpuram, Kiran Kumar K, Sunil Kumar Kori, Satha Rao, Harman Kalra The same condition is checked twice in an if statement. Harmless, but redundant. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/common/cnxk/cnxk_security.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/common/cnxk/cnxk_security.c b/drivers/common/cnxk/cnxk_security.c index c2871ad2bd..9446c14ac8 100644 --- a/drivers/common/cnxk/cnxk_security.c +++ b/drivers/common/cnxk/cnxk_security.c @@ -174,9 +174,11 @@ ot_ipsec_sa_common_param_fill(union roc_ot_ipsec_sa_word2 *w2, uint8_t *cipher_k } /* Set AES key length */ - if (w2->s.enc_type == ROC_IE_SA_ENC_AES_CBC || w2->s.enc_type == ROC_IE_SA_ENC_AES_CCM || - w2->s.enc_type == ROC_IE_SA_ENC_AES_CTR || w2->s.enc_type == ROC_IE_SA_ENC_AES_GCM || - w2->s.enc_type == ROC_IE_SA_ENC_AES_CCM || w2->s.auth_type == ROC_IE_SA_AUTH_AES_GMAC) { + if (w2->s.enc_type == ROC_IE_SA_ENC_AES_CBC || + w2->s.enc_type == ROC_IE_SA_ENC_AES_CTR || + w2->s.enc_type == ROC_IE_SA_ENC_AES_GCM || + w2->s.enc_type == ROC_IE_SA_ENC_AES_CCM || + w2->s.auth_type == ROC_IE_SA_AUTH_AES_GMAC) { switch (length) { case ROC_CPT_AES128_KEY_LEN: w2->s.aes_key_len = ROC_IE_SA_AES_KEY_LEN_128; @@ -879,9 +881,11 @@ on_ipsec_sa_ctl_set(struct rte_security_ipsec_xform *ipsec, } /* Set AES key length */ - if (ctl->enc_type == ROC_IE_SA_ENC_AES_CBC || ctl->enc_type == ROC_IE_SA_ENC_AES_CCM || - ctl->enc_type == ROC_IE_SA_ENC_AES_CTR || ctl->enc_type == ROC_IE_SA_ENC_AES_GCM || - ctl->enc_type == ROC_IE_SA_ENC_AES_CCM || ctl->auth_type == ROC_IE_SA_AUTH_AES_GMAC) { + if (ctl->enc_type == ROC_IE_SA_ENC_AES_CBC || + ctl->enc_type == ROC_IE_SA_ENC_AES_CTR || + ctl->enc_type == ROC_IE_SA_ENC_AES_GCM || + ctl->enc_type == ROC_IE_SA_ENC_AES_CCM || + ctl->auth_type == ROC_IE_SA_AUTH_AES_GMAC) { switch (aes_key_len) { case 16: ctl->aes_key_len = ROC_IE_SA_AES_KEY_LEN_128; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [EXTERNAL] [PATCH 01/16] common/cnxk: remove duplicate condition 2024-11-15 6:05 ` [PATCH 01/16] common/cnxk: remove duplicate condition Stephen Hemminger @ 2024-11-15 6:16 ` Anoob Joseph 0 siblings, 0 replies; 44+ messages in thread From: Anoob Joseph @ 2024-11-15 6:16 UTC (permalink / raw) To: Stephen Hemminger, dev Cc: Nithin Kumar Dabilpuram, Kiran Kumar Kokkilagadda, Sunil Kumar Kori, Satha Koteswara Rao Kottidi, Harman Kalra > The same condition is checked twice in an if statement. > Harmless, but redundant. > > Link: https://urldefense.proofpoint.com/v2/url?u=https-3A__pvs-2Dstudio.com_en_blog_posts_cpp_1183_&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=jPfB8rwwviRSxyLWs2n6B- > WYLn1v9SyTMrT5EQqh2TU&m=tCMuFtN3iZvm6NW4QbOzKChuntNLulIgTuVpxYI9t8tfV9TfaTSFRx49kikIS84j&s=2cGhW06MxChL2e5aNV_DQOLM1lQUuNBQKHQeLsS3IdE&e= > > Signed-off-by: Stephen Hemminger <mailto:stephen@networkplumber.org> Acked-by: Anoob Joseph <anoobj@marvell.com> ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 02/16] net/cpfl: avoid calling log (printf) with null 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger 2024-11-15 6:05 ` [PATCH 01/16] common/cnxk: remove duplicate condition Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 03/16] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger ` (14 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Praveen Shetty The log message would always refer to str variable which is NULL here. Looks like author intended to print original parameter. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/cpfl/cpfl_ethdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c index 6f6707a0bd..1817221652 100644 --- a/drivers/net/cpfl/cpfl_ethdev.c +++ b/drivers/net/cpfl/cpfl_ethdev.c @@ -1580,7 +1580,7 @@ parse_repr(const char *key __rte_unused, const char *value, void *args) RTE_DIM(eth_da->representor_ports)); done: if (str == NULL) { - PMD_DRV_LOG(ERR, "wrong representor format: %s", str); + PMD_DRV_LOG(ERR, "wrong representor format: %s", value); return -1; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 03/16] raw/cnxk_gpio: fix file descriptor leak 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger 2024-11-15 6:05 ` [PATCH 01/16] common/cnxk: remove duplicate condition Stephen Hemminger 2024-11-15 6:05 ` [PATCH 02/16] net/cpfl: avoid calling log (printf) with null Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 04/16] net/ntnic: remove dead code Stephen Hemminger ` (13 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, tduszynski, Jakub Palider The function would leak file if fscanf failed. There is a working version in other file, clone that. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 0e6557b448fa ("raw/cnxk_gpio: add self test") Cc: tduszynski@marvell.com Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c | 24 ++++++++++++++-------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c b/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c index 2f3973a7b5..a0d9942f20 100644 --- a/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c +++ b/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c @@ -34,24 +34,30 @@ cnxk_gpio_attr_exists(const char *attr) static int cnxk_gpio_read_attr(char *attr, char *val) { + int ret, ret2; FILE *fp; - int ret; fp = fopen(attr, "r"); if (!fp) return -errno; ret = fscanf(fp, "%s", val); - if (ret < 0) - return -errno; - if (ret != 1) - return -EIO; + if (ret < 0) { + ret = -errno; + goto out; + } + if (ret != 1) { + ret = -EIO; + goto out; + } - ret = fclose(fp); - if (ret) - return -errno; + ret = 0; +out: + ret2 = fclose(fp); + if (!ret) + ret = ret2; - return 0; + return ret; } #define CNXK_GPIO_ERR_STR(err, str, ...) do { \ -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 04/16] net/ntnic: remove dead code 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (2 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 03/16] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 05/16] net/i40e: remove duplicate code Stephen Hemminger ` (12 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Christian Koue Muf, Serhii Iliushyk The loop to update speed would not work because num_port_speeds was always zero so it did nothing. And the array of pls_mbps was only used inside the loop but never set. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/ntnic/ntnic_ethdev.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c index 2a2643a106..467fea4bf2 100644 --- a/drivers/net/ntnic/ntnic_ethdev.c +++ b/drivers/net/ntnic/ntnic_ethdev.c @@ -2037,8 +2037,6 @@ nthw_pci_dev_init(struct rte_pci_device *pci_dev) uint32_t exception_path = 0; struct flow_queue_id_s queue_ids[MAX_QUEUES]; int n_phy_ports; - struct port_link_speed pls_mbps[NUM_ADAPTER_PORTS_MAX] = { 0 }; - int num_port_speeds = 0; enum flow_eth_dev_profile profile = FLOW_ETH_DEV_PROFILE_INLINE; NT_LOG_DBGX(DBG, NTNIC, "Dev %s PF #%i Init : %02x:%02x:%i", pci_dev->name, @@ -2178,12 +2176,6 @@ nthw_pci_dev_init(struct rte_pci_device *pci_dev) p_nt_drv->b_shutdown = false; p_nt_drv->adapter_info.pb_shutdown = &p_nt_drv->b_shutdown; - for (int i = 0; i < num_port_speeds; ++i) { - struct adapter_info_s *p_adapter_info = &p_nt_drv->adapter_info; - nt_link_speed_t link_speed = convert_link_speed(pls_mbps[i].link_speed); - port_ops->set_link_speed(p_adapter_info, i, link_speed); - } - /* store context */ store_pdrv(p_drv); -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 05/16] net/i40e: remove duplicate code 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (3 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 04/16] net/ntnic: remove dead code Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 11:00 ` Bruce Richardson 2024-11-15 6:05 ` [PATCH 06/16] eal: fix out of bounds access in devargs Stephen Hemminger ` (11 subsequent siblings) 16 siblings, 1 reply; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Ian Stokes, Bruce Richardson There are two branches in the cascading if/else that have same condition and code; remove one. Update the code to follow DPDK style where all statements in if should have brackets if any leg requires them. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/i40e/i40e_fdir.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c index 47f79ecf11..6861bea99a 100644 --- a/drivers/net/i40e/i40e_fdir.c +++ b/drivers/net/i40e/i40e_fdir.c @@ -599,18 +599,16 @@ i40e_flow_fdir_fill_eth_ip_head(struct i40e_pf *pf, } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV4_UDP) { len = fill_ip4_head(fdir_input, raw_pkt, IPPROTO_UDP, len, ether_type); - } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV4_UDP) { - len = fill_ip4_head(fdir_input, raw_pkt, IPPROTO_UDP, - len, ether_type); - } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6) + } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6) { len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_ESP, len, ether_type); - else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6_UDP) + } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6_UDP) { len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_UDP, len, ether_type); - else if (cus_pctype->index == I40E_CUSTOMIZED_IPV6_L2TPV3) + } else if (cus_pctype->index == I40E_CUSTOMIZED_IPV6_L2TPV3) { len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_L2TP, len, ether_type); + } } else { PMD_DRV_LOG(ERR, "unknown pctype %u.", fdir_input->pctype); return -1; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 05/16] net/i40e: remove duplicate code 2024-11-15 6:05 ` [PATCH 05/16] net/i40e: remove duplicate code Stephen Hemminger @ 2024-11-15 11:00 ` Bruce Richardson 0 siblings, 0 replies; 44+ messages in thread From: Bruce Richardson @ 2024-11-15 11:00 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, Ian Stokes On Thu, Nov 14, 2024 at 10:05:42PM -0800, Stephen Hemminger wrote: > There are two branches in the cascading if/else that have same > condition and code; remove one. Update the code to follow DPDK > style where all statements in if should have brackets if any > leg requires them. > Not actually DPDK style, that is just something that checkpatch recommends because it is kernel style. DPDK style guide says[1] "Braces that are not necessary should be left out." That said, most legs of this if-else block have it so ok to have that change included for consistency. [1] https://doc.dpdk.org/guides/contributing/coding_style.html#control-statements-and-loops > Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 2ab5c84605f0 ("net/i40e: fix ESP flow creation") Acked-by: Bruce Richardson <bruce.richardson@intel.com> > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/net/i40e/i40e_fdir.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c > index 47f79ecf11..6861bea99a 100644 > --- a/drivers/net/i40e/i40e_fdir.c > +++ b/drivers/net/i40e/i40e_fdir.c > @@ -599,18 +599,16 @@ i40e_flow_fdir_fill_eth_ip_head(struct i40e_pf *pf, > } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV4_UDP) { > len = fill_ip4_head(fdir_input, raw_pkt, IPPROTO_UDP, > len, ether_type); > - } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV4_UDP) { > - len = fill_ip4_head(fdir_input, raw_pkt, IPPROTO_UDP, > - len, ether_type); > - } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6) > + } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6) { > len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_ESP, > len, ether_type); > - else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6_UDP) > + } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6_UDP) { > len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_UDP, > len, ether_type); > - else if (cus_pctype->index == I40E_CUSTOMIZED_IPV6_L2TPV3) > + } else if (cus_pctype->index == I40E_CUSTOMIZED_IPV6_L2TPV3) { > len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_L2TP, > len, ether_type); > + } > } else { > PMD_DRV_LOG(ERR, "unknown pctype %u.", fdir_input->pctype); > return -1; > -- > 2.45.2 > ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 06/16] eal: fix out of bounds access in devargs 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (4 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 05/16] net/i40e: remove duplicate code Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 07/16] net/qede: fix missing debug string Stephen Hemminger ` (10 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, xuemingl, stable, Tyler Retzlaff, Gaetan Rivet The code for parsing layers in devargs could reference past the end of layers[] array on stack. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 9a1a9e4a2ddd ("devargs: support path value with global device syntax") Cc: xuemingl@nvidia.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- lib/eal/common/eal_common_devargs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/eal/common/eal_common_devargs.c b/lib/eal/common/eal_common_devargs.c index a64805b268..dd857fc839 100644 --- a/lib/eal/common/eal_common_devargs.c +++ b/lib/eal/common/eal_common_devargs.c @@ -88,7 +88,7 @@ rte_devargs_layers_parse(struct rte_devargs *devargs, s = devargs->data; while (s != NULL) { - if (nblayer > RTE_DIM(layers)) { + if (nblayer >= RTE_DIM(layers)) { ret = -E2BIG; goto get_out; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 07/16] net/qede: fix missing debug string 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (5 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 06/16] eal: fix out of bounds access in devargs Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 08/16] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger ` (9 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, rmody, stable, Devendra Singh Rawat, Alok Prasad, Igor Russkikh The array of debug status strings did not match possible enum values. Add the missing element and a static assert to make sure the table has all possible values. For more complete description see. Link: https://pvs-studio.com/en/blog/posts/cpp/1176/ Fixes: ec55c118792b ("net/qede: add infrastructure for debug data collection") Cc: rmody@marvell.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/qede/qede_debug.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/qede/qede_debug.c b/drivers/net/qede/qede_debug.c index 18f2d988fb..4997f98a5d 100644 --- a/drivers/net/qede/qede_debug.c +++ b/drivers/net/qede/qede_debug.c @@ -5614,6 +5614,8 @@ static const char * const s_status_str[] = { /* DBG_STATUS_INVALID_FILTER_TRIGGER_DWORDS */ "The filter/trigger constraint dword offsets are not enabled for recording", + /* DBG_STATUS_NO_MATCHING_FRAMING_MODE */ + "No matching frame mode", /* DBG_STATUS_VFC_READ_ERROR */ "Error reading from VFC", @@ -5759,6 +5761,7 @@ static const char * const s_status_str[] = { /* DBG_STATUS_MISSING_TRIGGER_STATE_STORM */ "When triggering on Storm data, the Storm to trigger on must be specified" }; +static_assert(MAX_DBG_STATUS == RTE_DIM(s_status_str), "status string table mismatch"); /* Idle check severity names array */ static const char * const s_idle_chk_severity_str[] = { -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 08/16] examples/ptpclient: replace rte_memcpy with assignment 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (6 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 07/16] net/qede: fix missing debug string Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 09/16] examples/ptpclient: fix self memcmp Stephen Hemminger ` (8 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Kirill Rybalchenko Don't use rte_memcpy() when not necessary. Structure assignment is as fast and type safe. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- examples/ptpclient/ptpclient.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c index 23fa487081..2ec532d058 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -415,9 +415,7 @@ parse_sync(struct ptpv2_time_receiver_ordinary *ptp_data, uint16_t rx_tstamp_idx ptp_data->seqID_SYNC = rte_be_to_cpu_16(ptp_hdr->seq_id); if (ptp_data->ptpset == 0) { - rte_memcpy(&ptp_data->transmitter_clock_id, - &ptp_hdr->source_port_id.clock_id, - sizeof(struct clock_id)); + ptp_data->transmitter_clock_id = ptp_hdr->source_port_id.clock_id; ptp_data->ptpset = 1; } @@ -522,9 +520,7 @@ parse_fup(struct ptpv2_time_receiver_ordinary *ptp_data) client_clkid->id[6] = eth_hdr->src_addr.addr_bytes[4]; client_clkid->id[7] = eth_hdr->src_addr.addr_bytes[5]; - rte_memcpy(&ptp_data->client_clock_id, - client_clkid, - sizeof(struct clock_id)); + ptp_data->client_clock_id = *client_clkid; /* Enable flag for hardware timestamping. */ created_pkt->ol_flags |= RTE_MBUF_F_TX_IEEE1588_TMST; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 09/16] examples/ptpclient: fix self memcmp 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (7 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 08/16] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 10/16] net/octeon_ep: remove duplicate code Stephen Hemminger ` (7 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, danielx.t.mrzyglod, stable, Kirill Rybalchenko, John McNamara, Pablo de Lara Calling memcmp on same structure will always be true. Replace with same conditional used elsewhere. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: ab129e9065a5 ("examples/ptpclient: add minimal PTP client") Cc: danielx.t.mrzyglod@intel.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- examples/ptpclient/ptpclient.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c index 2ec532d058..d6dff2eb7e 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -419,7 +419,7 @@ parse_sync(struct ptpv2_time_receiver_ordinary *ptp_data, uint16_t rx_tstamp_idx ptp_data->ptpset = 1; } - if (memcmp(&ptp_hdr->source_port_id.clock_id, + if (memcmp(&ptp_data->transmitter_clock_id, &ptp_hdr->source_port_id.clock_id, sizeof(struct clock_id)) == 0) { -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 10/16] net/octeon_ep: remove duplicate code 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (8 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 09/16] examples/ptpclient: fix self memcmp Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 11/16] net/hinic: fix flow type bitmask overflow Stephen Hemminger ` (6 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Vamsi Attunuru, Anatoly Burakov Both sides of the if in uninit are using same code. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/octeon_ep/otx_ep_ethdev.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/net/octeon_ep/otx_ep_ethdev.c b/drivers/net/octeon_ep/otx_ep_ethdev.c index b4f8baf3b3..8b14734b0c 100644 --- a/drivers/net/octeon_ep/otx_ep_ethdev.c +++ b/drivers/net/octeon_ep/otx_ep_ethdev.c @@ -721,14 +721,9 @@ static const struct eth_dev_ops otx_ep_eth_dev_ops = { static int otx_ep_eth_dev_uninit(struct rte_eth_dev *eth_dev) { - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { - eth_dev->dev_ops = NULL; - eth_dev->rx_pkt_burst = NULL; - eth_dev->tx_pkt_burst = NULL; - return 0; - } + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + otx_ep_mbox_uninit(eth_dev); - otx_ep_mbox_uninit(eth_dev); eth_dev->dev_ops = NULL; eth_dev->rx_pkt_burst = NULL; eth_dev->tx_pkt_burst = NULL; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 11/16] net/hinic: fix flow type bitmask overflow 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (9 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 10/16] net/octeon_ep: remove duplicate code Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-15 6:05 ` [PATCH 12/16] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger ` (5 subsequent siblings) 16 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, cloud.wangxiaoyun, stable, Ziyang Xuan The type mask is 64 bit value, doing a shift of literal 1 (32 bit) will result in int type (32 bit) and cause truncation. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: f4ca3fd54c4d ("net/hinic: create and destroy flow director filter") Cc: cloud.wangxiaoyun@huawei.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/hinic/hinic_pmd_flow.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/hinic/hinic_pmd_flow.c b/drivers/net/hinic/hinic_pmd_flow.c index 8fdd5a35be..6b1ca6ff88 100644 --- a/drivers/net/hinic/hinic_pmd_flow.c +++ b/drivers/net/hinic/hinic_pmd_flow.c @@ -1979,8 +1979,8 @@ static int hinic_lookup_new_filter(struct hinic_5tuple_filter *filter, return -EINVAL; } - if (!(filter_info->type_mask & (1 << type_id))) { - filter_info->type_mask |= 1 << type_id; + if (!(filter_info->type_mask & (UINT64_C(1) << type_id))) { + filter_info->type_mask |= UINT64_C(1) << type_id; filter->index = type_id; filter_info->pkt_filters[type_id].enable = true; filter_info->pkt_filters[type_id].pkt_proto = @@ -2138,7 +2138,7 @@ static void hinic_remove_5tuple_filter(struct rte_eth_dev *dev, filter_info->pkt_type = 0; filter_info->qid = 0; filter_info->pkt_filters[filter->index].qid = 0; - filter_info->type_mask &= ~(1 << (filter->index)); + filter_info->type_mask &= ~(UINT64_C(1) << filter->index); TAILQ_REMOVE(&filter_info->fivetuple_list, filter, entries); rte_free(filter); @@ -2268,8 +2268,8 @@ hinic_ethertype_filter_insert(struct hinic_filter_info *filter_info, if (id < 0) return -EINVAL; - if (!(filter_info->type_mask & (1 << id))) { - filter_info->type_mask |= 1 << id; + if (!(filter_info->type_mask & (UINT64_C(1) << id))) { + filter_info->type_mask |= UINT64_C(1) << id; filter_info->pkt_filters[id].pkt_proto = ethertype_filter->pkt_proto; filter_info->pkt_filters[id].enable = ethertype_filter->enable; @@ -2289,7 +2289,7 @@ hinic_ethertype_filter_remove(struct hinic_filter_info *filter_info, return; filter_info->pkt_type = 0; - filter_info->type_mask &= ~(1 << idx); + filter_info->type_mask &= ~(UINT64_C(1) << idx); filter_info->pkt_filters[idx].pkt_proto = (uint16_t)0; filter_info->pkt_filters[idx].enable = FALSE; filter_info->pkt_filters[idx].qid = 0; @@ -2355,7 +2355,7 @@ hinic_add_del_ethertype_filter(struct rte_eth_dev *dev, if (i < 0) return -EINVAL; - if ((filter_info->type_mask & (1 << i))) { + if ((filter_info->type_mask & (UINT64_C(1) << i))) { filter_info->pkt_filters[i].enable = FALSE; (void)hinic_set_fdir_filter(nic_dev->hwdev, filter_info->pkt_type, -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 12/16] crypto/dpaa2_sec: fix bitmask truncation 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (10 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 11/16] net/hinic: fix flow type bitmask overflow Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-18 7:03 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 13/16] crypto/dpaa_sec: " Stephen Hemminger ` (4 subsequent siblings) 16 siblings, 1 reply; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, ashish.jain, stable, Gagandeep Singh, Hemant Agrawal, Akhil Goyal The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: a77db24643b7 ("crypto/dpaa2_sec: support atomic queues") Cc: ashish.jain@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index ec6577f64c..7ad8fd47dd 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -1491,8 +1491,8 @@ dpaa2_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, if (*dpaa2_seqn((*ops)->sym->m_src)) { if (*dpaa2_seqn((*ops)->sym->m_src) & QBMAN_ENQUEUE_FLAG_DCA) { DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << - *dpaa2_seqn((*ops)->sym->m_src) & + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << + *dpaa2_seqn((*ops)->sym->m_src) & QBMAN_EQCR_DCA_IDXMASK); } flags[loop] = *dpaa2_seqn((*ops)->sym->m_src); @@ -1772,7 +1772,7 @@ dpaa2_sec_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, dq_idx = *dpaa2_seqn(m) - 1; qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dq_idx); } *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; } @@ -4055,7 +4055,7 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused, dqrr_index = qbman_get_dqrr_idx(dq); *dpaa2_seqn(crypto_op->sym->m_src) = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; DPAA2_PER_LCORE_DQRR_SIZE++; - DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; + DPAA2_PER_LCORE_DQRR_HELD |= UINT64_C(1) << dqrr_index; DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = crypto_op->sym->m_src; ev->event_ptr = crypto_op; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 12/16] crypto/dpaa2_sec: fix bitmask truncation 2024-11-15 6:05 ` [PATCH 12/16] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger @ 2024-11-18 7:03 ` Hemant Agrawal 0 siblings, 0 replies; 44+ messages in thread From: Hemant Agrawal @ 2024-11-18 7:03 UTC (permalink / raw) To: Stephen Hemminger, dev Cc: ashish.jain, stable, Gagandeep Singh, Hemant Agrawal, Akhil Goyal On 15-11-2024 11:35, Stephen Hemminger wrote: > The dqrr_held mask is 64 bit but updates were getting truncated > because 1 is of type int (32 bit) and the result shift of int is of > type int (32 bit); therefore any value >= 32 would get truncated. > > Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ > > Fixes: a77db24643b7 ("crypto/dpaa2_sec: support atomic queues") > Cc: ashish.jain@nxp.com > Cc: stable@dpdk.org > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c > index ec6577f64c..7ad8fd47dd 100644 > --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c > +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c > @@ -1491,8 +1491,8 @@ dpaa2_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, > if (*dpaa2_seqn((*ops)->sym->m_src)) { > if (*dpaa2_seqn((*ops)->sym->m_src) & QBMAN_ENQUEUE_FLAG_DCA) { > DPAA2_PER_LCORE_DQRR_SIZE--; > - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << > - *dpaa2_seqn((*ops)->sym->m_src) & > + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << > + *dpaa2_seqn((*ops)->sym->m_src) & > QBMAN_EQCR_DCA_IDXMASK); > } > flags[loop] = *dpaa2_seqn((*ops)->sym->m_src); > @@ -1772,7 +1772,7 @@ dpaa2_sec_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, > dq_idx = *dpaa2_seqn(m) - 1; > qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); > DPAA2_PER_LCORE_DQRR_SIZE--; > - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); > + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dq_idx); > } > *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; > } > @@ -4055,7 +4055,7 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused, > dqrr_index = qbman_get_dqrr_idx(dq); > *dpaa2_seqn(crypto_op->sym->m_src) = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; > DPAA2_PER_LCORE_DQRR_SIZE++; > - DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; > + DPAA2_PER_LCORE_DQRR_HELD |= UINT64_C(1) << dqrr_index; > DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = crypto_op->sym->m_src; > ev->event_ptr = crypto_op; > } Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 13/16] crypto/dpaa_sec: fix bitmask truncation 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (11 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 12/16] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-18 7:03 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 14/16] event/dpaa: " Stephen Hemminger ` (3 subsequent siblings) 16 siblings, 1 reply; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, akhil.goyal, stable, Gagandeep Singh, Hemant Agrawal, Akhil Goyal The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: fe3688ba7950 ("crypto/dpaa_sec: support event crypto adapter") Cc: akhil.goyal@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/crypto/dpaa_sec/dpaa_sec.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 3fa88ca968..e117cd77a6 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -1907,13 +1907,12 @@ dpaa_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, op = *(ops++); if (*dpaa_seqn(op->sym->m_src) != 0) { index = *dpaa_seqn(op->sym->m_src) - 1; - if (DPAA_PER_LCORE_DQRR_HELD & (1 << index)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << index)) { /* QM_EQCR_DCA_IDXMASK = 0x0f */ flags[loop] = ((index & 0x0f) << 8); flags[loop] |= QMAN_ENQUEUE_FLAG_DCA; DPAA_PER_LCORE_DQRR_SIZE--; - DPAA_PER_LCORE_DQRR_HELD &= - ~(1 << index); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << index); } } @@ -3500,7 +3499,7 @@ dpaa_sec_process_atomic_event(void *event, /* Save active dqrr entries */ index = ((uintptr_t)dqrr >> 6) & (16/*QM_DQRR_SIZE*/ - 1); DPAA_PER_LCORE_DQRR_SIZE++; - DPAA_PER_LCORE_DQRR_HELD |= 1 << index; + DPAA_PER_LCORE_DQRR_HELD |= UINT64_C(1) << index; DPAA_PER_LCORE_DQRR_MBUF(index) = ctx->op->sym->m_src; ev->impl_opaque = index + 1; *dpaa_seqn(ctx->op->sym->m_src) = (uint32_t)index + 1; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 13/16] crypto/dpaa_sec: fix bitmask truncation 2024-11-15 6:05 ` [PATCH 13/16] crypto/dpaa_sec: " Stephen Hemminger @ 2024-11-18 7:03 ` Hemant Agrawal 0 siblings, 0 replies; 44+ messages in thread From: Hemant Agrawal @ 2024-11-18 7:03 UTC (permalink / raw) To: Stephen Hemminger, dev Cc: akhil.goyal, stable, Gagandeep Singh, Hemant Agrawal, Akhil Goyal On 15-11-2024 11:35, Stephen Hemminger wrote: > The dqrr_held mask is 64 bit but updates were getting truncated > because 1 is of type int (32 bit) and the result shift of int is of > type int (32 bit); therefore any value >= 32 would get truncated. > > Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ > > Fixes: fe3688ba7950 ("crypto/dpaa_sec: support event crypto adapter") > Cc: akhil.goyal@nxp.com > Cc: stable@dpdk.org > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/crypto/dpaa_sec/dpaa_sec.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c > index 3fa88ca968..e117cd77a6 100644 > --- a/drivers/crypto/dpaa_sec/dpaa_sec.c > +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c > @@ -1907,13 +1907,12 @@ dpaa_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, > op = *(ops++); > if (*dpaa_seqn(op->sym->m_src) != 0) { > index = *dpaa_seqn(op->sym->m_src) - 1; > - if (DPAA_PER_LCORE_DQRR_HELD & (1 << index)) { > + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << index)) { > /* QM_EQCR_DCA_IDXMASK = 0x0f */ > flags[loop] = ((index & 0x0f) << 8); > flags[loop] |= QMAN_ENQUEUE_FLAG_DCA; > DPAA_PER_LCORE_DQRR_SIZE--; > - DPAA_PER_LCORE_DQRR_HELD &= > - ~(1 << index); > + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << index); > } > } > > @@ -3500,7 +3499,7 @@ dpaa_sec_process_atomic_event(void *event, > /* Save active dqrr entries */ > index = ((uintptr_t)dqrr >> 6) & (16/*QM_DQRR_SIZE*/ - 1); > DPAA_PER_LCORE_DQRR_SIZE++; > - DPAA_PER_LCORE_DQRR_HELD |= 1 << index; > + DPAA_PER_LCORE_DQRR_HELD |= UINT64_C(1) << index; > DPAA_PER_LCORE_DQRR_MBUF(index) = ctx->op->sym->m_src; > ev->impl_opaque = index + 1; > *dpaa_seqn(ctx->op->sym->m_src) = (uint32_t)index + 1; Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 14/16] event/dpaa: fix bitmask truncation 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (12 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 13/16] crypto/dpaa_sec: " Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-18 7:04 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 15/16] net/dpaa: " Stephen Hemminger ` (2 subsequent siblings) 16 siblings, 1 reply; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, sunil.kori, stable, Hemant Agrawal, Sachin Saxena, skori More bitmask truncation from mask computation. Fixes: 0ee17f79ebd0 ("event/dpaa: add enqueue/dequeue") Cc: sunil.kori@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/event/dpaa/dpaa_eventdev.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/event/dpaa/dpaa_eventdev.c b/drivers/event/dpaa/dpaa_eventdev.c index 853cc1ecf9..400e0ecd1c 100644 --- a/drivers/event/dpaa/dpaa_eventdev.c +++ b/drivers/event/dpaa/dpaa_eventdev.c @@ -102,7 +102,7 @@ dpaa_event_enqueue_burst(void *port, const struct rte_event ev[], qman_dca_index(ev[i].impl_opaque, 0); mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); DPAA_PER_LCORE_DQRR_SIZE--; break; default: @@ -199,11 +199,11 @@ dpaa_event_dequeue_burst(void *port, struct rte_event ev[], /* Check if there are atomic contexts to be released */ i = 0; while (DPAA_PER_LCORE_DQRR_SIZE) { - if (DPAA_PER_LCORE_DQRR_HELD & (1 << i)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << i)) { qman_dca_index(i, 0); mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); DPAA_PER_LCORE_DQRR_SIZE--; } i++; @@ -263,11 +263,11 @@ dpaa_event_dequeue_burst_intr(void *port, struct rte_event ev[], /* Check if there are atomic contexts to be released */ i = 0; while (DPAA_PER_LCORE_DQRR_SIZE) { - if (DPAA_PER_LCORE_DQRR_HELD & (1 << i)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << i)) { qman_dca_index(i, 0); mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); DPAA_PER_LCORE_DQRR_SIZE--; } i++; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 14/16] event/dpaa: fix bitmask truncation 2024-11-15 6:05 ` [PATCH 14/16] event/dpaa: " Stephen Hemminger @ 2024-11-18 7:04 ` Hemant Agrawal 0 siblings, 0 replies; 44+ messages in thread From: Hemant Agrawal @ 2024-11-18 7:04 UTC (permalink / raw) To: Stephen Hemminger, dev Cc: sunil.kori, stable, Hemant Agrawal, Sachin Saxena, skori On 15-11-2024 11:35, Stephen Hemminger wrote: > More bitmask truncation from mask computation. > > Fixes: 0ee17f79ebd0 ("event/dpaa: add enqueue/dequeue") > Cc: sunil.kori@nxp.com > Cc: stable@dpdk.org > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/event/dpaa/dpaa_eventdev.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/event/dpaa/dpaa_eventdev.c b/drivers/event/dpaa/dpaa_eventdev.c > index 853cc1ecf9..400e0ecd1c 100644 > --- a/drivers/event/dpaa/dpaa_eventdev.c > +++ b/drivers/event/dpaa/dpaa_eventdev.c > @@ -102,7 +102,7 @@ dpaa_event_enqueue_burst(void *port, const struct rte_event ev[], > qman_dca_index(ev[i].impl_opaque, 0); > mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); > *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; > - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); > + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); > DPAA_PER_LCORE_DQRR_SIZE--; > break; > default: > @@ -199,11 +199,11 @@ dpaa_event_dequeue_burst(void *port, struct rte_event ev[], > /* Check if there are atomic contexts to be released */ > i = 0; > while (DPAA_PER_LCORE_DQRR_SIZE) { > - if (DPAA_PER_LCORE_DQRR_HELD & (1 << i)) { > + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << i)) { > qman_dca_index(i, 0); > mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); > *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; > - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); > + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); > DPAA_PER_LCORE_DQRR_SIZE--; > } > i++; > @@ -263,11 +263,11 @@ dpaa_event_dequeue_burst_intr(void *port, struct rte_event ev[], > /* Check if there are atomic contexts to be released */ > i = 0; > while (DPAA_PER_LCORE_DQRR_SIZE) { > - if (DPAA_PER_LCORE_DQRR_HELD & (1 << i)) { > + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << i)) { > qman_dca_index(i, 0); > mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); > *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; > - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); > + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); > DPAA_PER_LCORE_DQRR_SIZE--; > } > i++; Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 15/16] net/dpaa: fix bitmask truncation 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (13 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 14/16] event/dpaa: " Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-18 7:04 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 16/16] net/dpaa2: " Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger 16 siblings, 1 reply; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, sunil.kori, stable, Hemant Agrawal, Sachin Saxena, skori, Nipun Gupta The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 5e7455931442 ("net/dpaa: support Rx queue configurations with eventdev") Cc: sunil.kori@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/dpaa/dpaa_rxtx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index 247e7b92ba..05bd73becf 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -842,7 +842,7 @@ dpaa_rx_cb_atomic(void *event, /* Save active dqrr entries */ index = DQRR_PTR2IDX(dqrr); DPAA_PER_LCORE_DQRR_SIZE++; - DPAA_PER_LCORE_DQRR_HELD |= 1 << index; + DPAA_PER_LCORE_DQRR_HELD |= UINT64_C(1) << index; DPAA_PER_LCORE_DQRR_MBUF(index) = mbuf; ev->impl_opaque = index + 1; *dpaa_seqn(mbuf) = (uint32_t)index + 1; @@ -1338,13 +1338,12 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) seqn = *dpaa_seqn(mbuf); if (seqn != DPAA_INVALID_MBUF_SEQN) { index = seqn - 1; - if (DPAA_PER_LCORE_DQRR_HELD & (1 << index)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << index)) { flags[loop] = ((index & QM_EQCR_DCA_IDXMASK) << 8); flags[loop] |= QMAN_ENQUEUE_FLAG_DCA; DPAA_PER_LCORE_DQRR_SIZE--; - DPAA_PER_LCORE_DQRR_HELD &= - ~(1 << index); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << index); } } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 15/16] net/dpaa: fix bitmask truncation 2024-11-15 6:05 ` [PATCH 15/16] net/dpaa: " Stephen Hemminger @ 2024-11-18 7:04 ` Hemant Agrawal 0 siblings, 0 replies; 44+ messages in thread From: Hemant Agrawal @ 2024-11-18 7:04 UTC (permalink / raw) To: Stephen Hemminger, dev Cc: sunil.kori, stable, Hemant Agrawal, Sachin Saxena, skori, Nipun Gupta Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> On 15-11-2024 11:35, Stephen Hemminger wrote: > The dqrr_held mask is 64 bit but updates were getting truncated > because 1 is of type int (32 bit) and the result shift of int is of > type int (32 bit); therefore any value >= 32 would get truncated. > > Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ > > Fixes: 5e7455931442 ("net/dpaa: support Rx queue configurations with eventdev") > Cc: sunil.kori@nxp.com > Cc: stable@dpdk.org > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/net/dpaa/dpaa_rxtx.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c > index 247e7b92ba..05bd73becf 100644 > --- a/drivers/net/dpaa/dpaa_rxtx.c > +++ b/drivers/net/dpaa/dpaa_rxtx.c > @@ -842,7 +842,7 @@ dpaa_rx_cb_atomic(void *event, > /* Save active dqrr entries */ > index = DQRR_PTR2IDX(dqrr); > DPAA_PER_LCORE_DQRR_SIZE++; > - DPAA_PER_LCORE_DQRR_HELD |= 1 << index; > + DPAA_PER_LCORE_DQRR_HELD |= UINT64_C(1) << index; > DPAA_PER_LCORE_DQRR_MBUF(index) = mbuf; > ev->impl_opaque = index + 1; > *dpaa_seqn(mbuf) = (uint32_t)index + 1; > @@ -1338,13 +1338,12 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) > seqn = *dpaa_seqn(mbuf); > if (seqn != DPAA_INVALID_MBUF_SEQN) { > index = seqn - 1; > - if (DPAA_PER_LCORE_DQRR_HELD & (1 << index)) { > + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << index)) { > flags[loop] = > ((index & QM_EQCR_DCA_IDXMASK) << 8); > flags[loop] |= QMAN_ENQUEUE_FLAG_DCA; > DPAA_PER_LCORE_DQRR_SIZE--; > - DPAA_PER_LCORE_DQRR_HELD &= > - ~(1 << index); > + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << index); > } > } > ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 16/16] net/dpaa2: fix bitmask truncation 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (14 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 15/16] net/dpaa: " Stephen Hemminger @ 2024-11-15 6:05 ` Stephen Hemminger 2024-11-18 7:04 ` Hemant Agrawal 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger 16 siblings, 1 reply; 44+ messages in thread From: Stephen Hemminger @ 2024-11-15 6:05 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, nipun.gupta, stable, Hemant Agrawal, Sachin Saxena, Nipun Gupta The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 2d3788631862 ("net/dpaa2: support atomic queues") Cc: nipun.gupta@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/dpaa2/dpaa2_rxtx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index e3b6c7e460..e253bccecd 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -933,7 +933,7 @@ dpaa2_dev_process_atomic_event(struct qbman_swp *swp __rte_unused, dqrr_index = qbman_get_dqrr_idx(dq); *dpaa2_seqn(ev->mbuf) = dqrr_index + 1; DPAA2_PER_LCORE_DQRR_SIZE++; - DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; + DPAA2_PER_LCORE_DQRR_HELD |= UINT64_C(1) << dqrr_index; DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = ev->mbuf; } @@ -1317,7 +1317,7 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) flags[loop] = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dqrr_index); + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dqrr_index); *dpaa2_seqn(*bufs) = DPAA2_INVALID_MBUF_SEQN; } @@ -1575,7 +1575,7 @@ dpaa2_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, dq_idx = *dpaa2_seqn(m) - 1; qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dq_idx); } *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 16/16] net/dpaa2: fix bitmask truncation 2024-11-15 6:05 ` [PATCH 16/16] net/dpaa2: " Stephen Hemminger @ 2024-11-18 7:04 ` Hemant Agrawal 0 siblings, 0 replies; 44+ messages in thread From: Hemant Agrawal @ 2024-11-18 7:04 UTC (permalink / raw) To: Stephen Hemminger, dev Cc: nipun.gupta, stable, Hemant Agrawal, Sachin Saxena, Nipun Gupta Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> On 15-11-2024 11:35, Stephen Hemminger wrote: > The dqrr_held mask is 64 bit but updates were getting truncated > because 1 is of type int (32 bit) and the result shift of int is of > type int (32 bit); therefore any value >= 32 would get truncated. > > Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ > > Fixes: 2d3788631862 ("net/dpaa2: support atomic queues") > Cc: nipun.gupta@nxp.com > Cc: stable@dpdk.org > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/net/dpaa2/dpaa2_rxtx.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c > index e3b6c7e460..e253bccecd 100644 > --- a/drivers/net/dpaa2/dpaa2_rxtx.c > +++ b/drivers/net/dpaa2/dpaa2_rxtx.c > @@ -933,7 +933,7 @@ dpaa2_dev_process_atomic_event(struct qbman_swp *swp __rte_unused, > dqrr_index = qbman_get_dqrr_idx(dq); > *dpaa2_seqn(ev->mbuf) = dqrr_index + 1; > DPAA2_PER_LCORE_DQRR_SIZE++; > - DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; > + DPAA2_PER_LCORE_DQRR_HELD |= UINT64_C(1) << dqrr_index; > DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = ev->mbuf; > } > > @@ -1317,7 +1317,7 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) > flags[loop] = QBMAN_ENQUEUE_FLAG_DCA | > dqrr_index; > DPAA2_PER_LCORE_DQRR_SIZE--; > - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dqrr_index); > + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dqrr_index); > *dpaa2_seqn(*bufs) = DPAA2_INVALID_MBUF_SEQN; > } > > @@ -1575,7 +1575,7 @@ dpaa2_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, > dq_idx = *dpaa2_seqn(m) - 1; > qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); > DPAA2_PER_LCORE_DQRR_SIZE--; > - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); > + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dq_idx); > } > *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; > } ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 00/19] minor fixes from PVS studio bug list 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger ` (15 preceding siblings ...) 2024-11-15 6:05 ` [PATCH 16/16] net/dpaa2: " Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 01/19] common/cnxk: remove duplicate condition Stephen Hemminger ` (18 more replies) 16 siblings, 19 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger More bug fixes from PVS studio bug reports. And one other fix to ptpclient. Stephen Hemminger (19): common/cnxk: remove duplicate condition net/cpfl: avoid calling log (printf) with null raw/cnxk_gpio: fix file descriptor leak net/ntnic: remove dead code net/i40e: remove duplicate code eal: fix out of bounds access in devargs net/qede: fix missing debug string examples/ptpclient: replace rte_memcpy with assignment examples/ptpclient: fix self memcmp net/octeon_ep: remove duplicate code net/hinic: fix flow type bitmask overflow crypto/dpaa2_sec: fix bitmask truncation crypto/dpaa_sec: fix bitmask truncation event/dpaa: fix bitmask truncation net/dpaa: fix bitmask truncation net/dpaa2: fix bitmask truncation net/qede: don't use same loop variable twice examples/l3fwd: fix operator precedence bugs common/cnxk: fix null ptr check v2 - add a few more fixes, and rebase drivers/common/cnxk/cnxk_security.c | 16 ++++++++------ drivers/common/cnxk/roc_bphy_cgx.c | 12 +++++------ drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 8 +++---- drivers/crypto/dpaa_sec/dpaa_sec.c | 7 +++--- drivers/event/dpaa/dpaa_eventdev.c | 10 ++++----- drivers/net/cpfl/cpfl_ethdev.c | 2 +- drivers/net/dpaa/dpaa_rxtx.c | 7 +++--- drivers/net/dpaa2/dpaa2_rxtx.c | 6 +++--- drivers/net/hinic/hinic_pmd_flow.c | 14 ++++++------ drivers/net/i40e/i40e_fdir.c | 10 ++++----- drivers/net/ntnic/ntnic_ethdev.c | 8 ------- drivers/net/octeon_ep/otx_ep_ethdev.c | 9 ++------ drivers/net/qede/base/ecore_dcbx.c | 8 +++---- drivers/net/qede/qede_debug.c | 5 +++++ drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c | 24 +++++++++++++-------- examples/l3fwd-power/main.c | 4 ++-- examples/l3fwd/main.c | 5 +++-- examples/ptpclient/ptpclient.c | 10 +++------ lib/eal/common/eal_common_devargs.c | 2 +- 19 files changed, 81 insertions(+), 86 deletions(-) -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 01/19] common/cnxk: remove duplicate condition 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 02/19] net/cpfl: avoid calling log (printf) with null Stephen Hemminger ` (17 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Anoob Joseph The same condition is checked twice in an if statement. Harmless, but redundant. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Anoob Joseph <anoobj@marvell.com> --- drivers/common/cnxk/cnxk_security.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/common/cnxk/cnxk_security.c b/drivers/common/cnxk/cnxk_security.c index c2871ad2bd..9446c14ac8 100644 --- a/drivers/common/cnxk/cnxk_security.c +++ b/drivers/common/cnxk/cnxk_security.c @@ -174,9 +174,11 @@ ot_ipsec_sa_common_param_fill(union roc_ot_ipsec_sa_word2 *w2, uint8_t *cipher_k } /* Set AES key length */ - if (w2->s.enc_type == ROC_IE_SA_ENC_AES_CBC || w2->s.enc_type == ROC_IE_SA_ENC_AES_CCM || - w2->s.enc_type == ROC_IE_SA_ENC_AES_CTR || w2->s.enc_type == ROC_IE_SA_ENC_AES_GCM || - w2->s.enc_type == ROC_IE_SA_ENC_AES_CCM || w2->s.auth_type == ROC_IE_SA_AUTH_AES_GMAC) { + if (w2->s.enc_type == ROC_IE_SA_ENC_AES_CBC || + w2->s.enc_type == ROC_IE_SA_ENC_AES_CTR || + w2->s.enc_type == ROC_IE_SA_ENC_AES_GCM || + w2->s.enc_type == ROC_IE_SA_ENC_AES_CCM || + w2->s.auth_type == ROC_IE_SA_AUTH_AES_GMAC) { switch (length) { case ROC_CPT_AES128_KEY_LEN: w2->s.aes_key_len = ROC_IE_SA_AES_KEY_LEN_128; @@ -879,9 +881,11 @@ on_ipsec_sa_ctl_set(struct rte_security_ipsec_xform *ipsec, } /* Set AES key length */ - if (ctl->enc_type == ROC_IE_SA_ENC_AES_CBC || ctl->enc_type == ROC_IE_SA_ENC_AES_CCM || - ctl->enc_type == ROC_IE_SA_ENC_AES_CTR || ctl->enc_type == ROC_IE_SA_ENC_AES_GCM || - ctl->enc_type == ROC_IE_SA_ENC_AES_CCM || ctl->auth_type == ROC_IE_SA_AUTH_AES_GMAC) { + if (ctl->enc_type == ROC_IE_SA_ENC_AES_CBC || + ctl->enc_type == ROC_IE_SA_ENC_AES_CTR || + ctl->enc_type == ROC_IE_SA_ENC_AES_GCM || + ctl->enc_type == ROC_IE_SA_ENC_AES_CCM || + ctl->auth_type == ROC_IE_SA_AUTH_AES_GMAC) { switch (aes_key_len) { case 16: ctl->aes_key_len = ROC_IE_SA_AES_KEY_LEN_128; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 02/19] net/cpfl: avoid calling log (printf) with null 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 01/19] common/cnxk: remove duplicate condition Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 03/19] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger ` (16 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger The log message would always refer to str variable which is NULL here. Looks like author intended to print original parameter. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/cpfl/cpfl_ethdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c index 6f6707a0bd..1817221652 100644 --- a/drivers/net/cpfl/cpfl_ethdev.c +++ b/drivers/net/cpfl/cpfl_ethdev.c @@ -1580,7 +1580,7 @@ parse_repr(const char *key __rte_unused, const char *value, void *args) RTE_DIM(eth_da->representor_ports)); done: if (str == NULL) { - PMD_DRV_LOG(ERR, "wrong representor format: %s", str); + PMD_DRV_LOG(ERR, "wrong representor format: %s", value); return -1; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 03/19] raw/cnxk_gpio: fix file descriptor leak 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 01/19] common/cnxk: remove duplicate condition Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 02/19] net/cpfl: avoid calling log (printf) with null Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 04/19] net/ntnic: remove dead code Stephen Hemminger ` (15 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, tduszynski The function would leak file if fscanf failed. There is a working version in other file, clone that. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 0e6557b448fa ("raw/cnxk_gpio: add self test") Cc: tduszynski@marvell.com Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c | 24 ++++++++++++++-------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c b/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c index 2f3973a7b5..a0d9942f20 100644 --- a/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c +++ b/drivers/raw/cnxk_gpio/cnxk_gpio_selftest.c @@ -34,24 +34,30 @@ cnxk_gpio_attr_exists(const char *attr) static int cnxk_gpio_read_attr(char *attr, char *val) { + int ret, ret2; FILE *fp; - int ret; fp = fopen(attr, "r"); if (!fp) return -errno; ret = fscanf(fp, "%s", val); - if (ret < 0) - return -errno; - if (ret != 1) - return -EIO; + if (ret < 0) { + ret = -errno; + goto out; + } + if (ret != 1) { + ret = -EIO; + goto out; + } - ret = fclose(fp); - if (ret) - return -errno; + ret = 0; +out: + ret2 = fclose(fp); + if (!ret) + ret = ret2; - return 0; + return ret; } #define CNXK_GPIO_ERR_STR(err, str, ...) do { \ -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 04/19] net/ntnic: remove dead code 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (2 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 03/19] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 05/19] net/i40e: remove duplicate code Stephen Hemminger ` (14 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger The loop to update speed would not work because num_port_speeds was always zero so it did nothing. And the array of pls_mbps was only used inside the loop but never set. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/ntnic/ntnic_ethdev.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c index 2a2643a106..467fea4bf2 100644 --- a/drivers/net/ntnic/ntnic_ethdev.c +++ b/drivers/net/ntnic/ntnic_ethdev.c @@ -2037,8 +2037,6 @@ nthw_pci_dev_init(struct rte_pci_device *pci_dev) uint32_t exception_path = 0; struct flow_queue_id_s queue_ids[MAX_QUEUES]; int n_phy_ports; - struct port_link_speed pls_mbps[NUM_ADAPTER_PORTS_MAX] = { 0 }; - int num_port_speeds = 0; enum flow_eth_dev_profile profile = FLOW_ETH_DEV_PROFILE_INLINE; NT_LOG_DBGX(DBG, NTNIC, "Dev %s PF #%i Init : %02x:%02x:%i", pci_dev->name, @@ -2178,12 +2176,6 @@ nthw_pci_dev_init(struct rte_pci_device *pci_dev) p_nt_drv->b_shutdown = false; p_nt_drv->adapter_info.pb_shutdown = &p_nt_drv->b_shutdown; - for (int i = 0; i < num_port_speeds; ++i) { - struct adapter_info_s *p_adapter_info = &p_nt_drv->adapter_info; - nt_link_speed_t link_speed = convert_link_speed(pls_mbps[i].link_speed); - port_ops->set_link_speed(p_adapter_info, i, link_speed); - } - /* store context */ store_pdrv(p_drv); -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 05/19] net/i40e: remove duplicate code 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (3 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 04/19] net/ntnic: remove dead code Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 06/19] eal: fix out of bounds access in devargs Stephen Hemminger ` (13 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Bruce Richardson There are two branches in the cascading if/else that have same condition and code; remove one. Update the code to follow DPDK style where all statements in if should have brackets if any leg requires them. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 2ab5c84605f0 ("net/i40e: fix ESP flow creation") Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Bruce Richardson <bruce.richardson@intel.com> --- drivers/net/i40e/i40e_fdir.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c index 47f79ecf11..6861bea99a 100644 --- a/drivers/net/i40e/i40e_fdir.c +++ b/drivers/net/i40e/i40e_fdir.c @@ -599,18 +599,16 @@ i40e_flow_fdir_fill_eth_ip_head(struct i40e_pf *pf, } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV4_UDP) { len = fill_ip4_head(fdir_input, raw_pkt, IPPROTO_UDP, len, ether_type); - } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV4_UDP) { - len = fill_ip4_head(fdir_input, raw_pkt, IPPROTO_UDP, - len, ether_type); - } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6) + } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6) { len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_ESP, len, ether_type); - else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6_UDP) + } else if (cus_pctype->index == I40E_CUSTOMIZED_ESP_IPV6_UDP) { len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_UDP, len, ether_type); - else if (cus_pctype->index == I40E_CUSTOMIZED_IPV6_L2TPV3) + } else if (cus_pctype->index == I40E_CUSTOMIZED_IPV6_L2TPV3) { len = fill_ip6_head(fdir_input, raw_pkt, IPPROTO_L2TP, len, ether_type); + } } else { PMD_DRV_LOG(ERR, "unknown pctype %u.", fdir_input->pctype); return -1; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 06/19] eal: fix out of bounds access in devargs 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (4 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 05/19] net/i40e: remove duplicate code Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 07/19] net/qede: fix missing debug string Stephen Hemminger ` (12 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, xuemingl, stable The code for parsing layers in devargs could reference past the end of layers[] array on stack. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 9a1a9e4a2ddd ("devargs: support path value with global device syntax") Cc: xuemingl@nvidia.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- lib/eal/common/eal_common_devargs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/eal/common/eal_common_devargs.c b/lib/eal/common/eal_common_devargs.c index a64805b268..dd857fc839 100644 --- a/lib/eal/common/eal_common_devargs.c +++ b/lib/eal/common/eal_common_devargs.c @@ -88,7 +88,7 @@ rte_devargs_layers_parse(struct rte_devargs *devargs, s = devargs->data; while (s != NULL) { - if (nblayer > RTE_DIM(layers)) { + if (nblayer >= RTE_DIM(layers)) { ret = -E2BIG; goto get_out; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 07/19] net/qede: fix missing debug string 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (5 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 06/19] eal: fix out of bounds access in devargs Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 08/19] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger ` (11 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, rmody, stable The array of debug status strings did not match possible enum values. Add the missing element and a static assert to make sure the table has all possible values. For more complete description see. Link: https://pvs-studio.com/en/blog/posts/cpp/1176/ Fixes: ec55c118792b ("net/qede: add infrastructure for debug data collection") Cc: rmody@marvell.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/qede/qede_debug.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/qede/qede_debug.c b/drivers/net/qede/qede_debug.c index 18f2d988fb..1d3147b724 100644 --- a/drivers/net/qede/qede_debug.c +++ b/drivers/net/qede/qede_debug.c @@ -4,6 +4,7 @@ * www.marvell.com */ +#include <assert.h> #include <rte_common.h> #include "base/bcm_osal.h" #include "base/ecore.h" @@ -82,6 +83,7 @@ static const char * const s_mem_group_names[] = { "TM_MEM", "TASK_CFC_MEM", }; +static_assert(RTE_DIM(s_mem_group_names) == MEM_GROUPS_NUM, "memory group string mismatch"); /* Idle check conditions */ @@ -5614,6 +5616,8 @@ static const char * const s_status_str[] = { /* DBG_STATUS_INVALID_FILTER_TRIGGER_DWORDS */ "The filter/trigger constraint dword offsets are not enabled for recording", + /* DBG_STATUS_NO_MATCHING_FRAMING_MODE */ + "No matching frame mode", /* DBG_STATUS_VFC_READ_ERROR */ "Error reading from VFC", @@ -5759,6 +5763,7 @@ static const char * const s_status_str[] = { /* DBG_STATUS_MISSING_TRIGGER_STATE_STORM */ "When triggering on Storm data, the Storm to trigger on must be specified" }; +static_assert(RTE_DIM(s_status_str) == MAX_DBG_STATUS, "status string table mismatch"); /* Idle check severity names array */ static const char * const s_idle_chk_severity_str[] = { -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 08/19] examples/ptpclient: replace rte_memcpy with assignment 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (6 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 07/19] net/qede: fix missing debug string Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 09/19] examples/ptpclient: fix self memcmp Stephen Hemminger ` (10 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Don't use rte_memcpy() when not necessary. Structure assignment is as fast and type safe. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- examples/ptpclient/ptpclient.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c index 23fa487081..2ec532d058 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -415,9 +415,7 @@ parse_sync(struct ptpv2_time_receiver_ordinary *ptp_data, uint16_t rx_tstamp_idx ptp_data->seqID_SYNC = rte_be_to_cpu_16(ptp_hdr->seq_id); if (ptp_data->ptpset == 0) { - rte_memcpy(&ptp_data->transmitter_clock_id, - &ptp_hdr->source_port_id.clock_id, - sizeof(struct clock_id)); + ptp_data->transmitter_clock_id = ptp_hdr->source_port_id.clock_id; ptp_data->ptpset = 1; } @@ -522,9 +520,7 @@ parse_fup(struct ptpv2_time_receiver_ordinary *ptp_data) client_clkid->id[6] = eth_hdr->src_addr.addr_bytes[4]; client_clkid->id[7] = eth_hdr->src_addr.addr_bytes[5]; - rte_memcpy(&ptp_data->client_clock_id, - client_clkid, - sizeof(struct clock_id)); + ptp_data->client_clock_id = *client_clkid; /* Enable flag for hardware timestamping. */ created_pkt->ol_flags |= RTE_MBUF_F_TX_IEEE1588_TMST; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 09/19] examples/ptpclient: fix self memcmp 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (7 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 08/19] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 10/19] net/octeon_ep: remove duplicate code Stephen Hemminger ` (9 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, danielx.t.mrzyglod, stable Calling memcmp on same structure will always be true. Replace with same conditional used elsewhere. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: ab129e9065a5 ("examples/ptpclient: add minimal PTP client") Cc: danielx.t.mrzyglod@intel.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- examples/ptpclient/ptpclient.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c index 2ec532d058..d6dff2eb7e 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -419,7 +419,7 @@ parse_sync(struct ptpv2_time_receiver_ordinary *ptp_data, uint16_t rx_tstamp_idx ptp_data->ptpset = 1; } - if (memcmp(&ptp_hdr->source_port_id.clock_id, + if (memcmp(&ptp_data->transmitter_clock_id, &ptp_hdr->source_port_id.clock_id, sizeof(struct clock_id)) == 0) { -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 10/19] net/octeon_ep: remove duplicate code 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (8 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 09/19] examples/ptpclient: fix self memcmp Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 11/19] net/hinic: fix flow type bitmask overflow Stephen Hemminger ` (8 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Both sides of the if in uninit are using same code. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/octeon_ep/otx_ep_ethdev.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/net/octeon_ep/otx_ep_ethdev.c b/drivers/net/octeon_ep/otx_ep_ethdev.c index b4f8baf3b3..8b14734b0c 100644 --- a/drivers/net/octeon_ep/otx_ep_ethdev.c +++ b/drivers/net/octeon_ep/otx_ep_ethdev.c @@ -721,14 +721,9 @@ static const struct eth_dev_ops otx_ep_eth_dev_ops = { static int otx_ep_eth_dev_uninit(struct rte_eth_dev *eth_dev) { - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { - eth_dev->dev_ops = NULL; - eth_dev->rx_pkt_burst = NULL; - eth_dev->tx_pkt_burst = NULL; - return 0; - } + if (rte_eal_process_type() == RTE_PROC_PRIMARY) + otx_ep_mbox_uninit(eth_dev); - otx_ep_mbox_uninit(eth_dev); eth_dev->dev_ops = NULL; eth_dev->rx_pkt_burst = NULL; eth_dev->tx_pkt_burst = NULL; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 11/19] net/hinic: fix flow type bitmask overflow 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (9 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 10/19] net/octeon_ep: remove duplicate code Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 12/19] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger ` (7 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, cloud.wangxiaoyun, stable The type mask is 64 bit value, doing a shift of literal 1 (32 bit) will result in int type (32 bit) and cause truncation. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: f4ca3fd54c4d ("net/hinic: create and destroy flow director filter") Cc: cloud.wangxiaoyun@huawei.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/hinic/hinic_pmd_flow.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/hinic/hinic_pmd_flow.c b/drivers/net/hinic/hinic_pmd_flow.c index 8fdd5a35be..6b1ca6ff88 100644 --- a/drivers/net/hinic/hinic_pmd_flow.c +++ b/drivers/net/hinic/hinic_pmd_flow.c @@ -1979,8 +1979,8 @@ static int hinic_lookup_new_filter(struct hinic_5tuple_filter *filter, return -EINVAL; } - if (!(filter_info->type_mask & (1 << type_id))) { - filter_info->type_mask |= 1 << type_id; + if (!(filter_info->type_mask & (UINT64_C(1) << type_id))) { + filter_info->type_mask |= UINT64_C(1) << type_id; filter->index = type_id; filter_info->pkt_filters[type_id].enable = true; filter_info->pkt_filters[type_id].pkt_proto = @@ -2138,7 +2138,7 @@ static void hinic_remove_5tuple_filter(struct rte_eth_dev *dev, filter_info->pkt_type = 0; filter_info->qid = 0; filter_info->pkt_filters[filter->index].qid = 0; - filter_info->type_mask &= ~(1 << (filter->index)); + filter_info->type_mask &= ~(UINT64_C(1) << filter->index); TAILQ_REMOVE(&filter_info->fivetuple_list, filter, entries); rte_free(filter); @@ -2268,8 +2268,8 @@ hinic_ethertype_filter_insert(struct hinic_filter_info *filter_info, if (id < 0) return -EINVAL; - if (!(filter_info->type_mask & (1 << id))) { - filter_info->type_mask |= 1 << id; + if (!(filter_info->type_mask & (UINT64_C(1) << id))) { + filter_info->type_mask |= UINT64_C(1) << id; filter_info->pkt_filters[id].pkt_proto = ethertype_filter->pkt_proto; filter_info->pkt_filters[id].enable = ethertype_filter->enable; @@ -2289,7 +2289,7 @@ hinic_ethertype_filter_remove(struct hinic_filter_info *filter_info, return; filter_info->pkt_type = 0; - filter_info->type_mask &= ~(1 << idx); + filter_info->type_mask &= ~(UINT64_C(1) << idx); filter_info->pkt_filters[idx].pkt_proto = (uint16_t)0; filter_info->pkt_filters[idx].enable = FALSE; filter_info->pkt_filters[idx].qid = 0; @@ -2355,7 +2355,7 @@ hinic_add_del_ethertype_filter(struct rte_eth_dev *dev, if (i < 0) return -EINVAL; - if ((filter_info->type_mask & (1 << i))) { + if ((filter_info->type_mask & (UINT64_C(1) << i))) { filter_info->pkt_filters[i].enable = FALSE; (void)hinic_set_fdir_filter(nic_dev->hwdev, filter_info->pkt_type, -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 12/19] crypto/dpaa2_sec: fix bitmask truncation 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (10 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 11/19] net/hinic: fix flow type bitmask overflow Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 13/19] crypto/dpaa_sec: " Stephen Hemminger ` (6 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, ashish.jain, stable, Hemant Agrawal The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: a77db24643b7 ("crypto/dpaa2_sec: support atomic queues") Cc: ashish.jain@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index ec6577f64c..7ad8fd47dd 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -1491,8 +1491,8 @@ dpaa2_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, if (*dpaa2_seqn((*ops)->sym->m_src)) { if (*dpaa2_seqn((*ops)->sym->m_src) & QBMAN_ENQUEUE_FLAG_DCA) { DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << - *dpaa2_seqn((*ops)->sym->m_src) & + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << + *dpaa2_seqn((*ops)->sym->m_src) & QBMAN_EQCR_DCA_IDXMASK); } flags[loop] = *dpaa2_seqn((*ops)->sym->m_src); @@ -1772,7 +1772,7 @@ dpaa2_sec_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, dq_idx = *dpaa2_seqn(m) - 1; qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dq_idx); } *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; } @@ -4055,7 +4055,7 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused, dqrr_index = qbman_get_dqrr_idx(dq); *dpaa2_seqn(crypto_op->sym->m_src) = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; DPAA2_PER_LCORE_DQRR_SIZE++; - DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; + DPAA2_PER_LCORE_DQRR_HELD |= UINT64_C(1) << dqrr_index; DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = crypto_op->sym->m_src; ev->event_ptr = crypto_op; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 13/19] crypto/dpaa_sec: fix bitmask truncation 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (11 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 12/19] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 14/19] event/dpaa: " Stephen Hemminger ` (5 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, akhil.goyal, stable, Hemant Agrawal The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: fe3688ba7950 ("crypto/dpaa_sec: support event crypto adapter") Cc: akhil.goyal@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> --- drivers/crypto/dpaa_sec/dpaa_sec.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 3fa88ca968..e117cd77a6 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -1907,13 +1907,12 @@ dpaa_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, op = *(ops++); if (*dpaa_seqn(op->sym->m_src) != 0) { index = *dpaa_seqn(op->sym->m_src) - 1; - if (DPAA_PER_LCORE_DQRR_HELD & (1 << index)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << index)) { /* QM_EQCR_DCA_IDXMASK = 0x0f */ flags[loop] = ((index & 0x0f) << 8); flags[loop] |= QMAN_ENQUEUE_FLAG_DCA; DPAA_PER_LCORE_DQRR_SIZE--; - DPAA_PER_LCORE_DQRR_HELD &= - ~(1 << index); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << index); } } @@ -3500,7 +3499,7 @@ dpaa_sec_process_atomic_event(void *event, /* Save active dqrr entries */ index = ((uintptr_t)dqrr >> 6) & (16/*QM_DQRR_SIZE*/ - 1); DPAA_PER_LCORE_DQRR_SIZE++; - DPAA_PER_LCORE_DQRR_HELD |= 1 << index; + DPAA_PER_LCORE_DQRR_HELD |= UINT64_C(1) << index; DPAA_PER_LCORE_DQRR_MBUF(index) = ctx->op->sym->m_src; ev->impl_opaque = index + 1; *dpaa_seqn(ctx->op->sym->m_src) = (uint32_t)index + 1; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 14/19] event/dpaa: fix bitmask truncation 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (12 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 13/19] crypto/dpaa_sec: " Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 15/19] net/dpaa: " Stephen Hemminger ` (4 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, sunil.kori, stable, Hemant Agrawal More bitmask truncation from mask computation. Fixes: 0ee17f79ebd0 ("event/dpaa: add enqueue/dequeue") Cc: sunil.kori@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> --- drivers/event/dpaa/dpaa_eventdev.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/event/dpaa/dpaa_eventdev.c b/drivers/event/dpaa/dpaa_eventdev.c index 853cc1ecf9..400e0ecd1c 100644 --- a/drivers/event/dpaa/dpaa_eventdev.c +++ b/drivers/event/dpaa/dpaa_eventdev.c @@ -102,7 +102,7 @@ dpaa_event_enqueue_burst(void *port, const struct rte_event ev[], qman_dca_index(ev[i].impl_opaque, 0); mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); DPAA_PER_LCORE_DQRR_SIZE--; break; default: @@ -199,11 +199,11 @@ dpaa_event_dequeue_burst(void *port, struct rte_event ev[], /* Check if there are atomic contexts to be released */ i = 0; while (DPAA_PER_LCORE_DQRR_SIZE) { - if (DPAA_PER_LCORE_DQRR_HELD & (1 << i)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << i)) { qman_dca_index(i, 0); mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); DPAA_PER_LCORE_DQRR_SIZE--; } i++; @@ -263,11 +263,11 @@ dpaa_event_dequeue_burst_intr(void *port, struct rte_event ev[], /* Check if there are atomic contexts to be released */ i = 0; while (DPAA_PER_LCORE_DQRR_SIZE) { - if (DPAA_PER_LCORE_DQRR_HELD & (1 << i)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << i)) { qman_dca_index(i, 0); mbuf = DPAA_PER_LCORE_DQRR_MBUF(i); *dpaa_seqn(mbuf) = DPAA_INVALID_MBUF_SEQN; - DPAA_PER_LCORE_DQRR_HELD &= ~(1 << i); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << i); DPAA_PER_LCORE_DQRR_SIZE--; } i++; -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 15/19] net/dpaa: fix bitmask truncation 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (13 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 14/19] event/dpaa: " Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 16/19] net/dpaa2: " Stephen Hemminger ` (3 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, sunil.kori, stable, Hemant Agrawal The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 5e7455931442 ("net/dpaa: support Rx queue configurations with eventdev") Cc: sunil.kori@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> --- drivers/net/dpaa/dpaa_rxtx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index 247e7b92ba..05bd73becf 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -842,7 +842,7 @@ dpaa_rx_cb_atomic(void *event, /* Save active dqrr entries */ index = DQRR_PTR2IDX(dqrr); DPAA_PER_LCORE_DQRR_SIZE++; - DPAA_PER_LCORE_DQRR_HELD |= 1 << index; + DPAA_PER_LCORE_DQRR_HELD |= UINT64_C(1) << index; DPAA_PER_LCORE_DQRR_MBUF(index) = mbuf; ev->impl_opaque = index + 1; *dpaa_seqn(mbuf) = (uint32_t)index + 1; @@ -1338,13 +1338,12 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) seqn = *dpaa_seqn(mbuf); if (seqn != DPAA_INVALID_MBUF_SEQN) { index = seqn - 1; - if (DPAA_PER_LCORE_DQRR_HELD & (1 << index)) { + if (DPAA_PER_LCORE_DQRR_HELD & (UINT64_C(1) << index)) { flags[loop] = ((index & QM_EQCR_DCA_IDXMASK) << 8); flags[loop] |= QMAN_ENQUEUE_FLAG_DCA; DPAA_PER_LCORE_DQRR_SIZE--; - DPAA_PER_LCORE_DQRR_HELD &= - ~(1 << index); + DPAA_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << index); } } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 16/19] net/dpaa2: fix bitmask truncation 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (14 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 15/19] net/dpaa: " Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 17/19] net/qede: don't use same loop variable twice Stephen Hemminger ` (2 subsequent siblings) 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, nipun.gupta, stable, Hemant Agrawal The dqrr_held mask is 64 bit but updates were getting truncated because 1 is of type int (32 bit) and the result shift of int is of type int (32 bit); therefore any value >= 32 would get truncated. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 2d3788631862 ("net/dpaa2: support atomic queues") Cc: nipun.gupta@nxp.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> --- drivers/net/dpaa2/dpaa2_rxtx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index e3b6c7e460..e253bccecd 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -933,7 +933,7 @@ dpaa2_dev_process_atomic_event(struct qbman_swp *swp __rte_unused, dqrr_index = qbman_get_dqrr_idx(dq); *dpaa2_seqn(ev->mbuf) = dqrr_index + 1; DPAA2_PER_LCORE_DQRR_SIZE++; - DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; + DPAA2_PER_LCORE_DQRR_HELD |= UINT64_C(1) << dqrr_index; DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = ev->mbuf; } @@ -1317,7 +1317,7 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) flags[loop] = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dqrr_index); + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dqrr_index); *dpaa2_seqn(*bufs) = DPAA2_INVALID_MBUF_SEQN; } @@ -1575,7 +1575,7 @@ dpaa2_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, dq_idx = *dpaa2_seqn(m) - 1; qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); + DPAA2_PER_LCORE_DQRR_HELD &= ~(UINT64_C(1) << dq_idx); } *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 17/19] net/qede: don't use same loop variable twice 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (15 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 16/19] net/dpaa2: " Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 18/19] examples/l3fwd: fix operator precedence bugs Stephen Hemminger 2024-11-18 18:21 ` [PATCH v2 19/19] common/cnxk: fix null ptr check Stephen Hemminger 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, rasesh.mody, stable Using variable in outer loop, and inner loop is obvious bug. This bug is in base code, so likely on other platforms as well. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: 81dba2b2ff61 ("net/qede/base: add LLDP support") Cc: rasesh.mody@cavium.com Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/qede/base/ecore_dcbx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/qede/base/ecore_dcbx.c b/drivers/net/qede/base/ecore_dcbx.c index 31234f18cf..72bbedd65a 100644 --- a/drivers/net/qede/base/ecore_dcbx.c +++ b/drivers/net/qede/base/ecore_dcbx.c @@ -1363,7 +1363,7 @@ ecore_lldp_mib_update_event(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt) struct ecore_dcbx_mib_meta_data data; enum _ecore_status_t rc = ECORE_SUCCESS; struct lldp_received_tlvs_s tlvs; - int i; + int i, j; for (i = 0; i < LLDP_MAX_LLDP_AGENTS; i++) { OSAL_MEM_ZERO(&data, sizeof(data)); @@ -1381,9 +1381,9 @@ ecore_lldp_mib_update_event(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt) if (!tlvs.length) continue; - for (i = 0; i < MAX_TLV_BUFFER; i++) - tlvs.tlvs_buffer[i] = - OSAL_CPU_TO_BE32(tlvs.tlvs_buffer[i]); + for (j = 0; j < MAX_TLV_BUFFER; j++) + tlvs.tlvs_buffer[j] = + OSAL_CPU_TO_BE32(tlvs.tlvs_buffer[j]); OSAL_LLDP_RX_TLVS(p_hwfn, tlvs.tlvs_buffer, tlvs.length); } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 18/19] examples/l3fwd: fix operator precedence bugs 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (16 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 17/19] net/qede: don't use same loop variable twice Stephen Hemminger @ 2024-11-18 18:20 ` Stephen Hemminger 2024-11-18 18:21 ` [PATCH v2 19/19] common/cnxk: fix null ptr check Stephen Hemminger 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:20 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, stable The expression: if ((socketid = rte_lcore_to_socket_id(lcore) != 0) && gets evaluated as sockeid = (rte_lcore_to_socket_id(lcore) != 0) which is not what was intended. This is goes all the way back to first release. Link: https://pvs-studio.com/en/blog/posts/cpp/1183/ Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- examples/l3fwd-power/main.c | 4 ++-- examples/l3fwd/main.c | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c index ae8b55924e..7957ea6c95 100644 --- a/examples/l3fwd-power/main.c +++ b/examples/l3fwd-power/main.c @@ -1412,8 +1412,8 @@ check_lcore_params(void) "mask\n", lcore); return -1; } - if ((socketid = rte_lcore_to_socket_id(lcore) != 0) && - (numa_on == 0)) { + socketid = rte_lcore_to_socket_id(lcore); + if (socketid != 0 && numa_on == 0) { printf("warning: lcore %u is on socket %d with numa " "off\n", lcore, socketid); } diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 6e2155e005..14076e07cc 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -307,8 +307,9 @@ check_lcore_params(void) printf("error: lcore %u is not enabled in lcore mask\n", lcore); return -1; } - if ((socketid = rte_lcore_to_socket_id(lcore) != 0) && - (numa_on == 0)) { + + socketid = rte_lcore_to_socket_id(lcore); + if (socketid != 0 && numa_on == 0) { printf("warning: lcore %u is on socket %d with numa off\n", lcore, socketid); } -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v2 19/19] common/cnxk: fix null ptr check 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (17 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 18/19] examples/l3fwd: fix operator precedence bugs Stephen Hemminger @ 2024-11-18 18:21 ` Stephen Hemminger 18 siblings, 0 replies; 44+ messages in thread From: Stephen Hemminger @ 2024-11-18 18:21 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, tduszynski The pointer mode is used then checked which is a bug reported by PVS studio and Coverity. Fixes: bd2fd34ab86f ("common/cnxk: sync eth mode change command with firmware") Cc: tduszynski@marvell.com Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/common/cnxk/roc_bphy_cgx.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/common/cnxk/roc_bphy_cgx.c b/drivers/common/cnxk/roc_bphy_cgx.c index 4f43605e10..6e5cfc7b1d 100644 --- a/drivers/common/cnxk/roc_bphy_cgx.c +++ b/drivers/common/cnxk/roc_bphy_cgx.c @@ -369,20 +369,20 @@ roc_bphy_cgx_set_link_mode(struct roc_bphy_cgx *roc_cgx, unsigned int lmac, { uint64_t scr1, scr0; + if (!mode) + return -EINVAL; + + if (!roc_cgx) + return -EINVAL; + if (roc_model_is_cn9k() && (mode->use_portm_idx || mode->portm_idx || mode->mode_group_idx)) { return -ENOTSUP; } - if (!roc_cgx) - return -EINVAL; - if (!roc_bphy_cgx_lmac_exists(roc_cgx, lmac)) return -ENODEV; - if (!mode) - return -EINVAL; - scr1 = FIELD_PREP(SCR1_ETH_CMD_ID, ETH_CMD_MODE_CHANGE) | FIELD_PREP(SCR1_ETH_MODE_CHANGE_ARGS_SPEED, mode->speed) | FIELD_PREP(SCR1_ETH_MODE_CHANGE_ARGS_DUPLEX, mode->full_duplex) | -- 2.45.2 ^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2024-11-18 18:24 UTC | newest] Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-11-15 6:05 [PATCH 00/16] small bug fixes from PVS studio bug list Stephen Hemminger 2024-11-15 6:05 ` [PATCH 01/16] common/cnxk: remove duplicate condition Stephen Hemminger 2024-11-15 6:16 ` [EXTERNAL] " Anoob Joseph 2024-11-15 6:05 ` [PATCH 02/16] net/cpfl: avoid calling log (printf) with null Stephen Hemminger 2024-11-15 6:05 ` [PATCH 03/16] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger 2024-11-15 6:05 ` [PATCH 04/16] net/ntnic: remove dead code Stephen Hemminger 2024-11-15 6:05 ` [PATCH 05/16] net/i40e: remove duplicate code Stephen Hemminger 2024-11-15 11:00 ` Bruce Richardson 2024-11-15 6:05 ` [PATCH 06/16] eal: fix out of bounds access in devargs Stephen Hemminger 2024-11-15 6:05 ` [PATCH 07/16] net/qede: fix missing debug string Stephen Hemminger 2024-11-15 6:05 ` [PATCH 08/16] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger 2024-11-15 6:05 ` [PATCH 09/16] examples/ptpclient: fix self memcmp Stephen Hemminger 2024-11-15 6:05 ` [PATCH 10/16] net/octeon_ep: remove duplicate code Stephen Hemminger 2024-11-15 6:05 ` [PATCH 11/16] net/hinic: fix flow type bitmask overflow Stephen Hemminger 2024-11-15 6:05 ` [PATCH 12/16] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger 2024-11-18 7:03 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 13/16] crypto/dpaa_sec: " Stephen Hemminger 2024-11-18 7:03 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 14/16] event/dpaa: " Stephen Hemminger 2024-11-18 7:04 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 15/16] net/dpaa: " Stephen Hemminger 2024-11-18 7:04 ` Hemant Agrawal 2024-11-15 6:05 ` [PATCH 16/16] net/dpaa2: " Stephen Hemminger 2024-11-18 7:04 ` Hemant Agrawal 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 01/19] common/cnxk: remove duplicate condition Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 02/19] net/cpfl: avoid calling log (printf) with null Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 03/19] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 04/19] net/ntnic: remove dead code Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 05/19] net/i40e: remove duplicate code Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 06/19] eal: fix out of bounds access in devargs Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 07/19] net/qede: fix missing debug string Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 08/19] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 09/19] examples/ptpclient: fix self memcmp Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 10/19] net/octeon_ep: remove duplicate code Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 11/19] net/hinic: fix flow type bitmask overflow Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 12/19] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 13/19] crypto/dpaa_sec: " Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 14/19] event/dpaa: " Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 15/19] net/dpaa: " Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 16/19] net/dpaa2: " Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 17/19] net/qede: don't use same loop variable twice Stephen Hemminger 2024-11-18 18:20 ` [PATCH v2 18/19] examples/l3fwd: fix operator precedence bugs Stephen Hemminger 2024-11-18 18:21 ` [PATCH v2 19/19] common/cnxk: fix null ptr check Stephen Hemminger
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).