Re: [PATCH v3 1/2] panic: add option to dump task maps info in panic_print
From: Oleg Nesterov
Date: Sun Sep 22 2024 - 09:13:51 EST
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.