diff options
Diffstat (limited to 'xlators/mgmt')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index eac220a4d57..d7ab6cda6d1 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -4720,10 +4720,12 @@ glusterd_import_friend_volumes_synctask(void *opaque) GF_ASSERT(conf); arg = opaque; + if (!arg) + goto out; + peer_data = dict_new(); - if (!peer_data) { + if (!peer_data) goto out; - } ret = dict_unserialize(arg->dict_buf, arg->dictlen, &peer_data); if (ret) { @@ -4761,10 +4763,11 @@ glusterd_import_friend_volumes_synctask(void *opaque) out: if (peer_data) dict_unref(peer_data); - if (arg->dict_buf) - GF_FREE(arg->dict_buf); - if (arg) + if (arg) { + if (arg->dict_buf) + GF_FREE(arg->dict_buf); GF_FREE(arg); + } gf_msg_debug("glusterd", 0, "Returning with %d", ret); return ret; @@ -4987,6 +4990,9 @@ glusterd_compare_friend_data(dict_t *peer_data, int32_t *status, char *hostname) } out: + if (ret && arg) { + GF_FREE(arg); + } gf_msg_debug(this->name, 0, "Returning with ret: %d, status: %d", ret, *status); return ret; |