From 6ec0dcd1f7c02db47f23eb5cc400772ea095704b Mon Sep 17 00:00:00 2001 From: Jevon Qiao Date: Thu, 28 Jul 2016 15:26:38 +0800 Subject: [PATCH] Fix memory leak in _fio_rbd_connect() When running fio with rbd engine and specifying clustername, a piece of memory will be allocated in _fio_rbd_connect(), but it never gets freed. Signed-off-by: Jevon Qiao --- engines/rbd.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/engines/rbd.c b/engines/rbd.c index c5abd2d2..c85645ae 100644 --- a/engines/rbd.c +++ b/engines/rbd.c @@ -140,12 +140,17 @@ static int _fio_rbd_connect(struct thread_data *td) client_name = calloc(1, strlen("client.") + strlen(o->client_name) + 1); strcat(client_name, "client."); - o->client_name = strcat(client_name, - o->client_name); + strcat(client_name, o->client_name); + } else { + client_name = o->client_name; } } + r = rados_create2(&rbd->cluster, o->cluster_name, - o->client_name, 0); + client_name, 0); + + if (client_name && !index(o->client_name, '.')) + free(client_name); } else r = rados_create(&rbd->cluster, o->client_name); -- 2.25.1