diff options
author | Julia Lawall <julia@diku.dk> | 2008-07-22 14:18:10 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2008-07-22 14:18:10 -0700 |
commit | 1a867c33bb65f2921351a9bdd98548bb96f0ff8c (patch) | |
tree | 9daeb99a600105643d737be1b22bb916e3e6c5b0 /drivers/infiniband | |
parent | 593e4d4a05c8263a6dbd5452c21d47c5bdadd40c (diff) | |
download | linux-1a867c33bb65f2921351a9bdd98548bb96f0ff8c.tar.gz linux-1a867c33bb65f2921351a9bdd98548bb96f0ff8c.tar.bz2 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.c | 1 |
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; } |