aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorGanapathi CH <cganapathi@novell.com>2006-06-17 23:37:40 -0400
committerRoland Dreier <rolandd@cisco.com>2006-06-17 23:37:40 -0400
commit77f76013e3ffda605b20184db5862ce1efcb6f5a (patch)
treece0c5fb39d891027e2609f74a160eb54b15dce37 /drivers/infiniband
parentca222c6b2c48e1e0be330a55611ba394251330cb (diff)
IB/uverbs: Release lock on error path
If ibdev->alloc_ucontext() fails then ib_uverbs_get_context() does not unlock file->mutex before returning error. Signed-off by: Ganapathi CH <cganapathi@novell.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/uverbs_cmd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 9f69bd48eb1b..4266d2e5eba4 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -80,8 +80,10 @@ ssize_t ib_uverbs_get_context(struct ib_uverbs_file *file,
80 in_len - sizeof cmd, out_len - sizeof resp); 80 in_len - sizeof cmd, out_len - sizeof resp);
81 81
82 ucontext = ibdev->alloc_ucontext(ibdev, &udata); 82 ucontext = ibdev->alloc_ucontext(ibdev, &udata);
83 if (IS_ERR(ucontext)) 83 if (IS_ERR(ucontext)) {
84 return PTR_ERR(file->ucontext); 84 ret = PTR_ERR(file->ucontext);
85 goto err;
86 }
85 87
86 ucontext->device = ibdev; 88 ucontext->device = ibdev;
87 INIT_LIST_HEAD(&ucontext->pd_list); 89 INIT_LIST_HEAD(&ucontext->pd_list);