qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path
@ 2011-08-23 16:28 Sage Weil
  2011-08-23 16:28 ` [Qemu-devel] [PATCH 2/3] rbd: allow client id to be specified in config string Sage Weil
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Sage Weil @ 2011-08-23 16:28 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sage Weil

Fix leak of s->snap when rados_create fails.

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Sage Weil <sage@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

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH 2/3] rbd: allow client id to be specified in config string
  2011-08-23 16:28 [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Sage Weil
@ 2011-08-23 16:28 ` Sage Weil
  2011-09-02 14:12   ` Stefan Hajnoczi
  2011-08-23 16:28 ` [Qemu-devel] [PATCH 3/3] rbd: clean up, fix style Sage Weil
  2011-09-02 14:10 ` [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Stefan Hajnoczi
  2 siblings, 1 reply; 12+ messages in thread
From: Sage Weil @ 2011-08-23 16:28 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sage Weil

Allow the client id to be specified in the config string via 'id=' so that
users can control who they authenticate as.  Currently they are stuck with
the default ('admin').  This is necessary for anyone using authentication
in their environment.

Signed-off-by: Sage Weil <sage@newdream.net>
---
 block/rbd.c |   52 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/block/rbd.c b/block/rbd.c
index 52b79fa..e239e04 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -169,6 +169,34 @@ done:
     return ret;
 }
 
+static char *qemu_rbd_parse_clientname(const char *conf, char *clientname)
+{
+    const char *p = conf;
+
+    while (*p) {
+        int len;
+        const char *end = strchr(p, ':');
+
+        if (end) {
+            len = end - p;
+        } else {
+            len = strlen(p);
+        }
+
+        if (strncmp(p, "id=", 3) == 0) {
+            len -= 3;
+            strncpy(clientname, p + 3, len);
+            clientname[len] = '\0';
+            return clientname;
+        }
+        if (end == NULL) {
+            break;
+        }
+        p = end + 1;
+    }
+    return NULL;
+}
+
 static int qemu_rbd_set_conf(rados_t cluster, const char *conf)
 {
     char *p, *buf;
@@ -198,17 +226,19 @@ static int qemu_rbd_set_conf(rados_t cluster, const char *conf)
             break;
         }
 
-        if (strcmp(name, "conf")) {
-            ret = rados_conf_set(cluster, name, value);
+        if (strcmp(name, "conf") == 0) {
+            ret = rados_conf_read_file(cluster, value);
             if (ret < 0) {
-                error_report("invalid conf option %s", name);
-                ret = -EINVAL;
+                error_report("error reading conf file %s", value);
                 break;
             }
+        } else if (strcmp(name, "id") == 0) {
+            /* ignore, this is parsed by qemu_rbd_parse_clientname() */
         } else {
-            ret = rados_conf_read_file(cluster, value);
+            ret = rados_conf_set(cluster, name, value);
             if (ret < 0) {
-                error_report("error reading conf file %s", value);
+                error_report("invalid conf option %s", name);
+                ret = -EINVAL;
                 break;
             }
         }
@@ -227,6 +257,8 @@ static int qemu_rbd_create(const char *filename, QEMUOptionParameter *options)
     char name[RBD_MAX_IMAGE_NAME_SIZE];
     char snap_buf[RBD_MAX_SNAP_NAME_SIZE];
     char conf[RBD_MAX_CONF_SIZE];
+    char clientname_buf[RBD_MAX_CONF_SIZE];
+    char *clientname;
     rados_t cluster;
     rados_ioctx_t io_ctx;
     int ret;
@@ -259,7 +291,8 @@ static int qemu_rbd_create(const char *filename, QEMUOptionParameter *options)
         options++;
     }
 
-    if (rados_create(&cluster, NULL) < 0) {
+    clientname = qemu_rbd_parse_clientname(conf, clientname_buf);
+    if (rados_create(&cluster, clientname) < 0) {
         error_report("error initializing");
         return -EIO;
     }
@@ -385,6 +418,8 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags)
     char pool[RBD_MAX_POOL_NAME_SIZE];
     char snap_buf[RBD_MAX_SNAP_NAME_SIZE];
     char conf[RBD_MAX_CONF_SIZE];
+    char clientname_buf[RBD_MAX_CONF_SIZE];
+    char *clientname;
     int r;
 
     if (qemu_rbd_parsename(filename, pool, sizeof(pool),
@@ -394,7 +429,8 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags)
         return -EINVAL;
     }
 
-    r = rados_create(&s->cluster, NULL);
+    clientname = qemu_rbd_parse_clientname(conf, clientname_buf);
+    r = rados_create(&s->cluster, clientname);
     if (r < 0) {
         error_report("error initializing");
         return r;
-- 
1.7.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH 3/3] rbd: clean up, fix style
  2011-08-23 16:28 [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Sage Weil
  2011-08-23 16:28 ` [Qemu-devel] [PATCH 2/3] rbd: allow client id to be specified in config string Sage Weil
