mm/mlock.c | 2 -- 1 file changed, 2 deletions(-)
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(-)
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) {
--
2.23.0
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.
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. > > . >
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. > >> >> . >> >
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. > >> >> . >> >
© 2016 - 2026 Red Hat, Inc.