diff options
| -rw-r--r-- | api/src/glfs-mgmt.c | 10 | ||||
| -rw-r--r-- | cli/src/cli.c | 20 | ||||
| -rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 18 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.c | 2 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-transport.c | 38 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-transport.h | 4 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpcsvc.c | 13 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpcsvc.h | 2 | ||||
| -rw-r--r-- | xlators/features/changelog/src/changelog-rpc-common.c | 9 | ||||
| -rw-r--r-- | xlators/features/snapview-server/src/snapview-server-mgmt.c | 8 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c | 8 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 18 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-rebalance.c | 8 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 9 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.c | 6 | ||||
| -rw-r--r-- | xlators/nfs/server/src/acl3.c | 5 | ||||
| -rw-r--r-- | xlators/nfs/server/src/mount3.c | 5 | ||||
| -rw-r--r-- | xlators/nfs/server/src/nlm4.c | 7 | 
18 files changed, 119 insertions, 71 deletions
diff --git a/api/src/glfs-mgmt.c b/api/src/glfs-mgmt.c index d502b4f46b6..7476d5b64f3 100644 --- a/api/src/glfs-mgmt.c +++ b/api/src/glfs-mgmt.c @@ -1015,6 +1015,10 @@ glfs_mgmt_init(struct glfs *fs)      if (ctx->mgmt)          return 0; +    options = dict_new(); +    if (!options) +        goto out; +      if (cmd_args->volfile_server_port)          port = cmd_args->volfile_server_port; @@ -1029,11 +1033,11 @@ glfs_mgmt_init(struct glfs *fs)      if (cmd_args->volfile_server_transport &&          !strcmp(cmd_args->volfile_server_transport, "unix")) { -        ret = rpc_transport_unix_options_build(&options, host, 0); +        ret = rpc_transport_unix_options_build(options, host, 0);      } else {          xlator_cmdline_option_t *opt = find_xlator_option_in_cmd_args_t(              "address-family", cmd_args); -        ret = rpc_transport_inet_options_build(&options, host, port, +        ret = rpc_transport_inet_options_build(options, host, port,                                                 (opt ? opt->value : NULL));      } @@ -1075,5 +1079,7 @@ glfs_mgmt_init(struct glfs *fs)      ret = rpc_clnt_start(rpc);  out: +    if (options) +        dict_unref(options);      return ret;  } diff --git a/cli/src/cli.c b/cli/src/cli.c index 0c019aabfa3..2fa95b40a25 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -670,9 +670,8 @@ cli_quotad_clnt_rpc_init(void)      global_quotad_rpc = rpc;  out: -    if (ret) { -        if (rpc_opts) -            dict_unref(rpc_opts); +    if (rpc_opts) { +        dict_unref(rpc_opts);      }      return rpc;  } @@ -694,6 +693,10 @@ cli_rpc_init(struct cli_state *state)      this = THIS;      cli_rpc_prog = &cli_prog; +    options = dict_new(); +    if (!options) +        goto out; +      /* If address family specified in CLI */      if (state->address_family) {          addr_family = state->address_family; @@ -708,7 +711,7 @@ cli_rpc_init(struct cli_state *state)                 "Connecting to glusterd using "                 "sockfile %s",                 state->glusterd_sock); -        ret = rpc_transport_unix_options_build(&options, state->glusterd_sock, +        ret = rpc_transport_unix_options_build(options, state->glusterd_sock,                                                 0);          if (ret)              goto out; @@ -718,10 +721,6 @@ cli_rpc_init(struct cli_state *state)                 "%s",                 state->remote_host); -        options = dict_new(); -        if (!options) -            goto out; -          ret = dict_set_str(options, "remote-host", state->remote_host);          if (ret)              goto out; @@ -740,7 +739,7 @@ cli_rpc_init(struct cli_state *state)          gf_log("cli", GF_LOG_DEBUG,                 "Connecting to glusterd using "                 "default socket"); -        ret = rpc_transport_unix_options_build(&options, +        ret = rpc_transport_unix_options_build(options,                                                 DEFAULT_GLUSTERD_SOCKFILE, 0);          if (ret)              goto out; @@ -758,6 +757,9 @@ cli_rpc_init(struct cli_state *state)      ret = rpc_clnt_start(rpc);  out: +    if (options) +        dict_unref(options); +      if (ret) {          if (rpc)              rpc_clnt_unref(rpc); diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index a6c3db5b551..15acc109fff 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -2551,7 +2551,11 @@ glusterfs_listener_init(glusterfs_ctx_t *ctx)      if (!cmd_args->sock_file)          return 0; -    ret = rpcsvc_transport_unix_options_build(&options, cmd_args->sock_file); +    options = dict_new(); +    if (!options) +        goto out; + +    ret = rpcsvc_transport_unix_options_build(options, cmd_args->sock_file);      if (ret)          goto out; @@ -2578,6 +2582,8 @@ glusterfs_listener_init(glusterfs_ctx_t *ctx)      ctx->listener = rpc;  out: +    if (options) +        dict_unref(options);      return ret;  } @@ -2659,6 +2665,10 @@ glusterfs_mgmt_init(glusterfs_ctx_t *ctx)      if (ctx->mgmt)          return 0; +    options = dict_new(); +    if (!options) +        goto out; +      LOCK_INIT(&ctx->volfile_lock);      if (cmd_args->volfile_server_port) @@ -2668,10 +2678,10 @@ glusterfs_mgmt_init(glusterfs_ctx_t *ctx)      if (cmd_args->volfile_server_transport &&          !strcmp(cmd_args->volfile_server_transport, "unix")) { -        ret = rpc_transport_unix_options_build(&options, host, 0); +        ret = rpc_transport_unix_options_build(options, host, 0);      } else {          opt = find_xlator_option_in_cmd_args_t("address-family", cmd_args); -        ret = rpc_transport_inet_options_build(&options, host, port, +        ret = rpc_transport_inet_options_build(options, host, port,                                                 (opt ? opt->value : NULL));      }      if (ret) @@ -2720,6 +2730,8 @@ glusterfs_mgmt_init(glusterfs_ctx_t *ctx)      ret = rpc_clnt_start(rpc);  out: +    if (options) +        dict_unref(options);      return ret;  } diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c index 6f47515a48b..b04eaed40d2 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -1125,8 +1125,6 @@ rpc_clnt_new(dict_t *options, xlator_t *owner, char *name,          mem_pool_destroy(rpc->saved_frames_pool);          GF_FREE(rpc);          rpc = NULL; -        if (options) -            dict_unref(options);          goto out;      } diff --git a/rpc/rpc-lib/src/rpc-transport.c b/rpc/rpc-lib/src/rpc-transport.c index ce984426cbe..baa8593f6c6 100644 --- a/rpc/rpc-lib/src/rpc-transport.c +++ b/rpc/rpc-lib/src/rpc-transport.c @@ -170,6 +170,11 @@ rpc_transport_cleanup(rpc_transport_t *trans)      if (trans->fini)          trans->fini(trans); +    if (trans->options) { +        dict_unref(trans->options); +        trans->options = NULL; +    } +      GF_FREE(trans->name);      if (trans->xl) @@ -354,7 +359,7 @@ rpc_transport_load(glusterfs_ctx_t *ctx, dict_t *options, char *trans_name)          }      } -    trans->options = options; +    trans->options = dict_ref(options);      pthread_mutex_init(&trans->lock, NULL);      trans->xl = this; @@ -593,19 +598,14 @@ out:  }  int -rpc_transport_unix_options_build(dict_t **options, char *filepath, +rpc_transport_unix_options_build(dict_t *dict, char *filepath,                                   int frame_timeout)  { -    dict_t *dict = NULL;      char *fpath = NULL;      int ret = -1;      GF_ASSERT(filepath); -    GF_ASSERT(options); - -    dict = dict_new(); -    if (!dict) -        goto out; +    GF_VALIDATE_OR_GOTO("rpc-transport", dict, out);      fpath = gf_strdup(filepath);      if (!fpath) { @@ -640,20 +640,14 @@ rpc_transport_unix_options_build(dict_t **options, char *filepath,          if (ret)              goto out;      } - -    *options = dict;  out: -    if (ret && dict) { -        dict_unref(dict); -    }      return ret;  }  int -rpc_transport_inet_options_build(dict_t **options, const char *hostname, -                                 int port, char *af) +rpc_transport_inet_options_build(dict_t *dict, const char *hostname, int port, +                                 char *af)  { -    dict_t *dict = NULL;      char *host = NULL;      int ret = -1;  #ifdef IPV6_DEFAULT @@ -662,13 +656,9 @@ rpc_transport_inet_options_build(dict_t **options, const char *hostname,      char *addr_family = "inet";  #endif -    GF_ASSERT(options);      GF_ASSERT(hostname);      GF_ASSERT(port >= 1024); - -    dict = dict_new(); -    if (!dict) -        goto out; +    GF_VALIDATE_OR_GOTO("rpc-transport", dict, out);      host = gf_strdup((char *)hostname);      if (!host) { @@ -704,12 +694,6 @@ rpc_transport_inet_options_build(dict_t **options, const char *hostname,                 "failed to set trans-type with socket");          goto out;      } - -    *options = dict;  out: -    if (ret && dict) { -        dict_unref(dict); -    } -      return ret;  } diff --git a/rpc/rpc-lib/src/rpc-transport.h b/rpc/rpc-lib/src/rpc-transport.h index 6830279f07e..5b88be5a3de 100644 --- a/rpc/rpc-lib/src/rpc-transport.h +++ b/rpc/rpc-lib/src/rpc-transport.h @@ -306,11 +306,11 @@ rpc_transport_keepalive_options_set(dict_t *options, int32_t interval,                                      int32_t time, int32_t timeout);  int -rpc_transport_unix_options_build(dict_t **options, char *filepath, +rpc_transport_unix_options_build(dict_t *options, char *filepath,                                   int frame_timeout);  int -rpc_transport_inet_options_build(dict_t **options, const char *hostname, +rpc_transport_inet_options_build(dict_t *options, const char *hostname,                                   int port, char *af);  void diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c index c38a675b8c2..d62e06cb187 100644 --- a/rpc/rpc-lib/src/rpcsvc.c +++ b/rpc/rpc-lib/src/rpcsvc.c @@ -2620,18 +2620,13 @@ rpcsvc_reconfigure_options(rpcsvc_t *svc, dict_t *options)  }  int -rpcsvc_transport_unix_options_build(dict_t **options, char *filepath) +rpcsvc_transport_unix_options_build(dict_t *dict, char *filepath)  { -    dict_t *dict = NULL;      char *fpath = NULL;      int ret = -1;      GF_ASSERT(filepath); -    GF_ASSERT(options); - -    dict = dict_new(); -    if (!dict) -        goto out; +    GF_VALIDATE_OR_GOTO("rpcsvc", dict, out);      fpath = gf_strdup(filepath);      if (!fpath) { @@ -2654,13 +2649,9 @@ rpcsvc_transport_unix_options_build(dict_t **options, char *filepath)      ret = dict_set_str(dict, "transport-type", "socket");      if (ret)          goto out; - -    *options = dict;  out:      if (ret) {          GF_FREE(fpath); -        if (dict) -            dict_unref(dict);      }      return ret;  } diff --git a/rpc/rpc-lib/src/rpcsvc.h b/rpc/rpc-lib/src/rpcsvc.h index 34045ce8a44..a51edc73698 100644 --- a/rpc/rpc-lib/src/rpcsvc.h +++ b/rpc/rpc-lib/src/rpcsvc.h @@ -665,7 +665,7 @@ rpcsvc_actor_t *  rpcsvc_program_actor(rpcsvc_request_t *req);  int -rpcsvc_transport_unix_options_build(dict_t **options, char *filepath); +rpcsvc_transport_unix_options_build(dict_t *options, char *filepath);  int  rpcsvc_set_allow_insecure(rpcsvc_t *svc, dict_t *options);  int diff --git a/xlators/features/changelog/src/changelog-rpc-common.c b/xlators/features/changelog/src/changelog-rpc-common.c index cf35175c3bc..dcdcfb1c735 100644 --- a/xlators/features/changelog/src/changelog-rpc-common.c +++ b/xlators/features/changelog/src/changelog-rpc-common.c @@ -47,7 +47,7 @@ changelog_rpc_client_init(xlator_t *this, void *cbkdata, char *sockfile,      if (!options)          goto error_return; -    ret = rpc_transport_unix_options_build(&options, sockfile, 0); +    ret = rpc_transport_unix_options_build(options, sockfile, 0);      if (ret) {          gf_msg(this->name, GF_LOG_ERROR, 0, CHANGELOG_MSG_RPC_BUILD_ERROR,                 "failed to build rpc options"); @@ -73,6 +73,7 @@ changelog_rpc_client_init(xlator_t *this, void *cbkdata, char *sockfile,          goto dealloc_rpc_clnt;      } +    dict_unref(options);      return rpc;  dealloc_rpc_clnt: @@ -303,7 +304,11 @@ changelog_rpc_server_init(xlator_t *this, char *sockfile, void *cbkdata,      if (!cbkdata)          cbkdata = this; -    ret = rpcsvc_transport_unix_options_build(&options, sockfile); +    options = dict_new(); +    if (!options) +        return NULL; + +    ret = rpcsvc_transport_unix_options_build(options, sockfile);      if (ret)          goto dealloc_dict; diff --git a/xlators/features/snapview-server/src/snapview-server-mgmt.c b/xlators/features/snapview-server/src/snapview-server-mgmt.c index b608cdfcd44..bc415efb81d 100644 --- a/xlators/features/snapview-server/src/snapview-server-mgmt.c +++ b/xlators/features/snapview-server/src/snapview-server-mgmt.c @@ -101,8 +101,12 @@ svs_mgmt_init(xlator_t *this)      if (cmd_args->volfile_server)          host = cmd_args->volfile_server; +    options = dict_new(); +    if (!options) +        goto out; +      opt = find_xlator_option_in_cmd_args_t("address-family", cmd_args); -    ret = rpc_transport_inet_options_build(&options, host, port, +    ret = rpc_transport_inet_options_build(options, host, port,                                             (opt != NULL ? opt->value : NULL));      if (ret) {          gf_msg(this->name, GF_LOG_ERROR, 0, SVS_MSG_BUILD_TRNSPRT_OPT_FAILED, @@ -145,6 +149,8 @@ svs_mgmt_init(xlator_t *this)      gf_msg_debug(this->name, 0, "svs mgmt init successful");  out: +    if (options) +        dict_unref(options);      if (ret)          if (priv) {              rpc_clnt_connection_cleanup(&priv->rpc->conn); diff --git a/xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c index e80e152cd58..c6d7a00b06d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c +++ b/xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c @@ -29,6 +29,10 @@ glusterd_conn_init(glusterd_conn_t *conn, char *sockpath, int frame_timeout,      if (!this)          goto out; +    options = dict_new(); +    if (!options) +        goto out; +      svc = glusterd_conn_get_svc_object(conn);      if (!svc) {          gf_msg(this->name, GF_LOG_ERROR, 0, GD_MSG_SVC_GET_FAIL, @@ -36,7 +40,7 @@ glusterd_conn_init(glusterd_conn_t *conn, char *sockpath, int frame_timeout,          goto out;      } -    ret = rpc_transport_unix_options_build(&options, sockpath, frame_timeout); +    ret = rpc_transport_unix_options_build(options, sockpath, frame_timeout);      if (ret)          goto out; @@ -66,6 +70,8 @@ glusterd_conn_init(glusterd_conn_t *conn, char *sockpath, int frame_timeout,      conn->rpc = rpc;      conn->notify = notify;  out: +    if (options) +        dict_unref(options);      if (ret) {          if (rpc) {              rpc_clnt_unref(rpc); diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index c3830589ce7..b63fa77478a 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -3429,11 +3429,10 @@ out:  }  int -glusterd_transport_inet_options_build(dict_t **options, const char *hostname, +glusterd_transport_inet_options_build(dict_t *dict, const char *hostname,                                        int port, char *af)  {      xlator_t *this = NULL; -    dict_t *dict = NULL;      int32_t interval = -1;      int32_t time = -1;      int32_t timeout = -1; @@ -3441,14 +3440,14 @@ glusterd_transport_inet_options_build(dict_t **options, const char *hostname,      this = THIS;      GF_ASSERT(this); -    GF_ASSERT(options); +    GF_ASSERT(dict);      GF_ASSERT(hostname);      if (!port)          port = GLUSTERD_DEFAULT_PORT;      /* Build default transport options */ -    ret = rpc_transport_inet_options_build(&dict, hostname, port, af); +    ret = rpc_transport_inet_options_build(dict, hostname, port, af);      if (ret)          goto out; @@ -3488,7 +3487,6 @@ glusterd_transport_inet_options_build(dict_t **options, const char *hostname,      if ((interval > 0) || (time > 0))          ret = rpc_transport_keepalive_options_set(dict, interval, time,                                                    timeout); -    *options = dict;  out:      gf_msg_debug("glusterd", 0, "Returning %d", ret);      return ret; @@ -3508,6 +3506,10 @@ glusterd_friend_rpc_create(xlator_t *this, glusterd_peerinfo_t *peerinfo,      if (!peerctx)          goto out; +    options = dict_new(); +    if (!options) +        goto out; +      if (args)          peerctx->args = *args; @@ -3522,7 +3524,7 @@ glusterd_friend_rpc_create(xlator_t *this, glusterd_peerinfo_t *peerinfo,      if (ret)          gf_log(this->name, GF_LOG_TRACE,                 "option transport.address-family is not set in xlator options"); -    ret = glusterd_transport_inet_options_build(&options, peerinfo->hostname, +    ret = glusterd_transport_inet_options_build(options, peerinfo->hostname,                                                  peerinfo->port, af);      if (ret)          goto out; @@ -3532,6 +3534,7 @@ glusterd_friend_rpc_create(xlator_t *this, glusterd_peerinfo_t *peerinfo,       * create our RPC endpoint with the same address that the peer would       * use to reach us.       */ +      if (this->options) {          data = dict_getn(this->options, "transport.socket.bind-address",                           SLEN("transport.socket.bind-address")); @@ -3573,6 +3576,9 @@ glusterd_friend_rpc_create(xlator_t *this, glusterd_peerinfo_t *peerinfo,      peerctx = NULL;      ret = 0;  out: +    if (options) +        dict_unref(options); +      GF_FREE(peerctx);      return ret;  } diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index 34b0294474c..5562ebbda37 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -391,6 +391,10 @@ glusterd_rebalance_rpc_create(glusterd_volinfo_t *volinfo)      if (!defrag)          goto out; +    options = dict_new(); +    if (!options) +        goto out; +      GLUSTERD_GET_DEFRAG_SOCK_FILE(sockfile, volinfo);      /* Check if defrag sockfile exists in the new location       * in /var/run/ , if it does not try the old location @@ -420,7 +424,7 @@ glusterd_rebalance_rpc_create(glusterd_volinfo_t *volinfo)       * default timeout of 30mins used for unreliable network connections is       * too long for unix domain socket connections.       */ -    ret = rpc_transport_unix_options_build(&options, sockfile, 600); +    ret = rpc_transport_unix_options_build(options, sockfile, 600);      if (ret) {          gf_msg(THIS->name, GF_LOG_ERROR, 0, GD_MSG_UNIX_OP_BUILD_FAIL,                 "Unix options build failed"); @@ -437,6 +441,8 @@ glusterd_rebalance_rpc_create(glusterd_volinfo_t *volinfo)      }      ret = 0;  out: +    if (options) +        dict_unref(options);      return ret;  } diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index e8d4e1e35f0..dd4c02422e3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -1974,7 +1974,11 @@ glusterd_brick_connect(glusterd_volinfo_t *volinfo,           * The default timeout of 30mins used for unreliable network           * connections is too long for unix domain socket connections.           */ -        ret = rpc_transport_unix_options_build(&options, socketpath, 600); +        options = dict_new(); +        if (!options) +            goto out; + +        ret = rpc_transport_unix_options_build(options, socketpath, 600);          if (ret)              goto out; @@ -1993,7 +1997,8 @@ glusterd_brick_connect(glusterd_volinfo_t *volinfo,          brickinfo->rpc = rpc;      }  out: - +    if (options) +        dict_unref(options);      gf_msg_debug("glusterd", 0, "Returning %d", ret);      return ret;  } diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c index ff5af42079d..280c9f3640e 100644 --- a/xlators/mgmt/glusterd/src/glusterd.c +++ b/xlators/mgmt/glusterd/src/glusterd.c @@ -1111,11 +1111,15 @@ glusterd_init_uds_listener(xlator_t *this)      GF_ASSERT(this); +    options = dict_new(); +    if (!options) +        goto out; +      sock_data = dict_get(this->options, "glusterd-sockfile");      (void)snprintf(sockfile, sizeof(sockfile), "%s",                     sock_data ? sock_data->data : DEFAULT_GLUSTERD_SOCKFILE); -    ret = rpcsvc_transport_unix_options_build(&options, sockfile); +    ret = rpcsvc_transport_unix_options_build(options, sockfile);      if (ret)          goto out; diff --git a/xlators/nfs/server/src/acl3.c b/xlators/nfs/server/src/acl3.c index 0eca45d8a3e..2ede24b7bf5 100644 --- a/xlators/nfs/server/src/acl3.c +++ b/xlators/nfs/server/src/acl3.c @@ -787,9 +787,14 @@ acl3svc_init(xlator_t *nfsx)          goto err;      } +    if (options) +        dict_unref(options); +      acl3_inited = _gf_true;      return &acl3prog;  err: +    if (options) +        dict_unref(options);      return NULL;  } diff --git a/xlators/nfs/server/src/mount3.c b/xlators/nfs/server/src/mount3.c index 726dc293af6..396809cb2c2 100644 --- a/xlators/nfs/server/src/mount3.c +++ b/xlators/nfs/server/src/mount3.c @@ -4102,8 +4102,13 @@ mnt3svc_init(xlator_t *nfsx)              gf_msg_debug(GF_MNT, GF_LOG_DEBUG, "Thread creation failed");          }      } +    if (options) +        dict_unref(options); +      return &mnt3prog;  err: +    if (options) +        dict_unref(options);      return NULL;  } diff --git a/xlators/nfs/server/src/nlm4.c b/xlators/nfs/server/src/nlm4.c index a341ebd6638..c3c1453a091 100644 --- a/xlators/nfs/server/src/nlm4.c +++ b/xlators/nfs/server/src/nlm4.c @@ -1121,6 +1121,8 @@ nlm4_establish_callback(nfs3_call_state_t *cs, call_frame_t *cbk_frame)          ret = 0;  err: +    if (options) +        dict_unref(options);      if (ret == -1) {          if (rpc_clnt)              rpc_clnt_unref(rpc_clnt); @@ -2708,8 +2710,13 @@ nlm4svc_init(xlator_t *nfsx)      gf_timer_call_after(nfsx->ctx, timeout, nlm_grace_period_over, NULL);      nlm4_inited = _gf_true; + +    if (options) +        dict_unref(options);      return &nlm4prog;  err: +    if (options) +        dict_unref(options);      return NULL;  }  | 
