diff options
| author | Peter Zijlstra <peterz@infradead.org> | 2025-08-12 12:39:11 +0200 |
|---|---|---|
| committer | Peter Zijlstra <peterz@infradead.org> | 2025-08-15 13:13:01 +0200 |
| commit | d23a6dbc0a71741eb7b141fdc04e31360fba46ef (patch) | |
| tree | 36eeab243a2a119927da809add1d46d75d5ede40 /kernel | |
| parent | perf: Split out the RB allocation (diff) | |
| download | linux-d23a6dbc0a71741eb7b141fdc04e31360fba46ef.tar.gz linux-d23a6dbc0a71741eb7b141fdc04e31360fba46ef.zip | |
perf: Use scoped_guard() for mmap_mutex in perf_mmap()
Mostly just re-indent noise.
Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Link: https://lore.kernel.org/r/20250812104019.838047976@infradead.org
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/events/core.c | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 3a5fd2b802e4..41941dfadfcb 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7146,30 +7146,23 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma) if (vma_size != PAGE_SIZE * nr_pages) return -EINVAL; - mutex_lock(&event->mmap_mutex); - ret = -EINVAL; + scoped_guard (mutex, &event->mmap_mutex) { + /* + * This relies on __pmu_detach_event() taking mmap_mutex after marking + * the event REVOKED. Either we observe the state, or __pmu_detach_event() + * will detach the rb created here. + */ + if (event->state <= PERF_EVENT_STATE_REVOKED) + return -ENODEV; - /* - * This relies on __pmu_detach_event() taking mmap_mutex after marking - * the event REVOKED. Either we observe the state, or __pmu_detach_event() - * will detach the rb created here. - */ - if (event->state <= PERF_EVENT_STATE_REVOKED) { - ret = -ENODEV; - goto unlock; + if (vma->vm_pgoff == 0) + ret = perf_mmap_rb(vma, event, nr_pages); + else + ret = perf_mmap_aux(vma, event, nr_pages); + if (ret) + return ret; } - if (vma->vm_pgoff == 0) - ret = perf_mmap_rb(vma, event, nr_pages); - else - ret = perf_mmap_aux(vma, event, nr_pages); - -unlock: - mutex_unlock(&event->mmap_mutex); - - if (ret) - return ret; - /* * Since pinned accounting is per vm we cannot allow fork() to copy our * vma. |
