Re: [RESEND PATCH v5 3/4] mm/vmalloc: revert "mm/vmalloc.c: check VM_UNINITIALIZED flag in s_show instead of show_numa_info"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi KOSAKI,
On Tue, Sep 17, 2013 at 01:44:04AM -0400, KOSAKI Motohiro wrote:
>On Mon, Sep 16, 2013 at 8:18 PM, Wanpeng Li <liwanp@xxxxxxxxxxxxxxxxxx> wrote:
>> Hi KOSAKI,
>> On Mon, Sep 16, 2013 at 05:23:32PM -0400, KOSAKI Motohiro wrote:
>>>On 9/14/2013 7:45 PM, Wanpeng Li wrote:
>>>> Changelog:
>>>>  *v2 -> v3: revert commit d157a558 directly
>>>>
>>>> The VM_UNINITIALIZED/VM_UNLIST flag introduced by commit f5252e00(mm: avoid
>>>> null pointer access in vm_struct via /proc/vmallocinfo) is used to avoid
>>>> accessing the pages field with unallocated page when show_numa_info() is
>>>> called. This patch move the check just before show_numa_info in order that
>>>> some messages still can be dumped via /proc/vmallocinfo. This patch revert
>>>> commit d157a558 (mm/vmalloc.c: check VM_UNINITIALIZED flag in s_show instead
>>>> of show_numa_info);
>>>
>>>Both d157a558 and your patch don't explain why your one is better. Yes, some
>>>messages _can_ be dumped. But why should we do so?
>>
>> More messages can be dumped and original commit f5252e00(mm: avoid null pointer
>> access in vm_struct via /proc/vmallocinfo) do that.
>>
>>>And No. __get_vm_area_node() doesn't use __GFP_ZERO for allocating vm_area_struct.
>>>dumped partial dump is not only partial, but also may be garbage.
>>
>> vm_struct is allocated by kzalloc_node.
>
>Oops, you are right. Then, your code _intentionally_ show amazing
>zero. Heh, nice.
>More message is pointless. zero is just zero. It doesn't have any information.
>

After PATCH 4/4 applied, there is a check: 

if (!(va->flags & VM_VM_AREA))
	return 0;

- show vm_struct information between insert_vmap_area and setup_vmalloc_vm.

  Nothing will be dumped since the check mentioned above. 

- show vm_struct information between setup_vmalloc_vm and vm_struct
  fully populated.

  The fields initialized in setup_vmalloc_vm will be dumped correctly and 
  other uninitialized fields of vm_struct won't be dumped instead of dump 
  zero as you mentioned since there is check like v->caller, v->nr_pages 
  in s_show.

Regards,
Wanpeng Li 

>
>>>I wonder why we need to call setup_vmalloc_vm() _after_ insert_vmap_area.
>>
>> I think it's another topic.
>
>Why?
>
>
>> Fill vm_struct and set VM_VM_AREA flag. If I misunderstand your
>> question?
>
>VM_VM_AREA doesn't help. we have race between insert_vmap_area and
>setup_vmalloc_vm.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]