[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241217091216.GK35539@noisy.programming.kicks-ass.net>
Date: Tue, 17 Dec 2024 10:12:16 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Ravi Bangoria <ravi.bangoria@....com>
Cc: "mingo@...nel.org" <mingo@...nel.org>,
"lucas.demarchi@...el.com" <lucas.demarchi@...el.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"willy@...radead.org" <willy@...radead.org>,
"acme@...nel.org" <acme@...nel.org>,
"namhyung@...nel.org" <namhyung@...nel.org>,
"mark.rutland@....com" <mark.rutland@....com>,
"alexander.shishkin@...ux.intel.com" <alexander.shishkin@...ux.intel.com>,
"jolsa@...nel.org" <jolsa@...nel.org>,
"irogers@...gle.com" <irogers@...gle.com>,
"adrian.hunter@...el.com" <adrian.hunter@...el.com>,
"kan.liang@...ux.intel.com" <kan.liang@...ux.intel.com>
Subject: Re: [PATCH 19/19] perf: Make perf_pmu_unregister() useable
Oh sorry, I seem to have missed this email :/
On Mon, Nov 25, 2024 at 09:40:28AM +0530, Ravi Bangoria wrote:
> Hi Peter,
>
> > @@ -6507,6 +6540,7 @@ static void perf_mmap_close(struct vm_ar
> > unsigned long size = perf_data_size(rb);
> > bool detach_rest = false;
> >
> > + /* FIXIES vs perf_pmu_unregister() */
> > if (event->pmu->event_unmapped)
> > event->pmu->event_unmapped(event, vma->vm_mm);
>
> I assume you are already aware of the race between __pmu_detach_event()
> and perf_mmap_close() since you have put that comment.
That comment was mostly about how we can't fix up the whole
->event_unmapped() thing and have to abort pmu_unregister for it.
> In any case, below sequence of operations triggers a splat when
> perf_mmap_close() tries to access event->rb, event->pmu etc. which
> were already freed by __pmu_detach_event().
>
> Sequence:
>
> Kernel Userspace
> ------ ---------
> perf_pmu_register()
> fd = perf_event_open()
> p = mmap(fd)
> perf_pmu_unregister()
> munmap(p)
> close(fd)
Right, let me go have a look. Thanks!
Powered by blists - more mailing lists