summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2008-07-22 23:18:10 +0200
committerRoland Dreier <rolandd@cisco.com>2008-07-22 23:18:10 +0200
commit1a867c33bb65f2921351a9bdd98548bb96f0ff8c (patch)
tree9daeb99a600105643d737be1b22bb916e3e6c5b0 /drivers/infiniband
parentIB/ehca: Use default value for Local CA ACK Delay if FW returns 0 (diff)
downloadlinux-1a867c33bb65f2921351a9bdd98548bb96f0ff8c.tar.xz
linux-1a867c33bb65f2921351a9bdd98548bb96f0ff8c.zip
IB/ehca: Release mutex in error path of alloc_small_queue_page()
The pd->lock mutex is released on a successful return, so it should be released on an error return as well. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ expression l; @@ mutex_lock(l); ... when != mutex_unlock(l) when any when strict ( if (...) { ... when != mutex_unlock(l) + mutex_unlock(l); return ...; } | mutex_unlock(l); ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/ehca/ipz_pt_fn.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ehca/ipz_pt_fn.c b/drivers/infiniband/hw/ehca/ipz_pt_fn.c
index 661f8db62706..c3a328465431 100644
--- a/drivers/infiniband/hw/ehca/ipz_pt_fn.c
+++ b/drivers/infiniband/hw/ehca/ipz_pt_fn.c
@@ -163,6 +163,7 @@ static int alloc_small_queue_page(struct ipz_queue *queue, struct ehca_pd *pd)
out:
ehca_err(pd->ib_pd.device, "failed to allocate small queue page");
+ mutex_unlock(&pd->lock);
return 0;
}