dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Jerome Glisse <jglisse@redhat.com>,
	Ralph Campbell <rcampbell@nvidia.com>,
	John Hubbard <jhubbard@nvidia.com>,
	Felix.Kuehling@amd.com
Cc: Andrea Arcangeli <aarcange@redhat.com>,
	Philip Yang <Philip.Yang@amd.com>,
	linux-rdma@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	linux-mm@kvack.org, Jason Gunthorpe <jgg@mellanox.com>,
	dri-devel@lists.freedesktop.org, Ben Skeggs <bskeggs@redhat.com>
Subject: [PATCH v3 hmm 08/12] mm/hmm: Remove racy protection against double-unregistration
Date: Thu, 13 Jun 2019 21:44:46 -0300	[thread overview]
Message-ID: <20190614004450.20252-9-jgg@ziepe.ca> (raw)
In-Reply-To: <20190614004450.20252-1-jgg@ziepe.ca>

From: Jason Gunthorpe <jgg@mellanox.com>

No other register/unregister kernel API attempts to provide this kind of
protection as it is inherently racy, so just drop it.

Callers should provide their own protection, it appears nouveau already
does, but just in case drop a debugging POISON.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Reviewed-by: Jérôme Glisse <jglisse@redhat.com>
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
Reviewed-by: Ralph Campbell <rcampbell@nvidia.com>
Tested-by: Philip Yang <Philip.Yang@amd.com>
---
 mm/hmm.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/mm/hmm.c b/mm/hmm.c
index c0f622f86223c2..e3e0a811a3a774 100644
--- a/mm/hmm.c
+++ b/mm/hmm.c
@@ -283,18 +283,13 @@ EXPORT_SYMBOL(hmm_mirror_register);
  */
 void hmm_mirror_unregister(struct hmm_mirror *mirror)
 {
-	struct hmm *hmm = READ_ONCE(mirror->hmm);
-
-	if (hmm == NULL)
-		return;
+	struct hmm *hmm = mirror->hmm;
 
 	down_write(&hmm->mirrors_sem);
 	list_del_init(&mirror->list);
-	/* To protect us against double unregister ... */
-	mirror->hmm = NULL;
 	up_write(&hmm->mirrors_sem);
-
 	hmm_put(hmm);
+	memset(&mirror->hmm, POISON_INUSE, sizeof(mirror->hmm));
 }
 EXPORT_SYMBOL(hmm_mirror_unregister);
 
-- 
2.21.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2019-06-14  0:44 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-14  0:44 [PATCH v3 hmm 00/12] mm/hmm: Various revisions from a locking/code review Jason Gunthorpe
2019-06-14  0:44 ` [PATCH v3 hmm 01/12] mm/hmm: fix use after free with struct hmm in the mmu notifiers Jason Gunthorpe
     [not found]   ` <20190614004450.20252-2-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 13:56     ` Christoph Hellwig
2019-06-14  0:44 ` [PATCH v3 hmm 02/12] mm/hmm: Use hmm_mirror not mm as an argument for hmm_range_register Jason Gunthorpe
     [not found]   ` <20190614004450.20252-3-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 13:59     ` Christoph Hellwig
2019-06-18 13:05       ` Jason Gunthorpe
     [not found]         ` <20190618130544.GC6961-uk2M96/98Pc@public.gmane.org>
2019-06-19  8:14           ` Christoph Hellwig
2019-06-14  0:44 ` [PATCH v3 hmm 03/12] mm/hmm: Hold a mmgrab from hmm to mm Jason Gunthorpe
     [not found]   ` <20190614004450.20252-4-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 13:59     ` Christoph Hellwig
2019-06-14  0:44 ` [PATCH v3 hmm 04/12] mm/hmm: Simplify hmm_get_or_create and make it reliable Jason Gunthorpe
     [not found]   ` <20190614004450.20252-5-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:12     ` Christoph Hellwig
2019-06-18  0:36       ` Jason Gunthorpe
2019-06-18 18:55       ` Jason Gunthorpe
2019-06-14  0:44 ` [PATCH v3 hmm 05/12] mm/hmm: Remove duplicate condition test before wait_event_timeout Jason Gunthorpe
     [not found]   ` <20190614004450.20252-6-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:12     ` Christoph Hellwig