@ 2011-08-23 16:28 ` Sage Weil
  2011-09-02 14:14   ` Stefan Hajnoczi
  2011-09-02 14:10 ` [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Stefan Hajnoczi
  2 siblings, 1 reply; 12+ messages in thread
From: Sage Weil @ 2011-08-23 16:28 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sage Weil

No assignment in condition.  Remove duplicate ret > 0 check.

Signed-off-by: Sage Weil <sage@newdream.net>
---
 block/rbd.c |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/block/rbd.c b/block/rbd.c
index e239e04..5423a2d 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -391,15 +391,14 @@ static void qemu_rbd_aio_event_reader(void *opaque)
         char *p = (char *)&s->event_rcb;
 
         /* now read the rcb pointer that was sent from a non qemu thread */
-        if ((ret = read(s->fds[RBD_FD_READ], p + s->event_reader_pos,
-                        sizeof(s->event_rcb) - s->event_reader_pos)) > 0) {
-            if (ret > 0) {
-                s->event_reader_pos += ret;
-                if (s->event_reader_pos == sizeof(s->event_rcb)) {
-                    s->event_reader_pos = 0;
-                    qemu_rbd_complete_aio(s->event_rcb);
-                    s->qemu_aio_count--;
-                }
+        ret = read(s->fds[RBD_FD_READ], p + s->event_reader_pos,
+                   sizeof(s->event_rcb) - s->event_reader_pos);
+        if (ret > 0) {
+            s->event_reader_pos += ret;
+            if (s->event_reader_pos == sizeof(s->event_rcb)) {
+                s->event_reader_pos = 0;
+                qemu_rbd_complete_aio(s->event_rcb);
+                s->qemu_aio_count--;
             }
         }
     } while (ret < 0 && errno == EINTR);
-- 
1.7.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path
  2011-08-23 16:28 [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Sage Weil
  2011-08-23 16:28 ` [Qemu-devel] [PATCH 2/3] rbd: allow client id to be specified in config string Sage Weil
  2011-08-23 16:28 ` [Qemu-devel] [PATCH 3/3] rbd: clean up, fix style Sage Weil
@ 2011-09-02 14:10 ` Stefan Hajnoczi
  2011-09-03 22:04   ` [Qemu-devel] [PATCH v2] rbd: fix leak in qemu_rbd_open failure paths Sage Weil
  2 siblings, 1 reply; 12+ messages in thread
From: Stefan Hajnoczi @ 2011-09-02 14:10 UTC (permalink / raw)
  To: Sage Weil; +Cc: qemu-devel

On Tue, Aug 23, 2011 at 5:28 PM, Sage Weil <sage@newdream.net> wrote:
> Fix leak of s->snap when rados_create fails.
>
> Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
> Signed-off-by: Sage Weil <sage@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) {

I think s->snap is still leaked when any other error return in this
function is taken.

Stefan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH 2/3] rbd: allow client id to be specified in config string
  2011-08-23 16:28 ` [Qemu-devel] [PATCH 2/3] rbd: allow client id to be specified in config string Sage Weil
