]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
perf: Move perf_mmap_calc_limits() into both rb and aux branches
authorPeter Zijlstra <peterz@infradead.org>
Tue, 12 Aug 2025 10:39:02 +0000 (12:39 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 15 Aug 2025 11:12:59 +0000 (13:12 +0200)
  if (cond) {
    A;
  } else {
    B;
  }
  C;

into

  if (cond) {
    A;
    C;
  } else {
    B;
    C;
  }

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/20250812104018.781244099@infradead.org
kernel/events/core.c

index f90847101ade97082ca8a7be77bf5738d2e952c9..9f19c612c80f7ded56915786081ef7effb8d7655 100644 (file)
@@ -7054,6 +7054,16 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
                        ring_buffer_attach(event, NULL);
                }
 
+               if (!perf_mmap_calc_limits(vma, &user_extra, &extra)) {
+                       ret = -EPERM;
+                       goto unlock;
+               }
+
+               WARN_ON(!rb && event->rb);
+
+               if (vma->vm_flags & VM_WRITE)
+                       flags |= RING_BUFFER_WRITABLE;
+
        } else {
                /*
                 * AUX area mapping: if rb->aux_nr_pages != 0, it's already
@@ -7100,17 +7110,17 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
                        ret = 0;
                        goto unlock;
                }
-       }
 
-       if (!perf_mmap_calc_limits(vma, &user_extra, &extra)) {
-               ret = -EPERM;
-               goto unlock;
-       }
+               if (!perf_mmap_calc_limits(vma, &user_extra, &extra)) {
+                       ret = -EPERM;
+                       goto unlock;
+               }
 
-       WARN_ON(!rb && event->rb);
+               WARN_ON(!rb && event->rb);
 
-       if (vma->vm_flags & VM_WRITE)
-               flags |= RING_BUFFER_WRITABLE;
+               if (vma->vm_flags & VM_WRITE)
+                       flags |= RING_BUFFER_WRITABLE;
+       }
 
        if (!rb) {
                rb = rb_alloc(nr_pages,