RDMA/umem: Restore lockdep check while downgrading lock
authorLeon Romanovsky <leonro@mellanox.com>
Mon, 3 Sep 2018 17:17:31 +0000 (20:17 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 6 Sep 2018 20:26:51 +0000 (14:26 -0600)
Lockdep engine handles correctly downgrade of locks and it simply
incorrect to disable lockdep checks prior to calling mmu_notifier.

Remove lockdep_off and ensure locks correctness.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/umem_odp.c

index 6ec748e..29e34e6 100644 (file)
@@ -431,13 +431,7 @@ int ib_umem_odp_get(struct ib_ucontext *context, struct ib_umem *umem,
                atomic_set(&context->notifier_count, 0);
                INIT_HLIST_NODE(&context->mn.hlist);
                context->mn.ops = &ib_umem_notifiers;
-               /*
-                * Lock-dep detects a false positive for mmap_sem vs.
-                * umem_rwsem, due to not grasping downgrade_write correctly.
-                */
-               lockdep_off();
                ret_val = mmu_notifier_register(&context->mn, mm);
-               lockdep_on();
                if (ret_val) {
                        pr_err("Failed to register mmu_notifier %d\n", ret_val);
                        ret_val = -EBUSY;