[PATCH] mm/vmalloc: make sure to dump unpurged areas in /proc/vmallocinfo

From: Eric Dumazet
Date: Fri Oct 01 2021 - 13:08:24 EST


From: Eric Dumazet <edumazet@xxxxxxxxxx>

If last va found in vmap_area_list does not have a vm pointer,
vmallocinfo.s_show() returns 0, and show_purge_info() is not called
as it should.

Fixes: dd3b8353bae7 ("mm/vmalloc: do not keep unpurged areas in the busy tree")
Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx>
Cc: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx>
Cc: Pengfei Li <lpf.vector@xxxxxxxxx>
---
mm/vmalloc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index d77830ff604cab1796a96e31ad1423a790c61ca7..42219f3d12b567fc64f54cd3e2f1e3398e261a2c 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -3902,7 +3902,7 @@ static int s_show(struct seq_file *m, void *p)
(void *)va->va_start, (void *)va->va_end,
va->va_end - va->va_start);

- return 0;
+ goto final;
}

v = va->vm;
@@ -3943,6 +3943,7 @@ static int s_show(struct seq_file *m, void *p)
/*
* As a final step, dump "unpurged" areas.
*/
+final:
if (list_is_last(&va->list, &vmap_area_list))
show_purge_info(m);

--
2.33.0.800.g4c38ced690-goog