@ 2011-09-02 14:12   ` Stefan Hajnoczi
  0 siblings, 0 replies; 12+ messages in thread
From: Stefan Hajnoczi @ 2011-09-02 14:12 UTC (permalink / raw)
  To: Sage Weil; +Cc: qemu-devel

On Tue, Aug 23, 2011 at 5:28 PM, Sage Weil <sage@newdream.net> wrote:
> Allow the client id to be specified in the config string via 'id=' so that
> users can control who they authenticate as.  Currently they are stuck with
> the default ('admin').  This is necessary for anyone using authentication
> in their environment.
>
> Signed-off-by: Sage Weil <sage@newdream.net>
> ---
>  block/rbd.c |   52 ++++++++++++++++++++++++++++++++++++++++++++--------
>  1 files changed, 44 insertions(+), 8 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH 3/3] rbd: clean up, fix style
  2011-08-23 16:28 ` [Qemu-devel] [PATCH 3/3] rbd: clean up, fix style Sage Weil
@ 2011-09-02 14:14   ` Stefan Hajnoczi
  0 siblings, 0 replies; 12+ messages in thread
From: Stefan Hajnoczi @ 2011-09-02 14:14 UTC (permalink / raw)
  To: Sage Weil; +Cc: qemu-devel

On Tue, Aug 23, 2011 at 5:28 PM, Sage Weil <sage@newdream.net> wrote:
> No assignment in condition.  Remove duplicate ret > 0 check.
>
> Signed-off-by: Sage Weil <sage@newdream.net>
> ---
>  block/rbd.c |   17 ++++++++---------
>  1 files changed, 8 insertions(+), 9 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH v2] rbd: fix leak in qemu_rbd_open failure paths
  2011-09-02 14:10 ` [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Stefan Hajnoczi
@ 2011-09-03 22:04   ` Sage Weil
  2011-09-04 11:24     ` Stefan Hajnoczi
  0 siblings, 1 reply; 12+ messages in thread
From: Sage Weil @ 2011-09-03 22:04 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel

Fix leak of s->snap in failure path.  Simplify error paths for the whole
function.

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Sage Weil <sage@newdream.net>
---
v2: fixes all error paths, not just the first one. 

 block/rbd.c |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/block/rbd.c b/block/rbd.c
index eaf7912..2f0733e 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -427,10 +427,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);
-    }
 
     clientname = qemu_rbd_parse_clientname(conf, clientname_buf);
     r = rados_create(&s->cluster, clientname);
@@ -439,12 +435,16 @@ 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) {
             error_report("error reading config file");
-            rados_shutdown(s->cluster);
-            return r;
+	    goto failed_shutdown;
         }
     }
 
@@ -452,31 +452,26 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags)
         r = qemu_rbd_set_conf(s->cluster, conf);
         if (r < 0) {
             error_report("error setting config options");
-            rados_shutdown(s->cluster);
-            return r;
+	    goto failed_shutdown;
         }
     }
 
     r = rados_connect(s->cluster);
     if (r < 0) {
         error_report("error connecting");
-        rados_shutdown(s->cluster);
-        return r;
+	goto failed_shutdown;
     }
 
     r = rados_ioctx_create(s->cluster, pool, &s->io_ctx);
     if (r < 0) {
         error_report("error opening pool %s", pool);
-        rados_shutdown(s->cluster);
-        return r;
+	goto failed_shutdown;
     }
 
     r = rbd_open(s->io_ctx, s->name, &s->image, s->snap);
     if (r < 0) {
         error_report("error reading header from %s", s->name);
-        rados_ioctx_destroy(s->io_ctx);
-        rados_shutdown(s->cluster);
-        return r;
+	goto failed_open;
     }
 
     bs->read_only = (s->snap != NULL);
@@ -497,8 +492,11 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags)
 
 failed:
     rbd_close(s->image);
+failed_open:
     rados_ioctx_destroy(s->io_ctx);