2019-06-14  0:44 ` [PATCH v3 hmm 06/12] mm/hmm: Hold on to the mmget for the lifetime of the range Jason Gunthorpe
     [not found]   ` <20190614004450.20252-7-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:14     ` Christoph Hellwig
2019-06-18 15:11       ` Jason Gunthorpe
     [not found]         ` <20190618151100.GI6961-uk2M96/98Pc@public.gmane.org>
2019-06-19  8:18           ` Christoph Hellwig
2019-06-19 11:34             ` Jason Gunthorpe
     [not found]               ` <20190619113452.GB9360-uk2M96/98Pc@public.gmane.org>
2019-06-19 11:54                 ` Christoph Hellwig
2019-06-14  0:44 ` [PATCH v3 hmm 07/12] mm/hmm: Use lockdep instead of comments Jason Gunthorpe
     [not found]   ` <20190614004450.20252-8-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:14     ` Christoph Hellwig
2019-06-14  0:44 ` Jason Gunthorpe [this message]
     [not found]   ` <20190614004450.20252-9-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:16     ` [PATCH v3 hmm 08/12] mm/hmm: Remove racy protection against double-unregistration Christoph Hellwig
2019-06-18 13:13       ` Jason Gunthorpe
     [not found]         ` <20190618131324.GF6961-uk2M96/98Pc@public.gmane.org>
2019-06-18 13:27           ` Christoph Hellwig
2019-06-18 18:57             ` Jason Gunthorpe
     [not found]               ` <20190618185757.GP6961-uk2M96/98Pc@public.gmane.org>
2019-06-19  8:19                 ` Christoph Hellwig
2019-06-14  0:44 ` [PATCH v3 hmm 09/12] mm/hmm: Poison hmm_range during unregister Jason Gunthorpe
     [not found]   ` <20190614004450.20252-10-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:17     ` Christoph Hellwig
2019-06-18 18:04       ` Jason Gunthorpe
2019-06-14  0:44 ` [PATCH v3 hmm 10/12] mm/hmm: Do not use list*_rcu() for hmm->ranges Jason Gunthorpe
     [not found]   ` <20190614004450.20252-11-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:18     ` Christoph Hellwig
2019-06-18  0:38       ` Jason Gunthorpe
2019-06-14  0:44 ` [PATCH v3 hmm 11/12] mm/hmm: Remove confusing comment and logic from hmm_release Jason Gunthorpe
     [not found]   ` <20190614004450.20252-12-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:21     ` Christoph Hellwig
2019-06-18  0:45       ` Jason Gunthorpe
     [not found]         ` <20190618004509.GE30762-uk2M96/98Pc@public.gmane.org>
2019-06-18  5:37           ` Christoph Hellwig
     [not found]             ` <20190618053733.GA25048-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2019-06-19  0:53               ` Kuehling, Felix
     [not found]                 ` <be4f8573-6284-04a6-7862-23bb357bfe3c-5C7GfCeVMHo@public.gmane.org>
2019-06-19  8:07                   ` Christoph Hellwig
2019-06-19 11:56                     ` Jason Gunthorpe
     [not found]                       ` <20190619115632.GC9360-uk2M96/98Pc@public.gmane.org>
2019-06-19 12:03                         ` Christoph Hellwig
2019-06-14  0:44 ` [PATCH v3 hmm 12/12] mm/hmm: Fix error flows in hmm_invalidate_range_start Jason Gunthorpe
     [not found]   ` <20190614004450.20252-13-jgg-uk2M96/98Pc@public.gmane.org>
2019-06-15 14:25     ` Christoph Hellwig

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=20190614004450.20252-9-jgg@ziepe.ca \
    --to=jgg@ziepe.ca \
    --cc=Felix.Kuehling@amd.com \
    --cc=Philip.Yang@amd.com \
    --cc=aarcange@redhat.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=bskeggs@redhat.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jgg@mellanox.com \
    --cc=jglisse@redhat.com \
    --cc=jhubbard@nvidia.com \
    --cc=linux-mm@kvack.org \
    --cc=linux-rdma@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).