[63/82] net/softnic: remove unnecessary NULL checks
Checks
Commit Message
Remove redundant NULL pointer checks before free functions
found by nullfree.cocci
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/softnic/rte_eth_softnic_cli.c | 12 ++++--------
drivers/net/softnic/rte_eth_softnic_cryptodev.c | 6 ++----
drivers/net/softnic/rte_eth_softnic_thread.c | 6 ++----
3 files changed, 8 insertions(+), 16 deletions(-)
Comments
> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Monday, January 24, 2022 12:05 AM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Singh, Jasvinder
> <jasvinder.singh@intel.com>; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>
> Subject: [PATCH 63/82] net/softnic: remove unnecessary NULL checks
>
> Remove redundant NULL pointer checks before free functions
> found by nullfree.cocci
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> drivers/net/softnic/rte_eth_softnic_cli.c | 12 ++++--------
> drivers/net/softnic/rte_eth_softnic_cryptodev.c | 6 ++----
> drivers/net/softnic/rte_eth_softnic_thread.c | 6 ++----
> 3 files changed, 8 insertions(+), 16 deletions(-)
>
Hi Stephen,
The rte_ring_free() and rte_mempool_free() do not state in their API description that freeing a NULL pointer is harmless. Before pushing these changes, please add the necessary note in the API header files for these functions.
In the absence of the clear note in their API description, the user is forced to check for the NULL pointer. I agree that the implementation of these functions does the right think and exits early when the input pointer is NULL, but there is no guarantee that the implementation is not going to change. Agree?
The stdlib free() and the rte_free() do have the clear API description note that freeing a NULL object is harmless, so removing the NULL check before their call is indeed safe.
This stands for all the patches in this set.
Regards,
Cristian
@@ -4482,10 +4482,8 @@ parse_free_sym_crypto_param_data(struct rte_table_action_sym_crypto_params *p)
switch (xform[i]->type) {
case RTE_CRYPTO_SYM_XFORM_CIPHER:
- if (p->cipher_auth.cipher_iv.val)
- free(p->cipher_auth.cipher_iv.val);
- if (p->cipher_auth.cipher_iv_update.val)
- free(p->cipher_auth.cipher_iv_update.val);
+ free(p->cipher_auth.cipher_iv.val);
+ free(p->cipher_auth.cipher_iv_update.val);
break;
case RTE_CRYPTO_SYM_XFORM_AUTH:
if (p->cipher_auth.auth_iv.val)
@@ -4494,10 +4492,8 @@ parse_free_sym_crypto_param_data(struct rte_table_action_sym_crypto_params *p)
free(p->cipher_auth.cipher_iv_update.val);
break;
case RTE_CRYPTO_SYM_XFORM_AEAD:
- if (p->aead.iv.val)
- free(p->aead.iv.val);
- if (p->aead.aad.val)
- free(p->aead.aad.val);
+ free(p->aead.iv.val);
+ free(p->aead.aad.val);
break;
default:
continue;
@@ -159,10 +159,8 @@ softnic_cryptodev_create(struct pmd_internals *p,
return cryptodev;
error_exit:
- if (cryptodev->mp_create)
- rte_mempool_free(cryptodev->mp_create);
- if (cryptodev->mp_init)
- rte_mempool_free(cryptodev->mp_init);
+ rte_mempool_free(cryptodev->mp_create);
+ rte_mempool_free(cryptodev->mp_init);
free(cryptodev);
@@ -29,11 +29,9 @@ softnic_thread_free(struct pmd_internals *softnic)
struct softnic_thread *t = &softnic->thread[i];
/* MSGQs */
- if (t->msgq_req)
- rte_ring_free(t->msgq_req);
+ rte_ring_free(t->msgq_req);
- if (t->msgq_rsp)
- rte_ring_free(t->msgq_rsp);
+ rte_ring_free(t->msgq_rsp);
}
}