Messages in this thread | | | From | "Hefty, Sean" <> | Subject | RE: [PATCH] infiniband:core:Fix mutex locking to lock before unlocking in the function cma_ib_mc_handler | Date | Tue, 8 Sep 2015 16:34:26 +0000 |
| |
> This fixes mutex locking to lock before unlocking in the function > cma_ib_mc_handler for the mutex handler_mutex as part of the pointer > id_priv before unlocking it after the critical region for event handler > work and execution in order to have actual proper concurrent execution > protection around this critical region in the function cma_ib_mc_handler.
The call cma_disable_callback() acquires the mutex.
> --- > drivers/infiniband/core/cma.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c > index 143ded2..7b89195 100644 > --- a/drivers/infiniband/core/cma.c > +++ b/drivers/infiniband/core/cma.c > @@ -3158,6 +3158,7 @@ static int cma_ib_mc_handler(int status, struct > ib_sa_multicast *multicast) > } else > event.event = RDMA_CM_EVENT_MULTICAST_ERROR; > > + mutex_lock(&id_priv->handler_mutex);
This mutex is already held at this point.
> ret = id_priv->id.event_handler(&id_priv->id, &event); > if (ret) { > cma_exch(id_priv, RDMA_CM_DESTROYING); > -- > 2.1.4
| |