From 683ce1bca3b6c541e565eec014fa7cc3308957d8 Mon Sep 17 00:00:00 2001 From: Raghavendra Bhat Date: Wed, 22 Feb 2012 18:27:15 +0530 Subject: 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 Reviewed-on: http://review.gluster.com/2799 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- libglusterfs/src/inode.c | 2 +- libglusterfs/src/stack.c | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'libglusterfs/src') diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c index 67752da71..3fad499eb 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 29b44aedf..787f9a318 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; -- cgit