From: Jason Gunthorpe <jgg@nvidia.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Alistair Popple <apopple@nvidia.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
christian.koenig@amd.com, jhubbard@nvidia.com,
rcampbell@nvidia.com
Subject: Re: [PATCH v2] mm/mmu_notifier.c: Fix race in mmu_interval_notifier_remove()
Date: Thu, 21 Apr 2022 10:14:54 -0300 [thread overview]
Message-ID: <20220421131454.GG2120790@nvidia.com> (raw)
In-Reply-To: <20220420151142.f60307e749033a24ef0c68d5@linux-foundation.org>
On Wed, Apr 20, 2022 at 03:11:42PM -0700, Andrew Morton wrote:
> On Wed, 20 Apr 2022 14:37:34 +1000 Alistair Popple <apopple@nvidia.com> wrote:
>
> > In some cases it is possible for mmu_interval_notifier_remove() to race
> > with mn_tree_inv_end() allowing it to return while the notifier data
> > structure is still in use. Consider the following sequence:
> >
> > CPU0 - mn_tree_inv_end() CPU1 - mmu_interval_notifier_remove()
> > spin_lock(subscriptions->lock);
> > seq = subscriptions->invalidate_seq;
> > spin_lock(subscriptions->lock); spin_unlock(subscriptions->lock);
> > subscriptions->invalidate_seq++;
> > wait_event(invalidate_seq != seq);
> > return;
> > interval_tree_remove(interval_sub); kfree(interval_sub);
> > spin_unlock(subscriptions->lock);
> > wake_up_all();
> >
> > As the wait_event() condition is true it will return immediately. This
> > can lead to use-after-free type errors if the caller frees the data
> > structure containing the interval notifier subscription while it is
> > still on a deferred list. Fix this by taking the appropriate lock when
> > reading invalidate_seq to ensure proper synchronisation.
> >
> > ...
> >
> > Fixes: 99cb252f5e68 ("mm/mmu_notifier: add an interval tree notifier")
>
> Do you think fix this should be backported into older kernels?
I think it should be tagged stable, yes
Jason
prev parent reply other threads:[~2022-04-21 13:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-20 4:37 [PATCH v2] mm/mmu_notifier.c: Fix race in mmu_interval_notifier_remove() Alistair Popple
2022-04-20 22:11 ` Andrew Morton
2022-04-20 23:21 ` Alistair Popple
2022-04-20 23:35 ` Andrew Morton
2022-04-21 7:06 ` Alistair Popple
2022-04-21 13:14 ` Jason Gunthorpe [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220421131454.GG2120790@nvidia.com \
--to=jgg@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=christian.koenig@amd.com \
--cc=jhubbard@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rcampbell@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.