|
@@ -1369,7 +1369,11 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
|
|
|
vma_size = vma->vm_end - vma->vm_start;
|
|
|
nr_pages = (vma_size / PAGE_SIZE) - 1;
|
|
|
|
|
|
- if (nr_pages == 0 || !is_power_of_2(nr_pages))
|
|
|
+ /*
|
|
|
+ * If we have data pages ensure they're a power-of-two number, so we
|
|
|
+ * can do bitmasks instead of modulo.
|
|
|
+ */
|
|
|
+ if (nr_pages != 0 && !is_power_of_2(nr_pages))
|
|
|
return -EINVAL;
|
|
|
|
|
|
if (vma_size != PAGE_SIZE * (1 + nr_pages))
|