Message ID | 20230201091339.61761-5-bhe@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm/vmalloc.c: allow vread() to read out vm_map_ram areas | expand |
On Wed, Feb 01, 2023 at 05:13:36PM +0800, Baoquan He wrote: > Now, by marking VMAP_RAM in vmap_area->flags for vm_map_ram area, we can > clearly differentiate it with other vmalloc areas. So identify > vm_map_area area by checking VMAP_RAM of vmap_area->flags when shown > in /proc/vmcoreinfo. > > Meanwhile, the code comment above vm_map_ram area checking in s_show() > is not needed any more, remove it here. > > Signed-off-by: Baoquan He <bhe@redhat.com> > --- > mm/vmalloc.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index 5a3ea6cb7ec2..e515dbacb0cb 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -4232,14 +4232,11 @@ static int s_show(struct seq_file *m, void *p) > > va = list_entry(p, struct vmap_area, list); > > - /* > - * s_show can encounter race with remove_vm_area, !vm on behalf > - * of vmap area is being tear down or vm_map_ram allocation. > - */ > if (!va->vm) { > - seq_printf(m, "0x%pK-0x%pK %7ld vm_map_ram\n", > - (void *)va->va_start, (void *)va->va_end, > - va->va_end - va->va_start); > + if (va->flags & VMAP_RAM) > + seq_printf(m, "0x%pK-0x%pK %7ld vm_map_ram\n", > + (void *)va->va_start, (void *)va->va_end, > + va->va_end - va->va_start); > > goto final; > } > -- > 2.34.1 > Reviewed-by: Lorenzo Stoakes <lstoakes@gmail.com>
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 5a3ea6cb7ec2..e515dbacb0cb 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -4232,14 +4232,11 @@ static int s_show(struct seq_file *m, void *p) va = list_entry(p, struct vmap_area, list); - /* - * s_show can encounter race with remove_vm_area, !vm on behalf - * of vmap area is being tear down or vm_map_ram allocation. - */ if (!va->vm) { - seq_printf(m, "0x%pK-0x%pK %7ld vm_map_ram\n", - (void *)va->va_start, (void *)va->va_end, - va->va_end - va->va_start); + if (va->flags & VMAP_RAM) + seq_printf(m, "0x%pK-0x%pK %7ld vm_map_ram\n", + (void *)va->va_start, (void *)va->va_end, + va->va_end - va->va_start); goto final; }
Now, by marking VMAP_RAM in vmap_area->flags for vm_map_ram area, we can clearly differentiate it with other vmalloc areas. So identify vm_map_area area by checking VMAP_RAM of vmap_area->flags when shown in /proc/vmcoreinfo. Meanwhile, the code comment above vm_map_ram area checking in s_show() is not needed any more, remove it here. Signed-off-by: Baoquan He <bhe@redhat.com> --- mm/vmalloc.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)