diff mbox series

[1/1] mm/nommu: remove unnecessary VMA locking

Message ID 20230301190457.1498985-1-surenb@google.com (mailing list archive)
State New
Headers show
Series [1/1] mm/nommu: remove unnecessary VMA locking | expand

Commit Message

Suren Baghdasaryan March 1, 2023, 7:04 p.m. UTC
Since CONFIG_PER_VMA_LOCK depends on CONFIG_MMU, the changes in nommu
are not needed. Remove them.

Fixes: bad94decd6a4 ("mm: write-lock VMAs before removing them from VMA tree")
Reported-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Link: https://lore.kernel.org/all/Y%2F8CJQGNuMUTdLwP@localhost/
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
---
Fix cleanly applies over mm-unstable, SHA in "Fixes" is from that tree.

 mm/nommu.c | 5 -----
 1 file changed, 5 deletions(-)

Comments

David Hildenbrand March 2, 2023, 9:41 a.m. UTC | #1
On 01.03.23 20:04, Suren Baghdasaryan wrote:
> Since CONFIG_PER_VMA_LOCK depends on CONFIG_MMU, the changes in nommu
> are not needed. Remove them.
> 
> Fixes: bad94decd6a4 ("mm: write-lock VMAs before removing them from VMA tree")
> Reported-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
> Link: https://lore.kernel.org/all/Y%2F8CJQGNuMUTdLwP@localhost/
> Signed-off-by: Suren Baghdasaryan <surenb@google.com>
> ---
> Fix cleanly applies over mm-unstable, SHA in "Fixes" is from that tree.
> 
>   mm/nommu.c | 5 -----
>   1 file changed, 5 deletions(-)
> 
> diff --git a/mm/nommu.c b/mm/nommu.c
> index 2ab162d773e2..57ba243c6a37 100644
> --- a/mm/nommu.c
> +++ b/mm/nommu.c
> @@ -588,7 +588,6 @@ static int delete_vma_from_mm(struct vm_area_struct *vma)
>   		       current->pid);
>   		return -ENOMEM;
>   	}
> -	vma_start_write(vma);
>   	cleanup_vma_from_mm(vma);
>   
>   	/* remove from the MM's tree and list */
> @@ -1520,10 +1519,6 @@ void exit_mmap(struct mm_struct *mm)
>   	 */
>   	mmap_write_lock(mm);
>   	for_each_vma(vmi, vma) {
> -		/*
> -		 * No need to lock VMA because this is the only mm user and no
> -		 * page fault handled can race with it.
> -		 */
>   		cleanup_vma_from_mm(vma);
>   		delete_vma(mm, vma);
>   		cond_resched();

So, i assume this should be squashed.

Reviewed-by: David Hildenbrand <david@redhat.com>


Just a general comment: usually, if review of the original series is 
still going on, it makes a lot more sense to raise such things in the 
original series so the author can fixup while things are still in 
mm-unstable. Once the series is in mm-stable, it's a different story. In 
that case, it is usually good to have the mail subjects be something 
like  "[PATCH mm-stable 1/1] ...".
Suren Baghdasaryan March 3, 2023, 1:34 a.m. UTC | #2
On Thu, Mar 2, 2023 at 1:41 AM David Hildenbrand <david@redhat.com> wrote:
>
> On 01.03.23 20:04, Suren Baghdasaryan wrote:
> > Since CONFIG_PER_VMA_LOCK depends on CONFIG_MMU, the changes in nommu
> > are not needed. Remove them.
> >
> > Fixes: bad94decd6a4 ("mm: write-lock VMAs before removing them from VMA tree")
> > Reported-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
> > Link: https://lore.kernel.org/all/Y%2F8CJQGNuMUTdLwP@localhost/
> > Signed-off-by: Suren Baghdasaryan <surenb@google.com>
> > ---
> > Fix cleanly applies over mm-unstable, SHA in "Fixes" is from that tree.
> >
> >   mm/nommu.c | 5 -----
> >   1 file changed, 5 deletions(-)
> >
> > diff --git a/mm/nommu.c b/mm/nommu.c
> > index 2ab162d773e2..57ba243c6a37 100644
> > --- a/mm/nommu.c
> > +++ b/mm/nommu.c
> > @@ -588,7 +588,6 @@ static int delete_vma_from_mm(struct vm_area_struct *vma)
> >                      current->pid);
> >               return -ENOMEM;
> >       }
> > -     vma_start_write(vma);
> >       cleanup_vma_from_mm(vma);
> >
> >       /* remove from the MM's tree and list */
> > @@ -1520,10 +1519,6 @@ void exit_mmap(struct mm_struct *mm)
> >        */
> >       mmap_write_lock(mm);
> >       for_each_vma(vmi, vma) {
> > -             /*
> > -              * No need to lock VMA because this is the only mm user and no
> > -              * page fault handled can race with it.
> > -              */
> >               cleanup_vma_from_mm(vma);
> >               delete_vma(mm, vma);
> >               cond_resched();
>
> So, i assume this should be squashed.

Yes, that would be best.

>
> Reviewed-by: David Hildenbrand <david@redhat.com>

Thanks1

>
>
> Just a general comment: usually, if review of the original series is
> still going on, it makes a lot more sense to raise such things in the
> original series so the author can fixup while things are still in
> mm-unstable. Once the series is in mm-stable, it's a different story. In
> that case, it is usually good to have the mail subjects be something
> like  "[PATCH mm-stable 1/1] ...".

Ok... For my education, do you mean the title of this patch should
somehow reflect that it should be folded into the original patch? Just
trying to understand the actionable item here. How would you change
this patch when posting for mm-unstable and for mm-stable?
Thanks,
Suren.

>
> --
> Thanks,
>
> David / dhildenb
>
David Hildenbrand March 3, 2023, 9:05 a.m. UTC | #3
>>
>> Just a general comment: usually, if review of the original series is
>> still going on, it makes a lot more sense to raise such things in the
>> original series so the author can fixup while things are still in
>> mm-unstable. Once the series is in mm-stable, it's a different story. In
>> that case, it is usually good to have the mail subjects be something
>> like  "[PATCH mm-stable 1/1] ...".
> 
> Ok... For my education, do you mean the title of this patch should
> somehow reflect that it should be folded into the original patch? Just
> trying to understand the actionable item here. How would you change
> this patch when posting for mm-unstable and for mm-stable?

For patches that fixup something in mm-stable (stable commit ID but not 
yet master -> we cannot squash anymore so we need separate commits), 
it's good to include "mm-stable". The main difference to patches that 
target master is that by indicating "mm-stable", everyone knows that 
this is not broken in some upstream/production kernel.


For patches that fixup something that is in mm-unstable (no stable 
commit ID -> still under review and fixup easily possible), IMHO we 
distinguish between two cases:

(1) You fixup your own patches: simply send the fixup as reply to the 
original patch. Andrew will pick it up and squash it before including it 
in mm-stable. Sometimes a complete resend of a series makes sense instead.

(2) You fixup patches from someone else: simply raise it as a review 
comment in reply to the original patch. It might make sense to send a 
patch, but usually you just raise the issue to the patch author as a 
review comment and the author will address that. Again, Andrew will pick 
it up and squash it before moving it to mm-stable.


That way, it's clearer when stumbling over patches on the mailing list 
if they fix a real issue in upstream, fix a issue in 
soon-to-be-upstream, or are simply part of a WIP series that is still 
under review.
Suren Baghdasaryan March 3, 2023, 4:14 p.m. UTC | #4
On Fri, Mar 3, 2023 at 1:05 AM David Hildenbrand <david@redhat.com> wrote:
>
> >>
> >> Just a general comment: usually, if review of the original series is
> >> still going on, it makes a lot more sense to raise such things in the
> >> original series so the author can fixup while things are still in
> >> mm-unstable. Once the series is in mm-stable, it's a different story. In
> >> that case, it is usually good to have the mail subjects be something
> >> like  "[PATCH mm-stable 1/1] ...".
> >
> > Ok... For my education, do you mean the title of this patch should
> > somehow reflect that it should be folded into the original patch? Just
> > trying to understand the actionable item here. How would you change
> > this patch when posting for mm-unstable and for mm-stable?
>
> For patches that fixup something in mm-stable (stable commit ID but not
> yet master -> we cannot squash anymore so we need separate commits),
> it's good to include "mm-stable". The main difference to patches that
> target master is that by indicating "mm-stable", everyone knows that
> this is not broken in some upstream/production kernel.
>
>
> For patches that fixup something that is in mm-unstable (no stable
> commit ID -> still under review and fixup easily possible), IMHO we
> distinguish between two cases:
>
> (1) You fixup your own patches: simply send the fixup as reply to the
> original patch. Andrew will pick it up and squash it before including it
> in mm-stable. Sometimes a complete resend of a series makes sense instead.
>
> (2) You fixup patches from someone else: simply raise it as a review
> comment in reply to the original patch. It might make sense to send a
> patch, but usually you just raise the issue to the patch author as a
> review comment and the author will address that. Again, Andrew will pick
> it up and squash it before moving it to mm-stable.
>
>
> That way, it's clearer when stumbling over patches on the mailing list
> if they fix a real issue in upstream, fix a issue in
> soon-to-be-upstream, or are simply part of a WIP series that is still
> under review.

Thanks for the detailed explanation, David. I'll post fixups to
mm-unstable patches by replying to the original ones from now on.
Interestingly enough, I have another fix today (internal syzcaller
found a potential deadlock) which might be interesting enough to be in
a separate patch. So, I'll post it as a separate patch and we can
discuss whether it should be squashed or kept apart.
Thanks,
Suren.

>
> --
> Thanks,
>
> David / dhildenb
>
diff mbox series

Patch

diff --git a/mm/nommu.c b/mm/nommu.c
index 2ab162d773e2..57ba243c6a37 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -588,7 +588,6 @@  static int delete_vma_from_mm(struct vm_area_struct *vma)
 		       current->pid);
 		return -ENOMEM;
 	}
-	vma_start_write(vma);
 	cleanup_vma_from_mm(vma);
 
 	/* remove from the MM's tree and list */
@@ -1520,10 +1519,6 @@  void exit_mmap(struct mm_struct *mm)
 	 */
 	mmap_write_lock(mm);
 	for_each_vma(vmi, vma) {
-		/*
-		 * No need to lock VMA because this is the only mm user and no
-		 * page fault handled can race with it.
-		 */
 		cleanup_vma_from_mm(vma);
 		delete_vma(mm, vma);
 		cond_resched();