Re: [PATCH] mm/vma: next is already retrieved

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

 



On Wed, Nov 27, 2024 at 12:21:24PM +0000, Lorenzo Stoakes wrote:
>Hi Wei,
>
>Thanks for the patch, though I would again ask if you could please stop
>fiddling around with the VMA stuff until things are a _little_ more
>settled, perhaps best to leave until the new year?
>

Sure.

>I'm talking about small refactorings and optimisations here - for bugs or
>major issues - please do, of course, submit immediately.
>
>On Wed, Nov 27, 2024 at 11:43:02AM +0000, Wei Yang wrote:
>> vma_iter_next_rewind() here gets next vma and rewind iterator.
>>
>> Actually the next vma is already been retrieved to new_vma. Since the
>> iterator is initialized to addr, we don't need to adjust it.
>>
>> Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx>
>> CC: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
>> CC: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>
>> CC: Vlastimil Babka <vbabka@xxxxxxx>
>> CC: Jann Horn <jannh@xxxxxxxxxx>
>> ---
>>  mm/vma.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/vma.c b/mm/vma.c
>> index 8a454a7bbc80..d419e3700fa7 100644
>> --- a/mm/vma.c
>> +++ b/mm/vma.c
>> @@ -1727,7 +1727,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
>>
>>  	vmg.vma = NULL; /* New VMA range. */
>>  	vmg.pgoff = pgoff;
>> -	vmg.next = vma_iter_next_rewind(&vmi, NULL);
>> +	vmg.next = new_vma;
>
>HOWEVER, this is a good spot and you're right (I mean we explicitly _check_
>that the found VMA is after the point at which we intend to insert the new
>one).
>
>But while we're here, can we fix this HORRIBLE variable naming? We reuse
>'new_vma' to refer to the _next_ VMA and newly merged one/one we have to
>create.
>
>So could you update your code to do something like:
>
>	vmg.next = find_vma_prev(mm, addr, &vmg.prev);
>	if (vmg.next && ...
>

Sure. I thought you may prefer a small footprint, so I did current version.

Will update it in next version next year.

>This self-documents your fix, avoids the need for the
>vma_iter_next_rewind(), fixes the inefficiency you've found, and avoids
>stupidly overloading what new_vma refers to.
>
>Also update the commit message to refer to this.
>
>And can you update the test_copy_vma() test in tools/testing/vma/vma.c to
>explicitly test for VMAs that come afterwards both merge and non-merge
>cases?
>

Currently we have two scenario with merge/non-merge after copy_vma().

I am not sure what exact case you want to have. Would you mind giving more
detail?

>It's time to really start taking advantage of this huge power we have to
>userland test things! :)
>
>>  	new_vma = vma_merge_new_range(&vmg);
>>
>>  	if (new_vma) {
>> --
>> 2.34.1
>>
>>
>
>Thanks, Lorenzo

-- 
Wei Yang
Help you, Help me




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

  Powered by Linux