On 09/22, qiwu.chen wrote: > > + for_each_vma(vmi, vma) { > + struct file *file = vma->vm_file; > + int flags = vma->vm_flags; > + unsigned long long pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; > + struct anon_vma_name *anon_name = NULL; > + struct mm_struct *mm = vma->vm_mm; > + char buf[256] = {0}; > + const char *name = NULL; > + > + if (mm) > + anon_name = anon_vma_name(vma); > + > + if (file) { > + if (anon_name) { > + snprintf(buf, sizeof(buf), "[anon_shmem:%s]", anon_name->name); > + name = buf; > + } else { > + char *f_path = d_path(file_user_path(file), buf, sizeof(buf)); > + > + name = IS_ERR(f_path) ? "?" : f_path; > + } > + goto print; > + } > + > + if (vma->vm_ops && vma->vm_ops->name) { > + name = vma->vm_ops->name(vma); > + if (name) > + goto print; > + } > + > + name = arch_vma_name(vma); > + if (!name) { > + if (mm) { > + if (vma_is_initial_heap(vma)) > + name = "[heap]"; > + else if (vma_is_initial_stack(vma)) > + name = "[stack]"; > + } else > + name = "[vdso]"; > + > + if (anon_name) { > + snprintf(buf, sizeof(buf), "[anon:%s]", anon_name->name); > + name = buf; > + } > + } > + Wouldn't it be better to export/reuse get_vma_name() rather than duplicate its code ? Oleg.