diff options
author | Ganapathi CH <cganapathi@novell.com> | 2006-06-17 23:37:40 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-06-17 23:37:40 -0400 |
commit | 77f76013e3ffda605b20184db5862ce1efcb6f5a (patch) | |
tree | ce0c5fb39d891027e2609f74a160eb54b15dce37 /drivers/infiniband | |
parent | ca222c6b2c48e1e0be330a55611ba394251330cb (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.c | 6 |
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); |