net/bnxt: check return value
PATCH 1/1 net/bnxt: check return value
Check return value of rte_kvargs_process()
Coverity issue: 357765
Fixes ba404aacc5cf ("net/bnxt: set maximum flow count")
Fixes 02a95625fe9c ("net/bnxt: add flow stats in extended stats")
Fixes 7b0940653720 ("net/bnxt: support host memory based TruFlow")
Signed-off-by Ajit Khaparde <[email protected]>
Reviewed-by Lance Richardson <[email protected]>
--- drivers/net/bnxt/bnxt_ethdev.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-)
drivers/net/bnxt/bnxt_ethdev.c +21 -10
@@ -5477,40 +5477,49 @@ bnxt_parse_devarg_rep_fc_f2r(__rte_unused const char *key,return 0 ; } -static void +static int bnxt_parse_dev_args (struct bnxt *bp,struct rte_devargs *devargs) {struct rte_kvargs *kvlist; +int ret;if (devargs ==NULL ) -return ; +return 0 ; kvlist =rte_kvargs_parse (devargs->args, bnxt_dev_args);if (kvlist ==NULL ) -return ; +return -EINVAL ;/* * Handler for "truflow" devarg. * Invoked as for ex: "-a 0000:00:0d.0,host-based-truflow=1" */ -rte_kvargs_process (kvlist,BNXT_DEVARG_TRUFLOW , - bnxt_parse_devarg_truflow, bp); + ret =rte_kvargs_process (kvlist,BNXT_DEVARG_TRUFLOW , + bnxt_parse_devarg_truflow, bp); +if (ret) + goto err;/* * Handler for "flow_xstat" devarg. * Invoked as for ex: "-a 0000:00:0d.0,flow_xstat=1" */ -rte_kvargs_process (kvlist,BNXT_DEVARG_FLOW_XSTAT , - bnxt_parse_devarg_flow_xstat, bp); + ret =rte_kvargs_process (kvlist,BNXT_DEVARG_FLOW_XSTAT , + bnxt_parse_devarg_flow_xstat, bp); +if (ret) + goto err;/* * Handler for "max_num_kflows" devarg. * Invoked as for ex: "-a 000:00:0d.0,max_num_kflows=32" */ -rte_kvargs_process (kvlist,BNXT_DEVARG_MAX_NUM_KFLOWS , - bnxt_parse_devarg_max_num_kflows, bp); + ret =rte_kvargs_process (kvlist,BNXT_DEVARG_MAX_NUM_KFLOWS , + bnxt_parse_devarg_max_num_kflows, bp); +if (ret) + goto err; +err:rte_kvargs_free (kvlist); +return ret; }static int bnxt_alloc_switch_domain (struct bnxt *bp)
@@ -5645,7 +5654,9 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev, void *params __rte_unused) bp = eth_dev->data->dev_private;/* Parse dev arguments passed on when starting the DPDK application. */ -bnxt_parse_dev_args (bp, pci_dev->device.devargs); + rc =bnxt_parse_dev_args (bp, pci_dev->device.devargs); +if (rc) + goto error_free; rc =bnxt_drv_init (eth_dev);if (rc)
Signature · 1 line
2.21.1 (Apple Git-122.3)
Quoted 5 lines · Ajit Khaparde
Check return value of
rte_kvargs_process()Coverity issue: 357765
Quoted 8 lines
Fixes ba404aacc5cf ("net/bnxt: set maximum flow count")Fixes 02a95625fe9c ("net/bnxt: add flow stats in extended stats")Fixes 7b0940653720 ("net/bnxt: support host memory based TruFlow")Signed-off-by Ajit Khaparde <[email protected]>Reviewed-by Lance Richardson <[email protected]>
Patch applied to dpdk-next-net-brcm.
Quoted 81 lines
--- drivers/net/bnxt/bnxt_ethdev.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-)drivers/net/bnxt/bnxt_ethdev.c +21
-11@@ -5477,40 +5477,49 @@ bnxt_parse_devarg_rep_fc_f2r(__rte_unused const char *key,return 0 ; } -static void +static int bnxt_parse_dev_args (struct bnxt *bp,struct rte_devargs *devargs) {struct rte_kvargs *kvlist; +int ret;if (devargs ==NULL ) -return ; +return 0 ; kvlist =rte_kvargs_parse (devargs->args, bnxt_dev_args);if (kvlist ==NULL ) -return ; +return -EINVAL ;/* * Handler for "truflow" devarg. * Invoked as for ex: "-a 0000:00:0d.0,host-based-truflow=1" */ -rte_kvargs_process (kvlist,BNXT_DEVARG_TRUFLOW , - bnxt_parse_devarg_truflow, bp); + ret =rte_kvargs_process (kvlist,BNXT_DEVARG_TRUFLOW , + bnxt_parse_devarg_truflow, bp); +if (ret) + goto err;/* * Handler for "flow_xstat" devarg. * Invoked as for ex: "-a 0000:00:0d.0,flow_xstat=1" */ -rte_kvargs_process (kvlist,BNXT_DEVARG_FLOW_XSTAT , - bnxt_parse_devarg_flow_xstat, bp); + ret =rte_kvargs_process (kvlist,BNXT_DEVARG_FLOW_XSTAT , + bnxt_parse_devarg_flow_xstat, bp); +if (ret) + goto err;/* * Handler for "max_num_kflows" devarg. * Invoked as for ex: "-a 000:00:0d.0,max_num_kflows=32" */ -rte_kvargs_process (kvlist,BNXT_DEVARG_MAX_NUM_KFLOWS , - bnxt_parse_devarg_max_num_kflows, bp); + ret =rte_kvargs_process (kvlist,BNXT_DEVARG_MAX_NUM_KFLOWS , + bnxt_parse_devarg_max_num_kflows, bp); +if (ret) + goto err; +err:rte_kvargs_free (kvlist); +return ret; }static int bnxt_alloc_switch_domain (struct bnxt *bp)@@ -5645,7 +5654,9 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev, void *params __rte_unused) bp = eth_dev->data->dev_private;/* Parse dev arguments passed on when starting the DPDK application. */ -bnxt_parse_dev_args (bp, pci_dev->device.devargs); + rc =bnxt_parse_dev_args (bp, pci_dev->device.devargs); +if (rc) + goto error_free; rc =bnxt_drv_init (eth_dev);if (rc) --2.21.1 (Apple Git-122.3)