+failed_shutdown:
     rados_shutdown(s->cluster);
+    qemu_free(s->snap);
     return r;
 }
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2] rbd: fix leak in qemu_rbd_open failure paths
  2011-09-03 22:04   ` [Qemu-devel] [PATCH v2] rbd: fix leak in qemu_rbd_open failure paths Sage Weil
@ 2011-09-04 11:24     ` Stefan Hajnoczi
  2011-09-04 16:18       ` Sage Weil
  2011-09-04 16:19       ` [Qemu-devel] [PATCH v3] " Sage Weil
  0 siblings, 2 replies; 12+ messages in thread
From: Stefan Hajnoczi @ 2011-09-04 11:24 UTC (permalink / raw)
  To: Sage Weil; +Cc: qemu-devel

On Sat, Sep 3, 2011 at 11:04 PM, Sage Weil <sage@newdream.net> wrote:
> +failed_shutdown:
>     rados_shutdown(s->cluster);
> +    qemu_free(s->snap);

Sorry for being a pain here.  This patch is against an old qemu.git
tree.  All memory allocation is now using glib's g_malloc()/g_free().

Stefan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v2] rbd: fix leak in qemu_rbd_open failure paths
  2011-09-04 11:24     ` Stefan Hajnoczi
@ 2011-09-04 16:18       ` Sage Weil
  2011-09-04 16:19       ` [Qemu-devel] [PATCH v3] " Sage Weil
  1 sibling, 0 replies; 12+ messages in thread
From: Sage Weil @ 2011-09-04 16:18 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 493 bytes --]

On Sun, 4 Sep 2011, Stefan Hajnoczi wrote:
> On Sat, Sep 3, 2011 at 11:04 PM, Sage Weil <sage@newdream.net> wrote:
> > +failed_shutdown:
> >     rados_shutdown(s->cluster);
> > +    qemu_free(s->snap);
> 
> Sorry for being a pain here.  This patch is against an old qemu.git
> tree.  All memory allocation is now using glib's g_malloc()/g_free().

Heh, no problem.  We've been working off the last release to avoid 
worrying about transient instability in master.  Resending!

sage

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Qemu-devel] [PATCH v3] rbd: fix leak in qemu_rbd_open failure paths
  2011-09-04 11:24     ` Stefan Hajnoczi
  2011-09-04 16:18       ` Sage Weil
@ 2011-09-04 16:19       ` Sage Weil
  2011-09-04 18:20         ` Stefan Hajnoczi
  2011-09-05 12:32         ` Kevin Wolf
  1 sibling, 2 replies; 12+ messages in thread
From: Sage Weil @ 2011-09-04 16:19 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel

Fix leak of s->snap in failure path.  Simplify error paths for the whole
function.

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Sage Weil <sage@newdream.net>
---
 block/rbd.c |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/block/rbd.c b/block/rbd.c
index 2763092..9f32211 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -427,10 +427,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 = g_strdup(snap_buf);
-    }
 
     clientname = qemu_rbd_parse_clientname(conf, clientname_buf);
     r = rados_create(&s->cluster, clientname);
@@ -439,12 +435,16 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags)
         return r;
     }
 
+    s->snap = NULL;
+    if (snap_buf[0] != '\0') {
+        s->snap = g_strdup(snap_buf);
+    }
+
     if (strstr(conf, "conf=") == NULL) {
         r = rados_conf_read_file(s->cluster, NULL);
         if (r < 0) {
             error_report("error reading config file");
-            rados_shutdown(s->cluster);
-            return r;
+	    goto failed_shutdown;
         }
     }
 
