diff options
| -rw-r--r-- | xlators/features/upcall/src/upcall.c | 19 | 
1 files changed, 10 insertions, 9 deletions
diff --git a/xlators/features/upcall/src/upcall.c b/xlators/features/upcall/src/upcall.c index 40ad1c4e379..0e9919d41c4 100644 --- a/xlators/features/upcall/src/upcall.c +++ b/xlators/features/upcall/src/upcall.c @@ -2355,12 +2355,12 @@ init (xlator_t *this)          priv = GF_CALLOC (1, sizeof (*priv),                            gf_upcall_mt_private_t); -        if (!priv) { -                gf_msg ("upcall", GF_LOG_WARNING, 0, -                        UPCALL_MSG_NO_MEMORY, -                        "Memory allocation failed"); +        if (!priv) +                goto out; + +        priv->xattrs = dict_new (); +        if (!priv->xattrs)                  goto out; -        }          GF_OPTION_INIT ("cache-invalidation", priv->cache_invalidation_enabled,                          bool, out); @@ -2369,12 +2369,11 @@ init (xlator_t *this)          LOCK_INIT (&priv->inode_ctx_lk);          INIT_LIST_HEAD (&priv->inode_ctx_list); -        priv->xattrs = dict_new (); -        this->private = priv;          priv->fini = 0;          priv->reaper_init_done = _gf_false; +        this->private = priv;          this->local_pool = mem_pool_new (upcall_local_t, 512);          ret = 0; @@ -2391,8 +2390,10 @@ init (xlator_t *this)                  priv->reaper_init_done = _gf_true;          }  out: -        if (ret) { -                dict_unref (priv->xattrs); +        if (ret && priv) { +                if (priv->xattrs) +                        dict_unref (priv->xattrs); +                  GF_FREE (priv);          }  | 
