[dpdk-dev] net/ark: fix for Coverity issues
Checks
Commit Message
Fixes: 9c7188a68d7b ("net/ark: provide API for hardware modules pktchkr and pktgen")
Coverity issue: 144513
Fixes: 727b3fe292bc ("net/ark: integrate PMD")
Coverity issue: 144514
Fixes: 9c7188a68d7b ("net/ark: provide API for hardware modules pktchkr and pktgen")
Coverity issue: 144512
Fixes: 1131cbf0fb2b ("net/ark: stub PMD for Atomic Rules Arkville")
Coverity issue: 144517
Fixes: 727b3fe292bc ("net/ark: integrate PMD")
Coverity issue: 144520
Signed-off-by: John Miller <john.miller@atomicrules.com>
---
drivers/net/ark/ark_ethdev.c | 18 ++++++++++++------
drivers/net/ark/ark_pktchkr.c | 3 ++-
drivers/net/ark/ark_pktgen.c | 3 ++-
3 files changed, 16 insertions(+), 8 deletions(-)
Comments
On 5/11/2017 12:02 PM, John Miller wrote:
> Fixes: 9c7188a68d7b ("net/ark: provide API for hardware modules pktchkr and pktgen")
> Coverity issue: 144513
>
> Fixes: 727b3fe292bc ("net/ark: integrate PMD")
> Coverity issue: 144514
>
> Fixes: 9c7188a68d7b ("net/ark: provide API for hardware modules pktchkr and pktgen")
> Coverity issue: 144512
>
> Fixes: 1131cbf0fb2b ("net/ark: stub PMD for Atomic Rules Arkville")
> Coverity issue: 144517
The convention is Coverity line first, Fixes line later.
>
> Fixes: 727b3fe292bc ("net/ark: integrate PMD")
> Coverity issue: 144520
Hi John,
Thanks for fixing coverity issues.
Can you please split patch into a patchset with multiple patches,
grouped to same kind of fixes?
And instead of having "coverity fix" in patch title, can you please
describe what is really fixed, like "fix not null terminated buffer" or
"fix missing function return check" etc ...
Thanks,
ferruh
> Signed-off-by: John Miller <john.miller@atomicrules.com>
<...>
> --- a/drivers/net/ark/ark_pktgen.c
> +++ b/drivers/net/ark/ark_pktgen.c
> @@ -354,7 +354,8 @@ struct OPTIONS {
> o->v.INT = atoll(val);
> break;
> case OTSTRING:
> - strncpy(o->v.STR, val, ARK_MAX_STR_LEN);
> + strncpy(o->v.STR, val, ARK_MAX_STR_LEN - 1);
> + o->v.STR[ARK_MAX_STR_LEN - 1] = 0;
This also works, but you can prefer to switch snprintf(), which
guaranties the null termination.
> break;
> }
> return 1;
>
Hi Ferruh,
Thank you for your review.
I will create a new patchset for these fixes with all of the changes you requested.
-John
> On May 12, 2017, at 7:11 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 5/11/2017 12:02 PM, John Miller wrote:
>> Fixes: 9c7188a68d7b ("net/ark: provide API for hardware modules pktchkr and pktgen")
>> Coverity issue: 144513
>>
>> Fixes: 727b3fe292bc ("net/ark: integrate PMD")
>> Coverity issue: 144514
>>
>> Fixes: 9c7188a68d7b ("net/ark: provide API for hardware modules pktchkr and pktgen")
>> Coverity issue: 144512
>>
>> Fixes: 1131cbf0fb2b ("net/ark: stub PMD for Atomic Rules Arkville")
>> Coverity issue: 144517
>
> The convention is Coverity line first, Fixes line later.
>
>>
>> Fixes: 727b3fe292bc ("net/ark: integrate PMD")
>> Coverity issue: 144520
>
> Hi John,
>
> Thanks for fixing coverity issues.
>
> Can you please split patch into a patchset with multiple patches,
> grouped to same kind of fixes?
>
> And instead of having "coverity fix" in patch title, can you please
> describe what is really fixed, like "fix not null terminated buffer" or
> "fix missing function return check" etc ...
>
> Thanks,
> ferruh
>
>> Signed-off-by: John Miller <john.miller@atomicrules.com>
>
> <...>
>
>> --- a/drivers/net/ark/ark_pktgen.c
>> +++ b/drivers/net/ark/ark_pktgen.c
>> @@ -354,7 +354,8 @@ struct OPTIONS {
>> o->v.INT = atoll(val);
>> break;
>> case OTSTRING:
>> - strncpy(o->v.STR, val, ARK_MAX_STR_LEN);
>> + strncpy(o->v.STR, val, ARK_MAX_STR_LEN - 1);
>> + o->v.STR[ARK_MAX_STR_LEN - 1] = 0;
>
> This also works, but you can prefer to switch snprintf(), which
> guaranties the null termination.
>
>> break;
>> }
>> return 1;
>>
>
@@ -516,11 +516,7 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
dev->dev_ops = NULL;
dev->rx_pkt_burst = NULL;
dev->tx_pkt_burst = NULL;
- if (dev->data->mac_addrs)
- rte_free(dev->data->mac_addrs);
- if (dev->data)
- rte_free(dev->data);
-
+ rte_free(dev->data->mac_addrs);
return 0;
}
@@ -588,7 +584,11 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
/* Delay packet generatpr start allow the hardware to be ready
* This is only used for sanity checking with internal generator
*/
- pthread_create(&thread, NULL, delay_pg_start, ark);
+ if (pthread_create(&thread, NULL, delay_pg_start, ark)) {
+ PMD_DRV_LOG(ERR, "Could not create pktgen "
+ "starter thread\n");
+ return -1;
+ }
}
if (ark->user_ext.dev_start)
@@ -899,6 +899,12 @@ static void eth_ark_macaddr_remove(struct rte_eth_dev *dev,
int size = 0;
int first = 1;
+ if (file == NULL) {
+ PMD_DRV_LOG(ERR, "Unable to open, "
+ "config file %s\n", value);
+ return -1;
+ }
+
while (fgets(line, sizeof(line), file)) {
size += strlen(line);
if (size >= ARK_MAX_ARG_LEN) {
@@ -372,7 +372,8 @@ struct OPTIONS {
o->v.INT = atoll(val);
break;
case OTSTRING:
- strncpy(o->v.STR, val, ARK_MAX_STR_LEN);
+ strncpy(o->v.STR, val, ARK_MAX_STR_LEN - 1);
+ o->v.STR[ARK_MAX_STR_LEN - 1] = 0;
break;
}
return 1;
@@ -354,7 +354,8 @@ struct OPTIONS {
o->v.INT = atoll(val);
break;
case OTSTRING:
- strncpy(o->v.STR, val, ARK_MAX_STR_LEN);
+ strncpy(o->v.STR, val, ARK_MAX_STR_LEN - 1);
+ o->v.STR[ARK_MAX_STR_LEN - 1] = 0;
break;
}
return 1;