@@ -452,31 +452,26 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags)
         r = qemu_rbd_set_conf(s->cluster, conf);
         if (r < 0) {
             error_report("error setting config options");
-            rados_shutdown(s->cluster);
-            return r;
+	    goto failed_shutdown;
         }
     }
 
     r = rados_connect(s->cluster);
     if (r < 0) {
         error_report("error connecting");
-        rados_shutdown(s->cluster);
-        return r;
+	goto failed_shutdown;
     }
 
     r = rados_ioctx_create(s->cluster, pool, &s->io_ctx);
     if (r < 0) {
         error_report("error opening pool %s", pool);
-        rados_shutdown(s->cluster);
-        return r;
+	goto failed_shutdown;
     }
 
     r = rbd_open(s->io_ctx, s->name, &s->image, s->snap);
     if (r < 0) {
         error_report("error reading header from %s", s->name);
-        rados_ioctx_destroy(s->io_ctx);
-        rados_shutdown(s->cluster);
-        return r;
+	goto failed_open;
     }
 
     bs->read_only = (s->snap != NULL);
@@ -497,8 +492,11 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, int flags)
 
 failed:
     rbd_close(s->image);
+failed_open:
     rados_ioctx_destroy(s->io_ctx);
+failed_shutdown:
     rados_shutdown(s->cluster);
+    g_free(s->snap);
     return r;
 }
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v3] rbd: fix leak in qemu_rbd_open failure paths
  2011-09-04 16:19       ` [Qemu-devel] [PATCH v3] " Sage Weil
@ 2011-09-04 18:20         ` Stefan Hajnoczi
  2011-09-05 12:32         ` Kevin Wolf
  1 sibling, 0 replies; 12+ messages in thread
From: Stefan Hajnoczi @ 2011-09-04 18:20 UTC (permalink / raw)
  To: Sage Weil; +Cc: qemu-devel

On Sun, Sep 4, 2011 at 5:19 PM, Sage Weil <sage@newdream.net> wrote:
> Fix leak of s->snap in failure path.  Simplify error paths for the whole
> function.
>
> Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
> Signed-off-by: Sage Weil <sage@newdream.net>
> ---
>  block/rbd.c |   28 +++++++++++++---------------
>  1 files changed, 13 insertions(+), 15 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Qemu-devel] [PATCH v3] rbd: fix leak in qemu_rbd_open failure paths
  2011-09-04 16:19       ` [Qemu-devel] [PATCH v3] " Sage Weil
  2011-09-04 18:20         ` Stefan Hajnoczi
@ 2011-09-05 12:32         ` Kevin Wolf
  1 sibling, 0 replies; 12+ messages in thread
From: Kevin Wolf @ 2011-09-05 12:32 UTC (permalink / raw)
  To: Sage Weil; +Cc: Stefan Hajnoczi, qemu-devel

Am 04.09.2011 18:19, schrieb Sage Weil:
> Fix leak of s->snap in failure path.  Simplify error paths for the whole
> function.
> 
> Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
> Signed-off-by: Sage Weil <sage@newdream.net>

This depends on "[PATCH v2] rbd: allow client id to be specified in
config string", which doesn't seem to apply any more and has coding
style issues. Please fix and send a rebased series containing all four
patches.

Kevin

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-09-05 12:29 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-23 16:28 [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Sage Weil
2011-08-23 16:28 ` [Qemu-devel] [PATCH 2/3] rbd: allow client id to be specified in config string Sage Weil
2011-09-02 14:12   ` Stefan Hajnoczi
2011-08-23 16:28 ` [Qemu-devel] [PATCH 3/3] rbd: clean up, fix style Sage Weil
2011-09-02 14:14   ` Stefan Hajnoczi
2011-09-02 14:10 ` [Qemu-devel] [PATCH 1/3] rbd: fix leak in failure path Stefan Hajnoczi
2011-09-03 22:04   ` [Qemu-devel] [PATCH v2] rbd: fix leak in qemu_rbd_open failure paths Sage Weil
2011-09-04 11:24     ` Stefan Hajnoczi
2011-09-04 16:18       ` Sage Weil
2011-09-04 16:19       ` [Qemu-devel] [PATCH v3] " Sage Weil
2011-09-04 18:20         ` Stefan Hajnoczi
2011-09-05 12:32         ` Kevin Wolf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).