OSDN Git Service

mm/vmalloc: make sure to dump unpurged areas in /proc/vmallocinfo
authorEric Dumazet <edumazet@google.com>
Fri, 5 Nov 2021 20:39:28 +0000 (13:39 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Nov 2021 20:30:37 +0000 (13:30 -0700)
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.

Link: https://lkml.kernel.org/r/20211001170815.73321-1-eric.dumazet@gmail.com
Fixes: dd3b8353bae7 ("mm/vmalloc: do not keep unpurged areas in the busy tree")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
Cc: Pengfei Li <lpf.vector@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/vmalloc.c

index 6c1b97f..0a740fb 100644 (file)
@@ -3913,7 +3913,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;
@@ -3954,6 +3954,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);