On Thu, Jan 4, 2024 at 3:29 PM Dumitru Ceara <dce...@redhat.com> wrote:
> It's perfectly fine to call free(NULL). Take advantage of that to > simplify the code. Use the safer CONST_CAST way of "unconsting" > pointers we pass to free while we're at it. > > Signed-off-by: Dumitru Ceara <dce...@redhat.com> > --- > controller/ovn-controller.c | 12 +++--------- > controller/pinctrl.c | 5 +---- > controller/vif-plug.c | 12 +++--------- > lib/expr.c | 22 ++++++++-------------- > lib/ovn-parallel-hmap.c | 6 ++---- > northd/ipam.c | 2 +- > 6 files changed, 18 insertions(+), 41 deletions(-) > > diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c > index 760b7788be..8709c1ae2a 100644 > --- a/controller/ovn-controller.c > +++ b/controller/ovn-controller.c > @@ -688,9 +688,7 @@ add_pending_ct_zone_entry(struct shash > *pending_ct_zones, > */ > struct ct_zone_pending_entry *existing = > shash_replace(pending_ct_zones, name, pending); > - if (existing) { > - free(existing); > - } > + free(existing); > } > > static bool > @@ -6099,12 +6097,8 @@ loop_done: > > ovs_feature_support_destroy(); > free(ovs_remote); > - if (file_system_id) { > - free(file_system_id); > - } > - if (cli_system_id) { > - free(cli_system_id); > - } > + free(file_system_id); > + free(cli_system_id); > ovn_exit_args_finish(&exit_args); > unixctl_server_destroy(unixctl); > service_stop(); > diff --git a/controller/pinctrl.c b/controller/pinctrl.c > index 5a35d56f6b..12055a6756 100644 > --- a/controller/pinctrl.c > +++ b/controller/pinctrl.c > @@ -1282,10 +1282,7 @@ fill_ipv6_prefix_state(struct ovsdb_idl_txn > *ovnsb_idl_txn, > struct ipv6_prefixd_state *pfd; > > if (!smap_get_bool(&pb->options, "ipv6_prefix", false)) { > - pfd = shash_find_and_delete(&ipv6_prefixd, pb->logical_port); > - if (pfd) { > - free(pfd); > - } > + free(shash_find_and_delete(&ipv6_prefixd, pb->logical_port)); > continue; > } > > diff --git a/controller/vif-plug.c b/controller/vif-plug.c > index 38348bf544..d4c7552eab 100644 > --- a/controller/vif-plug.c > +++ b/controller/vif-plug.c > @@ -142,15 +142,9 @@ destroy_port_ctx(struct vif_plug_port_ctx *ctx) > { > smap_destroy(&ctx->vif_plug_port_ctx_in.lport_options); > smap_destroy(&ctx->vif_plug_port_ctx_in.iface_options); > - if (ctx->vif_plug_port_ctx_in.lport_name) { > - free((char *)ctx->vif_plug_port_ctx_in.lport_name); > - } > - if (ctx->vif_plug_port_ctx_in.iface_name) { > - free((char *)ctx->vif_plug_port_ctx_in.iface_name); > - } > - if (ctx->vif_plug_port_ctx_in.iface_type) { > - free((char *)ctx->vif_plug_port_ctx_in.iface_type); > - } > + free(CONST_CAST(char *, ctx->vif_plug_port_ctx_in.lport_name)); > + free(CONST_CAST(char *, ctx->vif_plug_port_ctx_in.iface_name)); > + free(CONST_CAST(char *, ctx->vif_plug_port_ctx_in.iface_type)); > /* Note that data associated with ctx->vif_plug_port_ctx_out must be > * destroyed by the plug provider implementation with a call to > * vif_plug_port_ctx_destroy prior to calling this function */ > diff --git a/lib/expr.c b/lib/expr.c > index f5d2032334..0cb44e1b6f 100644 > --- a/lib/expr.c > +++ b/lib/expr.c > @@ -179,17 +179,13 @@ expr_combine(enum expr_type type, struct expr *a, > struct expr *b) > } else { > ovs_list_push_back(&a->andor, &b->node); > } > - if (a->as_name) { > - free(a->as_name); > - a->as_name = NULL; > - } > + free(a->as_name); > + a->as_name = NULL; > return a; > } else if (b->type == type) { > ovs_list_push_front(&b->andor, &a->node); > - if (b->as_name) { > - free(b->as_name); > - b->as_name = NULL; > - } > + free(b->as_name); > + b->as_name = NULL; > return b; > } else { > struct expr *e = expr_create_andor(type); > @@ -879,12 +875,10 @@ parse_constant(struct expr_context *ctx, struct > expr_constant_set *cs, > sizeof *cs->values); > } > > - if (cs->as_name) { > - /* Combining other values to the constant set that is tracking an > - * address set, so untrack it. */ > - free(cs->as_name); > - cs->as_name = NULL; > - } > + /* Combining other values to the constant set that is tracking an > + * address set, so untrack it. */ > + free(cs->as_name); > + cs->as_name = NULL; > > if (ctx->lexer->token.type == LEX_T_TEMPLATE) { > lexer_error(ctx->lexer, "Unexpanded template."); > diff --git a/lib/ovn-parallel-hmap.c b/lib/ovn-parallel-hmap.c > index a0ba681a1e..1b167e2145 100644 > --- a/lib/ovn-parallel-hmap.c > +++ b/lib/ovn-parallel-hmap.c > @@ -427,10 +427,8 @@ ovn_update_hashrow_locks(struct hmap *lflows, struct > hashrow_locks *hrl) > { > int i; > if (hrl->mask != lflows->mask) { > - if (hrl->row_locks) { > - free(hrl->row_locks); > - } > - hrl->row_locks = xcalloc(sizeof(struct ovs_mutex), lflows->mask + > 1); > + hrl->row_locks = xrealloc(hrl->row_locks, > + sizeof *hrl->row_locks * (lflows->mask > + 1)); > hrl->mask = lflows->mask; > for (i = 0; i <= lflows->mask; i++) { > ovs_mutex_init(&hrl->row_locks[i]); > diff --git a/northd/ipam.c b/northd/ipam.c > index 68a757098b..4448a76074 100644 > --- a/northd/ipam.c > +++ b/northd/ipam.c > @@ -44,7 +44,7 @@ void > destroy_ipam_info(struct ipam_info *info) > { > bitmap_free(info->allocated_ipv4s); > - free((char *) info->id); > + free(CONST_CAST(char *, info->id)); > } > > bool > -- > 2.39.3 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Looks good to me, thanks. Acked-by: Ales Musil <amu...@redhat.com> -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> amu...@redhat.com <https://red.ht/sig> _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev