[PATCH] perf: correctly handle failed perf_get_aux_event() (was: Re: [perf] perf_event_open() sometimes returning 0)

From: Mark Rutland
Date: Mon Jan 06 2020 - 07:04:06 EST


On Thu, Jan 02, 2020 at 02:22:47PM -0500, Vince Weaver wrote:
> On Thu, 2 Jan 2020, Vince Weaver wrote:
>
> > so I was tracking down some odd behavior in the perf_fuzzer which turns
> > out to be because perf_even_open() sometimes returns 0 (indicating a file
> > descriptor of 0) even though as far as I can tell stdin is still open.

Yikes.

> error is triggered if aux_sample_size has non-zero value.
>
> seems to be this line in kernel/events/core.c:
>
>
> if (perf_need_aux_event(event) && !perf_get_aux_event(event, group_leader))
> goto err_locked;
>
>
> (note, err is never set)

Looks like that was introduced in commit:

ab43762ef010967e ("perf: Allow normal events to output AUX data")

I guess we should return -EINVAL in this case.

Vince, does the below (untested) patch work for you?

Thanks,
Mark.

---->8----