From 648892496cf786bccb479296e2f1bc6343bb6594 Mon Sep 17 00:00:00 2001
From: Namjae Jeon <linkinjeon@kernel.org>
Date: Thu, 6 Apr 2023 22:36:33 +0900
Subject: [PATCH 3/4] ksmbd-tools: fix memleak in rpc_lsarpc_destroy()

Add lsarpc_ph_clear_table() to clear ph entry from table.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
---
 mountd/rpc_lsarpc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/mountd/rpc_lsarpc.c b/mountd/rpc_lsarpc.c
index daf9b45253ac..52056498fff8 100644
--- a/mountd/rpc_lsarpc.c
+++ b/mountd/rpc_lsarpc.c
@@ -701,6 +701,18 @@ int rpc_lsarpc_write_request(struct ksmbd_rpc_pipe *pipe)
 	return lsarpc_invoke(pipe);
 }
 
+static void free_ph_entry(gpointer k, gpointer s, gpointer user_data)
+{
+	g_free(s);
+}
+
+static void lsarpc_ph_clear_table(void)
+{
+	g_rw_lock_writer_lock(&ph_table_lock);
+	g_hash_table_foreach(ph_table, free_ph_entry, NULL);
+	g_rw_lock_writer_unlock(&ph_table_lock);
+}
+
 int rpc_lsarpc_init(void)
 {
 	char domain_string[NAME_MAX];
@@ -724,6 +736,7 @@ void rpc_lsarpc_destroy(void)
 {
 	g_free(domain_name);
 	if (ph_table) {
+		lsarpc_ph_clear_table();
 		g_hash_table_destroy(ph_table);
 		ph_table = NULL;
 	}
-- 
2.34.1

