diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index db6946343f2d86aa531e4fe0ada525a16adce3c1..0a8faf2ad90937aca5fcc3d220c15de5fc348fdc 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -962,7 +962,15 @@ extern void slurm_free_suspend_int_msg(suspend_int_msg_t *msg)
 
 extern void slurm_free_stats_response_msg(stats_info_response_msg_t *msg)
 {
-	xfree(msg);
+	if (msg) {
+		xfree(msg->rpc_type_id);
+		xfree(msg->rpc_type_cnt);
+		xfree(msg->rpc_type_time);
+		xfree(msg->rpc_user_id);
+		xfree(msg->rpc_user_cnt);
+		xfree(msg->rpc_user_time);
+		xfree(msg);
+	}
 }
 
 extern void slurm_free_spank_env_request_msg(spank_env_request_msg_t *msg)
diff --git a/src/sdiag/sdiag.c b/src/sdiag/sdiag.c
index c086101682ab8a7141fe42274d674986494a6196..373b67912997a5dcca8f6c658c5be45e7b84bb7c 100644
--- a/src/sdiag/sdiag.c
+++ b/src/sdiag/sdiag.c
@@ -89,6 +89,11 @@ int main(int argc, char *argv[])
 		if (rc == SLURM_SUCCESS) {
 			_sort_rpc();
 			rc = _print_stats();
+#ifdef MEMORY_LEAK_DEBUG
+			slurm_free_stats_response_msg(buf);
+			xfree(rpc_type_ave_time);
+			xfree(rpc_user_ave_time);
+#endif
 		} else
 			slurm_perror("slurm_get_statistics");
 	}
diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c
index 32bc3fd062b5d27df81716a2f4d0c4cbba7fa36d..39eab258b6d42bcaa58398ee27c45813fd927815 100644
--- a/src/slurmctld/proc_req.c
+++ b/src/slurmctld/proc_req.c
@@ -4809,10 +4809,7 @@ static void _pack_rpc_stats(int resp, char **buffer_ptr, int *buffer_size,
 	buffer = create_buf(*buffer_ptr, *buffer_size);
 	set_buf_offset(buffer, *buffer_size);
 	for (i = 0; i < rpc_type_size; i++) {
-		if (rpc_type_id[i]) {
-			info("rpc_type:%u count:%u time:%"PRIu64"",
-			     rpc_type_id[i], rpc_type_cnt[i], rpc_type_time[i]);
-		} else
+		if (rpc_type_id[i] == 0)
 			break;
 	}
 	pack32(i, buffer);
@@ -4820,11 +4817,8 @@ static void _pack_rpc_stats(int resp, char **buffer_ptr, int *buffer_size,
 	pack32_array(rpc_type_cnt,  i, buffer);
 	pack64_array(rpc_type_time, i, buffer);
 
-	for (i = 0; i < rpc_user_size; i++) {
-		if (rpc_user_id[i] || (i == 0)) {
-			info("rpc_user:%u count:%u time:%"PRIu64"",
-			     rpc_user_id[i], rpc_user_cnt[i], rpc_user_time[i]);
-		} else
+	for (i = 1; i < rpc_user_size; i++) {
+		if (rpc_user_id[i] == 0)
 			break;
 	}
 	pack32(i, buffer);