* [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 ` (17 more replies) 0 siblings, 18 replies; 65+ 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] 65+ 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 ` (16 subsequent siblings) 17 siblings, 1 reply; 65+ 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] 65+ 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; 65+ 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] 65+ 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 ` (15 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (14 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (13 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (12 subsequent siblings) 17 siblings, 1 reply; 65+ 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] 65+ 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; 65+ 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] 65+ 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 ` (11 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (10 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (9 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (8 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (7 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (6 subsequent siblings) 17 siblings, 0 replies; 65+ 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] 65+ 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 ` (5 subsequent siblings) 17 siblings, 1 reply; 65+ 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] 65+ 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; 65+ 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] 65+ 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 ` (4 subsequent siblings) 17 siblings, 1 reply; 65+ 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] 65+ 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; 65+ 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] 65+ 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 ` (3 subsequent siblings) 17 siblings, 1 reply; 65+ 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] 65+ 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; 65+ 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] 65+ 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 ` (2 subsequent siblings) 17 siblings, 1 reply; 65+ 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] 65+ 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; 65+ 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] 65+ 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 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger 17 siblings, 1 reply; 65+ 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] 65+ 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; 65+ 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] 65+ 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 ` (19 more replies) 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger 17 siblings, 20 replies; 65+ 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] 65+ 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 ` (18 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (17 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (16 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (15 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (14 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (13 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (12 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (11 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (10 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (9 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (8 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (7 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (6 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (5 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (4 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (3 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 ` (2 subsequent siblings) 19 siblings, 0 replies; 65+ 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] 65+ 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 2024-11-19 15:22 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Thomas Monjalon 19 siblings, 0 replies; 65+ 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] 65+ 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 2024-11-19 15:22 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Thomas Monjalon 19 siblings, 0 replies; 65+ 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] 65+ messages in thread
* Re: [PATCH v2 00/19] minor fixes from PVS studio bug list 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger ` (18 preceding siblings ...) 2024-11-18 18:21 ` [PATCH v2 19/19] common/cnxk: fix null ptr check Stephen Hemminger @ 2024-11-19 15:22 ` Thomas Monjalon 19 siblings, 0 replies; 65+ messages in thread From: Thomas Monjalon @ 2024-11-19 15:22 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev 18/11/2024 19:20, Stephen Hemminger: > v2 - add a few more fixes, and rebase Please could you resend with "--cc-cmd devtools/get-maintainer.sh" ? Given these patches are not critical I think we can wait for maintainers review, even if it means missing the 24.11 release? ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 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 ` (16 preceding siblings ...) 2024-11-18 18:20 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 01/19] common/cnxk: remove duplicate condition Stephen Hemminger ` (18 more replies) 17 siblings, 19 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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 v3 - rebase; Intel drivers moved 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 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/dpaa/dpaa_rxtx.c | 7 +++--- drivers/net/dpaa2/dpaa2_rxtx.c | 6 +++--- drivers/net/hinic/hinic_pmd_flow.c | 14 ++++++------ drivers/net/intel/cpfl/cpfl_ethdev.c | 2 +- drivers/net/intel/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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 01/19] common/cnxk: remove duplicate condition 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 02/19] net/cpfl: avoid calling log (printf) with null Stephen Hemminger ` (17 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, Anoob Joseph, 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> 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 02/19] net/cpfl: avoid calling log (printf) with null 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 01/19] common/cnxk: remove duplicate condition Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 03/19] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger ` (16 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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/intel/cpfl/cpfl_ethdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/intel/cpfl/cpfl_ethdev.c b/drivers/net/intel/cpfl/cpfl_ethdev.c index 6f6707a0bd..1817221652 100644 --- a/drivers/net/intel/cpfl/cpfl_ethdev.c +++ b/drivers/net/intel/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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 03/19] raw/cnxk_gpio: fix file descriptor leak 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 01/19] common/cnxk: remove duplicate condition Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 02/19] net/cpfl: avoid calling log (printf) with null Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 04/19] net/ntnic: remove dead code Stephen Hemminger ` (15 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, tduszynski, stable, 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 Cc: stable@dpdk.org 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 04/19] net/ntnic: remove dead code 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (2 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 03/19] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 05/19] net/i40e: remove duplicate code Stephen Hemminger ` (14 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 05/19] net/i40e: remove duplicate code 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (3 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 04/19] net/ntnic: remove dead code Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 06/19] eal: fix out of bounds access in devargs Stephen Hemminger ` (13 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, Bruce Richardson, Ian Stokes, Bernard Iremonger, Rory Sexton 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/intel/i40e/i40e_fdir.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/net/intel/i40e/i40e_fdir.c b/drivers/net/intel/i40e/i40e_fdir.c index 349627a2ed..94e3ab44e3 100644 --- a/drivers/net/intel/i40e/i40e_fdir.c +++ b/drivers/net/intel/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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 06/19] eal: fix out of bounds access in devargs 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (4 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 05/19] net/i40e: remove duplicate code Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 07/19] net/qede: fix missing debug string Stephen Hemminger ` (12 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 07/19] net/qede: fix missing debug string 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (5 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 06/19] eal: fix out of bounds access in devargs Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 08/19] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger ` (11 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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 | 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 08/19] examples/ptpclient: replace rte_memcpy with assignment 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (6 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 07/19] net/qede: fix missing debug string Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 09/19] examples/ptpclient: fix self memcmp Stephen Hemminger ` (10 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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 def8de29ff..27d06dd91d 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -363,9 +363,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; } @@ -470,9 +468,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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 09/19] examples/ptpclient: fix self memcmp 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (7 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 08/19] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 10/19] net/octeon_ep: remove duplicate code Stephen Hemminger ` (9 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, danielx.t.mrzyglod, stable, Kirill Rybalchenko, Pablo de Lara, John McNamara 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 27d06dd91d..c344e7db1e 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -367,7 +367,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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 10/19] net/octeon_ep: remove duplicate code 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (8 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 09/19] examples/ptpclient: fix self memcmp Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 11/19] net/hinic: fix flow type bitmask overflow Stephen Hemminger ` (8 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 11/19] net/hinic: fix flow type bitmask overflow 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (9 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 10/19] net/octeon_ep: remove duplicate code Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 12/19] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger ` (7 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 12/19] crypto/dpaa2_sec: fix bitmask truncation 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (10 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 11/19] net/hinic: fix flow type bitmask overflow Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 13/19] crypto/dpaa_sec: " Stephen Hemminger ` (6 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, ashish.jain, stable, Hemant Agrawal, Gagandeep Singh, 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> 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 13/19] crypto/dpaa_sec: fix bitmask truncation 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (11 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 12/19] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 14/19] event/dpaa: " Stephen Hemminger ` (5 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, akhil.goyal, stable, Hemant Agrawal, Gagandeep Singh, 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> 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 14/19] event/dpaa: fix bitmask truncation 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (12 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 13/19] crypto/dpaa_sec: " Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 15/19] net/dpaa: " Stephen Hemminger ` (4 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, sunil.kori, stable, Hemant Agrawal, Sachin Saxena 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 15/19] net/dpaa: fix bitmask truncation 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (13 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 14/19] event/dpaa: " Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 16/19] net/dpaa2: " Stephen Hemminger ` (3 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, sunil.kori, 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: 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 16/19] net/dpaa2: fix bitmask truncation 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (14 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 15/19] net/dpaa: " Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 17/19] net/qede: don't use same loop variable twice Stephen Hemminger ` (2 subsequent siblings) 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 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> 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 bfb5542bbc..cad15d8f75 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 17/19] net/qede: don't use same loop variable twice 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (15 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 16/19] net/dpaa2: " Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 18/19] examples/l3fwd: fix operator precedence bugs Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 19/19] common/cnxk: fix null ptr check Stephen Hemminger 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, rasesh.mody, stable, Devendra Singh Rawat, Alok Prasad 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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 18/19] examples/l3fwd: fix operator precedence bugs 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (16 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 17/19] net/qede: don't use same loop variable twice Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 19/19] common/cnxk: fix null ptr check Stephen Hemminger 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, stable, Anatoly Burakov, David Hunt, Sivaprasad Tummala 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 d279e664b3..e27b8531b5 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 994b7dd8e5..ae3b4f6439 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -311,8 +311,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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
* [PATCH v3 19/19] common/cnxk: fix null ptr check 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger ` (17 preceding siblings ...) 2025-02-05 16:23 ` [PATCH v3 18/19] examples/l3fwd: fix operator precedence bugs Stephen Hemminger @ 2025-02-05 16:23 ` Stephen Hemminger 18 siblings, 0 replies; 65+ messages in thread From: Stephen Hemminger @ 2025-02-05 16:23 UTC (permalink / raw) To: dev Cc: Stephen Hemminger, tduszynski, stable, Nithin Dabilpuram, Kiran Kumar K, Sunil Kumar Kori, Satha Rao, Harman Kalra, Jerin Jacob, Jakub Palider The pointer mode is used then checked which is a bug reported by PVS studio. Fixes: bd2fd34ab86f ("common/cnxk: sync eth mode change command with firmware") Cc: tduszynski@marvell.com Cc: stable@dpdk.org 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 882cf65474..db70bafd9b 100644 --- a/drivers/common/cnxk/roc_bphy_cgx.c +++ b/drivers/common/cnxk/roc_bphy_cgx.c @@ -366,20 +366,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.47.2 ^ permalink raw reply [flat|nested] 65+ messages in thread
end of thread, other threads:[~2025-02-05 16:27 UTC | newest] Thread overview: 65+ 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 2024-11-19 15:22 ` [PATCH v2 00/19] minor fixes from PVS studio bug list Thomas Monjalon 2025-02-05 16:23 ` [PATCH v3 " Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 01/19] common/cnxk: remove duplicate condition Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 02/19] net/cpfl: avoid calling log (printf) with null Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 03/19] raw/cnxk_gpio: fix file descriptor leak Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 04/19] net/ntnic: remove dead code Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 05/19] net/i40e: remove duplicate code Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 06/19] eal: fix out of bounds access in devargs Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 07/19] net/qede: fix missing debug string Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 08/19] examples/ptpclient: replace rte_memcpy with assignment Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 09/19] examples/ptpclient: fix self memcmp Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 10/19] net/octeon_ep: remove duplicate code Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 11/19] net/hinic: fix flow type bitmask overflow Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 12/19] crypto/dpaa2_sec: fix bitmask truncation Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 13/19] crypto/dpaa_sec: " Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 14/19] event/dpaa: " Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 15/19] net/dpaa: " Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 16/19] net/dpaa2: " Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 17/19] net/qede: don't use same loop variable twice Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 18/19] examples/l3fwd: fix operator precedence bugs Stephen Hemminger 2025-02-05 16:23 ` [PATCH v3 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).