Messages in this thread | | | From | Ian Rogers <> | Date | Fri, 5 Aug 2022 15:39:20 -0700 | Subject | Re: [PATCH v2] perf inject jit: Ignore memfd and anonymous mmap events if jitdump present |
| |
On Fri, Aug 5, 2022 at 3:06 PM Brian Robbins <brianrob@linux.microsoft.com> wrote: > > Some processes store jitted code in memfd mappings to avoid having rwx > mappings. These processes map the code with a writeable mapping and a > read-execute mapping. They write the code using the writeable mapping > and then unmap the writeable mapping. All subsequent execution is > through the read-execute mapping. > > perf inject --jit ignores //anon* mappings for each process where a > jitdump is present because it expects to inject mmap events for each > jitted code range, and said jitted code ranges will overlap with the > //anon* mappings. > > Ignore /memfd: and [anon:* mappings so that jitted code contained in > /memfd: and [anon:* mappings is treated the same way as jitted code > contained in //anon* mappings. > > Signed-off-by: Brian Robbins <brianrob@linux.microsoft.com>
Acked-by: Ian Rogers <irogers@google.com>
Thanks, Ian
> --- > tools/perf/util/jitdump.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/jitdump.c b/tools/perf/util/jitdump.c > index a23255773c60..4e6632203704 100644 > --- a/tools/perf/util/jitdump.c > +++ b/tools/perf/util/jitdump.c > @@ -845,8 +845,13 @@ jit_process(struct perf_session *session, > if (jit_detect(filename, pid, nsi)) { > nsinfo__put(nsi); > > - // Strip //anon* mmaps if we processed a jitdump for this pid > - if (jit_has_pid(machine, pid) && (strncmp(filename, "//anon", 6) == 0)) > + /* > + * Strip //anon*, [anon:* and /memfd:* mmaps if we processed a jitdump for this pid > + */ > + if (jit_has_pid(machine, pid) && > + ((strncmp(filename, "//anon", 6) == 0) || > + (strncmp(filename, "[anon:", 6) == 0) || > + (strncmp(filename, "/memfd:", 7) == 0))) > return 1; > > return 0; > -- > 2.25.1 >
| |