diff options
author | Roland Dreier <rolandd@cisco.com> | 2006-05-17 22:20:50 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-05-17 22:20:50 -0700 |
commit | 0cb4fe8d2658dc0bd1accfbb74ee288a9d6788f4 (patch) | |
tree | 26d1c7122d28acecb99698aef362d667b684bfb6 /drivers | |
parent | 093beac189e4295d968f0d38787b46f76cb0eaaa (diff) | |
download | op-kernel-dev-0cb4fe8d2658dc0bd1accfbb74ee288a9d6788f4.zip op-kernel-dev-0cb4fe8d2658dc0bd1accfbb74ee288a9d6788f4.tar.gz |
IB/uverbs: Don't leak ref to mm on error path
In ib_umem_release_on_close(), if the kmalloc() fails, then a
reference to current->mm will be leaked. Fix this by adding a mmput()
instead of just returning on kmalloc() failure.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/infiniband/core/uverbs_mem.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/infiniband/core/uverbs_mem.c b/drivers/infiniband/core/uverbs_mem.c index 36a32c3..efe147d 100644 --- a/drivers/infiniband/core/uverbs_mem.c +++ b/drivers/infiniband/core/uverbs_mem.c @@ -211,8 +211,10 @@ void ib_umem_release_on_close(struct ib_device *dev, struct ib_umem *umem) */ work = kmalloc(sizeof *work, GFP_KERNEL); - if (!work) + if (!work) { + mmput(mm); return; + } INIT_WORK(&work->work, ib_umem_account, work); work->mm = mm; |