]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mm/hmm: Remove racy protection against double-unregistration
authorJason Gunthorpe <jgg@mellanox.com>
Thu, 23 May 2019 14:31:45 +0000 (11:31 -0300)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 24 Jun 2019 20:37:10 +0000 (17:37 -0300)
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, and it appears nouveau
already does.

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>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Tested-by: Philip Yang <Philip.Yang@amd.com>
mm/hmm.c

index 6f5dc6d568feb106030f3c0032a061c827ebac51..2ef14b2b5505f69309c43dfd0c60105288b5c358 100644 (file)
--- a/mm/hmm.c
+++ b/mm/hmm.c
@@ -276,17 +276,11 @@ 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);
 }
 EXPORT_SYMBOL(hmm_mirror_unregister);