[PATCH 1/1] fixup for mm/debug: print vm_refcnt state when dumping the vma

From: Suren Baghdasaryan
Date: Thu Dec 26 2024 - 15:03:50 EST


vma->vm_refcnt does not exist when CONFIG_PER_VMA_LOCK=n, therefore
when CONFIG_PER_VMA_LOCK=n and CONFIG_DEBUG_VM=y we need to avoid its
usage in dump_vma().

Reported-by: kernel test robot <lkp@xxxxxxxxx>
Closes: https://lore.kernel.org/oe-kbuild-all/202412270328.HiJX1mRt-lkp@xxxxxxxxx/
Signed-off-by: Suren Baghdasaryan <surenb@xxxxxxxxxx>
---
Fixes https://lore.kernel.org/all/20241226170710.1159679-14-surenb@xxxxxxxxxx/
posted over mm-unstable.

mm/debug.c | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/mm/debug.c b/mm/debug.c
index 68b3ba3cf603..9c4cbc3733b0 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -178,6 +178,7 @@ EXPORT_SYMBOL(dump_page);

void dump_vma(const struct vm_area_struct *vma)
{
+#ifdef CONFIG_PER_VMA_LOCK
pr_emerg("vma %px start %px end %px mm %px\n"
"prot %lx anon_vma %px vm_ops %px\n"
"pgoff %lx file %px private_data %px\n"
@@ -187,6 +188,17 @@ void dump_vma(const struct vm_area_struct *vma)
vma->anon_vma, vma->vm_ops, vma->vm_pgoff,
vma->vm_file, vma->vm_private_data,
vma->vm_flags, &vma->vm_flags, refcount_read(&vma->vm_refcnt));
+#else
+ pr_emerg("vma %px start %px end %px mm %px\n"
+ "prot %lx anon_vma %px vm_ops %px\n"
+ "pgoff %lx file %px private_data %px\n"
+ "flags: %#lx(%pGv)\n",
+ vma, (void *)vma->vm_start, (void *)vma->vm_end, vma->vm_mm,
+ (unsigned long)pgprot_val(vma->vm_page_prot),
+ vma->anon_vma, vma->vm_ops, vma->vm_pgoff,
+ vma->vm_file, vma->vm_private_data,
+ vma->vm_flags, &vma->vm_flags);
+#endif
}
EXPORT_SYMBOL(dump_vma);

--
2.47.1.613.gc27f4b7a9f-goog