aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/uverbs_cmd.c
diff options
context:
space:
mode:
authorGanapathi CH <cganapathi@novell.com>2006-06-17 20:37:40 -0700
committerRoland Dreier <rolandd@cisco.com>2006-06-17 20:37:40 -0700
commit77f76013e3ffda605b20184db5862ce1efcb6f5a (patch)
treece0c5fb39d891027e2609f74a160eb54b15dce37 /drivers/infiniband/core/uverbs_cmd.c
parentIB/cm: Use address handle helpers (diff)
downloadlinux-dev-77f76013e3ffda605b20184db5862ce1efcb6f5a.tar.xz
linux-dev-77f76013e3ffda605b20184db5862ce1efcb6f5a.zip
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/core/uverbs_cmd.c')
-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,
in_len - sizeof cmd, out_len - sizeof resp);
ucontext = ibdev->alloc_ucontext(ibdev, &udata);
- if (IS_ERR(ucontext))
- return PTR_ERR(file->ucontext);
+ if (IS_ERR(ucontext)) {
+ ret = PTR_ERR(file->ucontext);
+ goto err;
+ }
ucontext->device = ibdev;
INIT_LIST_HEAD(&ucontext->pd_list);