[ovs-dev] [PATCH v2 ovn] logical-fields: fix memory leak while initializing ovnfield_by_name

Ilya Maximets i.maximets at samsung.com
Fri Aug 9 09:52:32 UTC 2019


On 09.08.2019 10:11, Damijan Skvarc wrote:
> According to comments I have:
> - renamed function name to be "paired" with ovn_destroy_ovnfields
> - replaced 0/1 bool values with false/true
> 
> Signed-off-by: Damijan Skvarc <damjan.skvarc at gmail.com>
> ---
>  lib/logical-fields.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/logical-fields.c b/lib/logical-fields.c
> index fdc78cf..8a0ef62 100644
> --- a/lib/logical-fields.c
> +++ b/lib/logical-fields.c
> @@ -58,18 +58,18 @@ add_ct_bit(const char *name, int index, struct shash *symtab)
>  }
>  
>  static void
> -init_ovnfield_by_name(void)
> +ovn_init_ovnfields(void)
>  {
> -    static bool initialized = 0;
> +    static bool initialized = false;

There is a special mechanism 'ovsthread_once' for this kind of things.
Can we use it instead?

Best regards, Ilya Maximets.

>  
> -    if (0 == initialized) {
> +    if (!initialized) {
>          shash_init(&ovnfield_by_name);
>          for (int i = 0; i < OVN_FIELD_N_IDS; i++) {
>              const struct ovn_field *of = &ovn_fields[i];
>              ovs_assert(of->id == i); /* Fields must be in the enum order. */
>              shash_add_once(&ovnfield_by_name, of->name, of);
>          }
> -        initialized = 1;
> +        initialized = true;
>      }
>  }
>  
> @@ -234,7 +234,7 @@ ovn_init_symtab(struct shash *symtab)
>      expr_symtab_add_field(symtab, "sctp.src", MFF_SCTP_SRC, "sctp", false);
>      expr_symtab_add_field(symtab, "sctp.dst", MFF_SCTP_DST, "sctp", false);
>  
> -    init_ovnfield_by_name();
> +    ovn_init_ovnfields();
>  
>      expr_symtab_add_ovn_field(symtab, "icmp4.frag_mtu", OVN_ICMP4_FRAG_MTU);
>  }
> 


More information about the dev mailing list