Re: [PATCH dwarves v3 8/8] btf_encoder: clean up global encoders list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Dec 21, 2024 at 01:23:45AM +0000, Ihor Solodrai wrote:

SNIP

> -static int btf_encoder__add_saved_funcs(bool skip_encoding_inconsistent_proto)
> +static int btf_encoder__add_saved_funcs(struct btf_encoder *encoder, bool skip_encoding_inconsistent_proto)
>  {
>  	struct btf_encoder_func_state **saved_fns, *s;
> -	struct btf_encoder *e = NULL;
> -	int i = 0, j, nr_saved_fns = 0;
> +	int err = 0, i = 0, j, nr_saved_fns = 0;
>  
> -	/* Retrieve function states from each encoder, combine them
> +	/* Retrieve function states from the encoder, combine them
>  	 * and sort by name, addr.
>  	 */
> -	btf_encoders__for_each_encoder(e) {
> -		list_for_each_entry(s, &e->func_states, node)
> -			nr_saved_fns++;
> +	list_for_each_entry(s, &encoder->func_states, node) {
> +		nr_saved_fns++;
>  	}
>  
>  	if (nr_saved_fns == 0)
> -		return 0;
> +		goto out;
>  
>  	saved_fns = calloc(nr_saved_fns, sizeof(*saved_fns));
> -	btf_encoders__for_each_encoder(e) {
> -		list_for_each_entry(s, &e->func_states, node)
> -			saved_fns[i++] = s;
> +	if (!saved_fns) {
> +		err = -ENOMEM;
> +		goto out;
> +	}
> +
> +	list_for_each_entry(s, &encoder->func_states, node) {
> +		saved_fns[i++] = s;
>  	}
>  	qsort(saved_fns, nr_saved_fns, sizeof(*saved_fns), saved_functions_cmp);
>  
> @@ -1377,11 +1313,10 @@ static int btf_encoder__add_saved_funcs(bool skip_encoding_inconsistent_proto)
>  
>  	/* Now that we are done with function states, free them. */
>  	free(saved_fns);
> -	btf_encoders__for_each_encoder(e) {
> -		btf_encoder__delete_saved_funcs(e);
> -	}
> +	btf_encoder__delete_saved_funcs(encoder);

is this call necessary? there's btf_encoder__delete call right after
same for elf_functions_list__clear in btf_encoder__encode

thanks,
jirka


>  
> -	return 0;
> +out:
> +	return err;
>  }
>  

SNIP




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux