IB: convert from semaphores to mutexes

semaphore to mutex conversion by Ingo and Arjan's script.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
[ Sanity-checked on real IB hardware ]
Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
Ingo Molnar
2006-01-13 14:51:39 -08:00
committed by Roland Dreier
parent 9eacee2ac6
commit 95ed644fd1
11 changed files with 145 additions and 144 deletions

View File

@ -67,7 +67,7 @@ ssize_t ib_uverbs_get_context(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&file->mutex);
mutex_lock(&file->mutex);
if (file->ucontext) {
ret = -EINVAL;
@ -119,7 +119,7 @@ ssize_t ib_uverbs_get_context(struct ib_uverbs_file *file,
fd_install(resp.async_fd, filp);
up(&file->mutex);
mutex_unlock(&file->mutex);
return in_len;
@ -131,7 +131,7 @@ err_free:
ibdev->dealloc_ucontext(ucontext);
err:
up(&file->mutex);
mutex_unlock(&file->mutex);
return ret;
}
@ -290,7 +290,7 @@ ssize_t ib_uverbs_alloc_pd(struct ib_uverbs_file *file,
pd->uobject = uobj;
atomic_set(&pd->usecnt, 0);
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
retry:
if (!idr_pre_get(&ib_uverbs_pd_idr, GFP_KERNEL)) {
@ -314,11 +314,11 @@ retry:
goto err_idr;
}
down(&file->mutex);
mutex_lock(&file->mutex);
list_add_tail(&uobj->list, &file->ucontext->pd_list);
up(&file->mutex);
mutex_unlock(&file->mutex);
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return in_len;
@ -326,7 +326,7 @@ err_idr:
idr_remove(&ib_uverbs_pd_idr, uobj->id);
err_up:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
ib_dealloc_pd(pd);
err:
@ -346,7 +346,7 @@ ssize_t ib_uverbs_dealloc_pd(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
pd = idr_find(&ib_uverbs_pd_idr, cmd.pd_handle);
if (!pd || pd->uobject->context != file->ucontext)
@ -360,14 +360,14 @@ ssize_t ib_uverbs_dealloc_pd(struct ib_uverbs_file *file,
idr_remove(&ib_uverbs_pd_idr, cmd.pd_handle);
down(&file->mutex);
mutex_lock(&file->mutex);
list_del(&uobj->list);
up(&file->mutex);
mutex_unlock(&file->mutex);
kfree(uobj);
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -426,7 +426,7 @@ ssize_t ib_uverbs_reg_mr(struct ib_uverbs_file *file,
obj->umem.virt_base = cmd.hca_va;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
pd = idr_find(&ib_uverbs_pd_idr, cmd.pd_handle);
if (!pd || pd->uobject->context != file->ucontext) {
@ -476,11 +476,11 @@ retry:
goto err_idr;
}
down(&file->mutex);
mutex_lock(&file->mutex);
list_add_tail(&obj->uobject.list, &file->ucontext->mr_list);
up(&file->mutex);
mutex_unlock(&file->mutex);
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return in_len;
@ -492,7 +492,7 @@ err_unreg:
atomic_dec(&pd->usecnt);
err_up:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
ib_umem_release(file->device->ib_dev, &obj->umem);
@ -513,7 +513,7 @@ ssize_t ib_uverbs_dereg_mr(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
mr = idr_find(&ib_uverbs_mr_idr, cmd.mr_handle);
if (!mr || mr->uobject->context != file->ucontext)
@ -527,15 +527,15 @@ ssize_t ib_uverbs_dereg_mr(struct ib_uverbs_file *file,
idr_remove(&ib_uverbs_mr_idr, cmd.mr_handle);
down(&file->mutex);
mutex_lock(&file->mutex);
list_del(&memobj->uobject.list);
up(&file->mutex);
mutex_unlock(&file->mutex);
ib_umem_release(file->device->ib_dev, &memobj->umem);
kfree(memobj);
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -628,7 +628,7 @@ ssize_t ib_uverbs_create_cq(struct ib_uverbs_file *file,
cq->cq_context = ev_file;
atomic_set(&cq->usecnt, 0);
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
retry:
if (!idr_pre_get(&ib_uverbs_cq_idr, GFP_KERNEL)) {
@ -653,11 +653,11 @@ retry:
goto err_idr;
}
down(&file->mutex);
mutex_lock(&file->mutex);
list_add_tail(&uobj->uobject.list, &file->ucontext->cq_list);
up(&file->mutex);
mutex_unlock(&file->mutex);
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return in_len;
@ -665,7 +665,7 @@ err_idr:
idr_remove(&ib_uverbs_cq_idr, uobj->uobject.id);
err_up:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
ib_destroy_cq(cq);
err:
@ -701,7 +701,7 @@ ssize_t ib_uverbs_poll_cq(struct ib_uverbs_file *file,
goto out_wc;
}
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
cq = idr_find(&ib_uverbs_cq_idr, cmd.cq_handle);
if (!cq || cq->uobject->context != file->ucontext) {
ret = -EINVAL;
@ -731,7 +731,7 @@ ssize_t ib_uverbs_poll_cq(struct ib_uverbs_file *file,
ret = -EFAULT;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
kfree(resp);
out_wc:
@ -750,14 +750,14 @@ ssize_t ib_uverbs_req_notify_cq(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
cq = idr_find(&ib_uverbs_cq_idr, cmd.cq_handle);
if (cq && cq->uobject->context == file->ucontext) {
ib_req_notify_cq(cq, cmd.solicited_only ?
IB_CQ_SOLICITED : IB_CQ_NEXT_COMP);
ret = in_len;
}
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret;
}
@ -779,7 +779,7 @@ ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file,
memset(&resp, 0, sizeof resp);
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
cq = idr_find(&ib_uverbs_cq_idr, cmd.cq_handle);
if (!cq || cq->uobject->context != file->ucontext)
@ -795,9 +795,9 @@ ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file,
idr_remove(&ib_uverbs_cq_idr, cmd.cq_handle);
down(&file->mutex);
mutex_lock(&file->mutex);
list_del(&uobj->uobject.list);
up(&file->mutex);
mutex_unlock(&file->mutex);
ib_uverbs_release_ucq(file, ev_file, uobj);
@ -811,7 +811,7 @@ ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file,
ret = -EFAULT;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -845,7 +845,7 @@ ssize_t ib_uverbs_create_qp(struct ib_uverbs_file *file,
if (!uobj)
return -ENOMEM;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
pd = idr_find(&ib_uverbs_pd_idr, cmd.pd_handle);
scq = idr_find(&ib_uverbs_cq_idr, cmd.send_cq_handle);
@ -930,11 +930,11 @@ retry:
goto err_idr;
}
down(&file->mutex);
mutex_lock(&file->mutex);
list_add_tail(&uobj->uevent.uobject.list, &file->ucontext->qp_list);
up(&file->mutex);
mutex_unlock(&file->mutex);
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return in_len;
@ -950,7 +950,7 @@ err_destroy:
atomic_dec(&attr.srq->usecnt);
err_up:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
kfree(uobj);
return ret;
@ -972,7 +972,7 @@ ssize_t ib_uverbs_modify_qp(struct ib_uverbs_file *file,
if (!attr)
return -ENOMEM;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
qp = idr_find(&ib_uverbs_qp_idr, cmd.qp_handle);
if (!qp || qp->uobject->context != file->ucontext) {
@ -1033,7 +1033,7 @@ ssize_t ib_uverbs_modify_qp(struct ib_uverbs_file *file,
ret = in_len;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
kfree(attr);
return ret;
@ -1054,7 +1054,7 @@ ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file,
memset(&resp, 0, sizeof resp);
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
qp = idr_find(&ib_uverbs_qp_idr, cmd.qp_handle);
if (!qp || qp->uobject->context != file->ucontext)
@ -1073,9 +1073,9 @@ ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file,
idr_remove(&ib_uverbs_qp_idr, cmd.qp_handle);
down(&file->mutex);
mutex_lock(&file->mutex);
list_del(&uobj->uevent.uobject.list);
up(&file->mutex);
mutex_unlock(&file->mutex);
ib_uverbs_release_uevent(file, &uobj->uevent);
@ -1088,7 +1088,7 @@ ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file,
ret = -EFAULT;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -1119,7 +1119,7 @@ ssize_t ib_uverbs_post_send(struct ib_uverbs_file *file,
if (!user_wr)
return -ENOMEM;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
qp = idr_find(&ib_uverbs_qp_idr, cmd.qp_handle);
if (!qp || qp->uobject->context != file->ucontext)
@ -1224,7 +1224,7 @@ ssize_t ib_uverbs_post_send(struct ib_uverbs_file *file,
ret = -EFAULT;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
while (wr) {
next = wr->next;
@ -1341,7 +1341,7 @@ ssize_t ib_uverbs_post_recv(struct ib_uverbs_file *file,
if (IS_ERR(wr))
return PTR_ERR(wr);
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
qp = idr_find(&ib_uverbs_qp_idr, cmd.qp_handle);
if (!qp || qp->uobject->context != file->ucontext)
@ -1362,7 +1362,7 @@ ssize_t ib_uverbs_post_recv(struct ib_uverbs_file *file,
ret = -EFAULT;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
while (wr) {
next = wr->next;
@ -1392,7 +1392,7 @@ ssize_t ib_uverbs_post_srq_recv(struct ib_uverbs_file *file,
if (IS_ERR(wr))
return PTR_ERR(wr);
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
srq = idr_find(&ib_uverbs_srq_idr, cmd.srq_handle);
if (!srq || srq->uobject->context != file->ucontext)
@ -1413,7 +1413,7 @@ ssize_t ib_uverbs_post_srq_recv(struct ib_uverbs_file *file,
ret = -EFAULT;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
while (wr) {
next = wr->next;
@ -1446,7 +1446,7 @@ ssize_t ib_uverbs_create_ah(struct ib_uverbs_file *file,
if (!uobj)
return -ENOMEM;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
pd = idr_find(&ib_uverbs_pd_idr, cmd.pd_handle);
if (!pd || pd->uobject->context != file->ucontext) {
@ -1498,11 +1498,11 @@ retry:
goto err_idr;
}
down(&file->mutex);
mutex_lock(&file->mutex);
list_add_tail(&uobj->list, &file->ucontext->ah_list);
up(&file->mutex);
mutex_unlock(&file->mutex);
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return in_len;
@ -1513,7 +1513,7 @@ err_destroy:
ib_destroy_ah(ah);
err_up:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
kfree(uobj);
return ret;
@ -1530,7 +1530,7 @@ ssize_t ib_uverbs_destroy_ah(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
ah = idr_find(&ib_uverbs_ah_idr, cmd.ah_handle);
if (!ah || ah->uobject->context != file->ucontext)
@ -1544,14 +1544,14 @@ ssize_t ib_uverbs_destroy_ah(struct ib_uverbs_file *file,
idr_remove(&ib_uverbs_ah_idr, cmd.ah_handle);
down(&file->mutex);
mutex_lock(&file->mutex);
list_del(&uobj->list);
up(&file->mutex);
mutex_unlock(&file->mutex);
kfree(uobj);
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -1569,7 +1569,7 @@ ssize_t ib_uverbs_attach_mcast(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
qp = idr_find(&ib_uverbs_qp_idr, cmd.qp_handle);
if (!qp || qp->uobject->context != file->ucontext)
@ -1602,7 +1602,7 @@ ssize_t ib_uverbs_attach_mcast(struct ib_uverbs_file *file,
kfree(mcast);
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -1620,7 +1620,7 @@ ssize_t ib_uverbs_detach_mcast(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
qp = idr_find(&ib_uverbs_qp_idr, cmd.qp_handle);
if (!qp || qp->uobject->context != file->ucontext)
@ -1641,7 +1641,7 @@ ssize_t ib_uverbs_detach_mcast(struct ib_uverbs_file *file,
}
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -1673,7 +1673,7 @@ ssize_t ib_uverbs_create_srq(struct ib_uverbs_file *file,
if (!uobj)
return -ENOMEM;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
pd = idr_find(&ib_uverbs_pd_idr, cmd.pd_handle);
@ -1730,11 +1730,11 @@ retry:
goto err_idr;
}
down(&file->mutex);
mutex_lock(&file->mutex);
list_add_tail(&uobj->uobject.list, &file->ucontext->srq_list);
up(&file->mutex);
mutex_unlock(&file->mutex);
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return in_len;
@ -1746,7 +1746,7 @@ err_destroy:
atomic_dec(&pd->usecnt);
err_up:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
kfree(uobj);
return ret;
@ -1764,7 +1764,7 @@ ssize_t ib_uverbs_modify_srq(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
srq = idr_find(&ib_uverbs_srq_idr, cmd.srq_handle);
if (!srq || srq->uobject->context != file->ucontext) {
@ -1778,7 +1778,7 @@ ssize_t ib_uverbs_modify_srq(struct ib_uverbs_file *file,
ret = ib_modify_srq(srq, &attr, cmd.attr_mask);
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}
@ -1796,7 +1796,7 @@ ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file,
if (copy_from_user(&cmd, buf, sizeof cmd))
return -EFAULT;
down(&ib_uverbs_idr_mutex);
mutex_lock(&ib_uverbs_idr_mutex);
memset(&resp, 0, sizeof resp);
@ -1812,9 +1812,9 @@ ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file,
idr_remove(&ib_uverbs_srq_idr, cmd.srq_handle);
down(&file->mutex);
mutex_lock(&file->mutex);
list_del(&uobj->uobject.list);
up(&file->mutex);
mutex_unlock(&file->mutex);
ib_uverbs_release_uevent(file, uobj);
@ -1827,7 +1827,7 @@ ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file,
ret = -EFAULT;
out:
up(&ib_uverbs_idr_mutex);
mutex_unlock(&ib_uverbs_idr_mutex);
return ret ? ret : in_len;
}