diff mbox series

mm/mlock: remove unneeded start >= vma->vm_end check

Message ID 20220314153223.53753-1-linmiaohe@huawei.com (mailing list archive)
State New
Headers show
Series mm/mlock: remove unneeded start >= vma->vm_end check | expand

Commit Message

Miaohe Lin March 14, 2022, 3:32 p.m. UTC
If find_vma returns a vma, it must satisfies that start < vma->vm_end.
Since vma list is sorted in the ascending order, so we will never see
start >= vma->vm_end here. Remove this unneeded check.

Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
---
 mm/mlock.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Matthew Wilcox (Oracle) March 14, 2022, 4:17 p.m. UTC | #1
On Mon, Mar 14, 2022 at 11:32:23PM +0800, Miaohe Lin wrote:
> If find_vma returns a vma, it must satisfies that start < vma->vm_end.
> Since vma list is sorted in the ascending order, so we will never see
> start >= vma->vm_end here. Remove this unneeded check.

faulty logic; vm_start + len might wrap.
Miaohe Lin March 15, 2022, 12:30 p.m. UTC | #2
On 2022/3/15 0:17, Matthew Wilcox wrote:
> On Mon, Mar 14, 2022 at 11:32:23PM +0800, Miaohe Lin wrote:
>> If find_vma returns a vma, it must satisfies that start < vma->vm_end.
>> Since vma list is sorted in the ascending order, so we will never see
>> start >= vma->vm_end here. Remove this unneeded check.
> 
> faulty logic; vm_start + len might wrap.

Many thanks for comment. I agree with you about "vm_start + len" might wrap.
But what I mean here is that we will never see "start" >= vma->vm_end here
as find_vma guarantees this. And I leave the "start + len <=  vma->vm_start"
check untouched. So my cleanup should be right. Or am I miss something?

Thanks.

> 
> .
>
Miaohe Lin March 31, 2022, 1:50 a.m. UTC | #3
On 2022/3/15 20:30, Miaohe Lin wrote:
> On 2022/3/15 0:17, Matthew Wilcox wrote:
>> On Mon, Mar 14, 2022 at 11:32:23PM +0800, Miaohe Lin wrote:
>>> If find_vma returns a vma, it must satisfies that start < vma->vm_end.
>>> Since vma list is sorted in the ascending order, so we will never see
>>> start >= vma->vm_end here. Remove this unneeded check.
>>
>> faulty logic; vm_start + len might wrap.
> 
> Many thanks for comment. I agree with you about "vm_start + len" might wrap.
> But what I mean here is that we will never see "start" >= vma->vm_end here
> as find_vma guarantees this. And I leave the "start + len <=  vma->vm_start"
> check untouched. So my cleanup should be right. Or am I miss something?
> 

friendly ping. :)

> Thanks.
> 
>>
>> .
>>
>
Miaohe Lin April 6, 2022, 9:17 a.m. UTC | #4
On 2022/3/15 20:30, Miaohe Lin wrote:
> On 2022/3/15 0:17, Matthew Wilcox wrote:
>> On Mon, Mar 14, 2022 at 11:32:23PM +0800, Miaohe Lin wrote:
>>> If find_vma returns a vma, it must satisfies that start < vma->vm_end.
>>> Since vma list is sorted in the ascending order, so we will never see
>>> start >= vma->vm_end here. Remove this unneeded check.
>>
>> faulty logic; vm_start + len might wrap.

What do you mean is vm_start + len might wrap, so vm_end might be < vm_start ?
If so, this could not happen as get_unmapped_area guarantees this.

> 
> Many thanks for comment. I agree with you about "vm_start + len" might wrap.
> But what I mean here is that we will never see "start" >= vma->vm_end here
> as find_vma guarantees this. And I leave the "start + len <=  vma->vm_start"
> check untouched. So my cleanup should be right. Or am I miss something?

So I think this "start >= vma->vm_end" check is unneeded and we can remove it.
Or am I miss something?

Many thanks!

> 
> Thanks.
> 
>>
>> .
>>
>
diff mbox series

Patch

diff --git a/mm/mlock.c b/mm/mlock.c
index fefa9644d0f9..fe278634ebe3 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -509,8 +509,6 @@  static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm,
 		return 0;
 
 	for (; vma ; vma = vma->vm_next) {
-		if (start >= vma->vm_end)
-			continue;
 		if (start + len <=  vma->vm_start)
 			break;
 		if (vma->vm_flags & VM_LOCKED) {