On Fri, Feb 15, 2019 at 01:53:48PM -0800, Song Liu wrote:

SNIP

>       info_linear = bpf_program__get_prog_info_linear(fd, arrays);
>       if (IS_ERR_OR_NULL(info_linear)) {
> @@ -151,8 +165,8 @@ static int perf_event__synthesize_one_bpf_prog(struct 
> perf_tool *tool,
>                                                    machine, process);
>       }
>  
> -     /* Synthesize PERF_RECORD_BPF_EVENT */
>       if (opts->bpf_event) {
> +             /* Synthesize PERF_RECORD_BPF_EVENT */
>               *bpf_event = (struct bpf_event){
>                       .header = {
>                               .type = PERF_RECORD_BPF_EVENT,
> @@ -165,6 +179,19 @@ static int perf_event__synthesize_one_bpf_prog(struct 
> perf_tool *tool,
>               memcpy(bpf_event->tag, info->tag, BPF_TAG_SIZE);
>               memset((void *)event + event->header.size, 0, 
> machine->id_hdr_size);
>               event->header.size += machine->id_hdr_size;
> +
> +             /* save bpf_prog_info to env */
> +             info_node = malloc(sizeof(struct bpf_prog_info_node));
> +             if (info_node) {
> +                     info_node->info_linear = info_linear;
> +                     perf_env__insert_bpf_prog_info(env, info_node);
> +                     info_linear = NULL;
> +             }

what if the allocation fails? we don't care?

jirka

Reply via email to