Fix leak of s->snap when rados_create fails. Reported-by: Stefan Hajnoczi <stefa...@gmail.com> Signed-off-by: Sage Weil <s...@newdream.net> --- block/rbd.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/block/rbd.c b/block/rbd.c index d5659cd..52b79fa 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -393,10 +393,6 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags) conf, sizeof(conf)) < 0) { return -EINVAL; } - s->snap = NULL; - if (snap_buf[0] != '\0') { - s->snap = qemu_strdup(snap_buf); - } r = rados_create(&s->cluster, NULL); if (r < 0) { @@ -404,6 +400,11 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags) return r; } + s->snap = NULL; + if (snap_buf[0] != '\0') { + s->snap = qemu_strdup(snap_buf); + } + if (strstr(conf, "conf=") == NULL) { r = rados_conf_read_file(s->cluster, NULL); if (r < 0) { -- 1.7.0