diff options
| author | Raghavendra Bhat <raghavendrabhat@gluster.com> | 2012-02-22 18:27:15 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vijay@gluster.com> | 2012-02-22 21:21:22 -0800 | 
| commit | 683ce1bca3b6c541e565eec014fa7cc3308957d8 (patch) | |
| tree | ec726c410b727fb40a8e6777cacee2c7325cd3d2 | |
| parent | ca502ca780202c71623a34349c88d114ad58ec12 (diff) | |
glusterfsd: unref the dict and use dict_set_dynstr to avoid memleak
Unref the new dict and use proper dict api (dict_set_dynstr) to save
data for displaying volume status information, which otherwise leads
to memory leak in the process.
Change-Id: Icb9ceb1a867c5b9759211a67027d983ab9b7e1c2
BUG: 796186
Signed-off-by: Raghavendra Bhat <raghavendrabhat@gluster.com>
Reviewed-on: http://review.gluster.com/2799
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
| -rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 2 | ||||
| -rw-r--r-- | libglusterfs/src/inode.c | 2 | ||||
| -rw-r--r-- | libglusterfs/src/stack.c | 16 | 
3 files changed, 13 insertions, 7 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index 4220baf982c..5afa558dd70 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -932,6 +932,8 @@ glusterfs_handle_brick_status (rpcsvc_request_t *req)  out:          if (dict)                  dict_unref (dict); +        if (output) +                dict_unref (output);          if (brick_req.input.input_val)                  free (brick_req.input.input_val);          if (xname) diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c index 67752da716c..3fad499ebcb 100644 --- a/libglusterfs/src/inode.c +++ b/libglusterfs/src/inode.c @@ -1652,7 +1652,7 @@ inode_dump_to_dict (inode_t *inode, char *prefix, dict_t *dict)          memset (key, 0, sizeof (key));          snprintf (key, sizeof (key), "%s.gfid", prefix); -        ret = dict_set_str (dict, key, gf_strdup (uuid_utoa (inode->gfid))); +        ret = dict_set_dynstr (dict, key, gf_strdup (uuid_utoa (inode->gfid)));          if (ret)                  goto out; diff --git a/libglusterfs/src/stack.c b/libglusterfs/src/stack.c index 29b44aedfac..787f9a318ca 100644 --- a/libglusterfs/src/stack.c +++ b/libglusterfs/src/stack.c @@ -186,7 +186,7 @@ gf_proc_dump_call_frame_to_dict (call_frame_t *call_frame,          memset (key, 0, sizeof (key));          snprintf (key, sizeof (key), "%s.translator", prefix); -        ret = dict_set_str (dict, key, gf_strdup (tmp_frame.this->name)); +        ret = dict_set_dynstr (dict, key, gf_strdup (tmp_frame.this->name));          if (ret)                  return; @@ -199,7 +199,7 @@ gf_proc_dump_call_frame_to_dict (call_frame_t *call_frame,          if (tmp_frame.parent) {                  memset (key, 0, sizeof (key));                  snprintf (key, sizeof (key), "%s.parent", prefix); -                ret = dict_set_str (dict, key, +                ret = dict_set_dynstr (dict, key,                                      gf_strdup (tmp_frame.parent->this->name));                  if (ret)                          return; @@ -208,7 +208,8 @@ gf_proc_dump_call_frame_to_dict (call_frame_t *call_frame,          if (tmp_frame.wind_from) {                  memset (key, 0, sizeof (key));                  snprintf (key, sizeof (key), "%s.windfrom", prefix); -                ret = dict_set_str (dict, key, gf_strdup (tmp_frame.wind_from)); +                ret = dict_set_dynstr (dict, key, +                                       gf_strdup (tmp_frame.wind_from));                  if (ret)                          return;          } @@ -216,7 +217,8 @@ gf_proc_dump_call_frame_to_dict (call_frame_t *call_frame,          if (tmp_frame.wind_to) {                  memset (key, 0, sizeof (key));                  snprintf (key, sizeof (key), "%s.windto", prefix); -                ret = dict_set_str (dict, key, gf_strdup (tmp_frame.wind_to)); +                ret = dict_set_dynstr (dict, key, +                                       gf_strdup (tmp_frame.wind_to));                  if (ret)                          return;          } @@ -224,7 +226,8 @@ gf_proc_dump_call_frame_to_dict (call_frame_t *call_frame,          if (tmp_frame.unwind_from) {                  memset (key, 0, sizeof (key));                  snprintf (key, sizeof (key), "%s.unwindfrom", prefix); -                ret = dict_set_str (dict, key, gf_strdup (tmp_frame.unwind_from)); +                ret = dict_set_dynstr (dict, key, +                                       gf_strdup (tmp_frame.unwind_from));                  if (ret)                          return;          } @@ -232,7 +235,8 @@ gf_proc_dump_call_frame_to_dict (call_frame_t *call_frame,          if (tmp_frame.unwind_to) {                  memset (key, 0, sizeof (key));                  snprintf (key, sizeof (key), "%s.unwind_to", prefix); -                ret = dict_set_str (dict, key, gf_strdup (tmp_frame.unwind_to)); +                ret = dict_set_dynstr (dict, key, +                                       gf_strdup (tmp_frame.unwind_to));          }          return;  | 
