Messages in this thread | | | Date | Thu, 4 Aug 2022 10:51:41 -0700 | From | Brian Robbins <> | Subject | Re: [PATCH] perf inject jit: Ignore memfd mmap events if jitdump present |
| |
On Thu, Aug 04, 2022 at 08:22:14AM -0700, Ian Rogers wrote: > On Tue, Aug 2, 2022 at 11:25 AM 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: mappings so that jitted code contained in /memfd: > > 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> > > > --- > > tools/perf/util/jitdump.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/tools/perf/util/jitdump.c b/tools/perf/util/jitdump.c > > index a23255773c60..335a3c61940b 100644 > > --- a/tools/perf/util/jitdump.c > > +++ b/tools/perf/util/jitdump.c > > @@ -845,8 +845,12 @@ 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* and /memfd:* mmaps if we processed a jitdump for this pid > > + */ > > + if (jit_has_pid(machine, pid) && > > + ((strncmp(filename, "//anon", 6) == 0) || > > + (strncmp(filename, "/memfd:", 7) == 0)) > > Related to this there is the prctl PR_SET_VMA_ANON_NAME which will > name mapping to start with "[anon:" > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/proc.rst#n434 > I wonder also we should be checking the pages are executable. > > Thanks, > Ian > > > return 1; > > > > return 0; > > -- > > 2.25.1 > >
I have not run into this case yet, but I suspect you are right that this should be handled as well. I can create a follow-up patch for this.
Thanks. --Brian
| |