|
@@ -6632,6 +6632,27 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event)
|
|
|
char *buf = NULL;
|
|
|
char *name;
|
|
|
|
|
|
+ if (vma->vm_flags & VM_READ)
|
|
|
+ prot |= PROT_READ;
|
|
|
+ if (vma->vm_flags & VM_WRITE)
|
|
|
+ prot |= PROT_WRITE;
|
|
|
+ if (vma->vm_flags & VM_EXEC)
|
|
|
+ prot |= PROT_EXEC;
|
|
|
+
|
|
|
+ if (vma->vm_flags & VM_MAYSHARE)
|
|
|
+ flags = MAP_SHARED;
|
|
|
+ else
|
|
|
+ flags = MAP_PRIVATE;
|
|
|
+
|
|
|
+ if (vma->vm_flags & VM_DENYWRITE)
|
|
|
+ flags |= MAP_DENYWRITE;
|
|
|
+ if (vma->vm_flags & VM_MAYEXEC)
|
|
|
+ flags |= MAP_EXECUTABLE;
|
|
|
+ if (vma->vm_flags & VM_LOCKED)
|
|
|
+ flags |= MAP_LOCKED;
|
|
|
+ if (vma->vm_flags & VM_HUGETLB)
|
|
|
+ flags |= MAP_HUGETLB;
|
|
|
+
|
|
|
if (file) {
|
|
|
struct inode *inode;
|
|
|
dev_t dev;
|
|
@@ -6658,27 +6679,6 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event)
|
|
|
maj = MAJOR(dev);
|
|
|
min = MINOR(dev);
|
|
|
|
|
|
- if (vma->vm_flags & VM_READ)
|
|
|
- prot |= PROT_READ;
|
|
|
- if (vma->vm_flags & VM_WRITE)
|
|
|
- prot |= PROT_WRITE;
|
|
|
- if (vma->vm_flags & VM_EXEC)
|
|
|
- prot |= PROT_EXEC;
|
|
|
-
|
|
|
- if (vma->vm_flags & VM_MAYSHARE)
|
|
|
- flags = MAP_SHARED;
|
|
|
- else
|
|
|
- flags = MAP_PRIVATE;
|
|
|
-
|
|
|
- if (vma->vm_flags & VM_DENYWRITE)
|
|
|
- flags |= MAP_DENYWRITE;
|
|
|
- if (vma->vm_flags & VM_MAYEXEC)
|
|
|
- flags |= MAP_EXECUTABLE;
|
|
|
- if (vma->vm_flags & VM_LOCKED)
|
|
|
- flags |= MAP_LOCKED;
|
|
|
- if (vma->vm_flags & VM_HUGETLB)
|
|
|
- flags |= MAP_HUGETLB;
|
|
|
-
|
|
|
goto got_name;
|
|
|
} else {
|
|
|
if (vma->vm_ops && vma->vm_ops->name) {
|