Re: [PATCH v2 1/1] perf arm64: Send pointer auth masks to ring buffer

From: Peter Zijlstra
Date: Thu Oct 27 2022 - 13:20:44 EST


On Tue, Oct 25, 2022 at 04:28:12PM +0100, James Clark wrote:

> > Why do we want the same mask repeated over and over with each sample;
> > should this not be part of the address space (side-band) data?
>
> You are probably right that it could be done that way. The reason that
> we did it this way was to be consistent with ptrace feature [1] where it
> is delivered to userspace on a per-process basis. And there is also a
> prctl for the enabled key types [2] which can be changed dynamically.
> Particularly for the last reason is why it was done per sample.
>
> Having said that, the enabled keys field is not used by perf, only the
> mask is used, so I can drop the per sample data until enabled keys is
> needed, which may be never.
>
> I'm going to assume that perf shouldn't use ptrace because of
> permissions and conflicts with debuggers, so I could put the mask
> somewhere like PERF_RECORD_FORK instead of per sample.

Yeah, or create an new RECORD type which you can also send around at
prctl() time.

The only thing that's needed on top of that is exposing the mask
somewhere in /proc for existing tasks; which is what perf also uses to
syntesize RECORD_MMAP events on startup etc..