summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex Elder <elder@dreamhost.com>2012-01-24 17:08:36 +0100
committerSage Weil <sage@newdream.net>2012-02-02 21:49:27 +0100
commit97bb59a03dd6767fcc00be09b0c6d9e5294eeea6 (patch)
treef04006e8040913d49fb1841ed93abed6d84308a1 /drivers
parentceph: create a new session lock to avoid lock inversion (diff)
downloadlinux-97bb59a03dd6767fcc00be09b0c6d9e5294eeea6.tar.xz
linux-97bb59a03dd6767fcc00be09b0c6d9e5294eeea6.zip
rbd: fix a memory leak in rbd_get_client()
If an existing rbd client is found to be suitable for use in rbd_get_client(), the rbd_options structure is not being freed as it should. Fix that. Signed-off-by: Alex Elder <elder@dreamhost.com> Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/rbd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 148ab944378d..7d8f8ddb3359 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -380,6 +380,7 @@ static int rbd_get_client(struct rbd_device *rbd_dev, const char *mon_addr,
rbdc = __rbd_client_find(opt);
if (rbdc) {
ceph_destroy_options(opt);
+ kfree(rbd_opts);
/* using an existing client */
kref_get(&rbdc->kref);