linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH BlueZ 0/2] mesh: Clean up D-Bus message references
@ 2019-05-22  5:33 Inga Stotland
  2019-05-22  5:33 ` [PATCH BlueZ 1/2] mesh: Unreference pending D-Bus messages Inga Stotland
  2019-05-22  5:33 ` [PATCH BlueZ 2/2] mesh: Remove unnecessary message ref/unref in agent.c Inga Stotland
  0 siblings, 2 replies; 3+ messages in thread
From: Inga Stotland @ 2019-05-22  5:33 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: brian.gix, johan.hedberg, luiz.dentz, Inga Stotland

This set of patches cleans up the usage of l_dbus_message_ref() and
l_dbus_message_unref() in the mesh daemon

Inga Stotland (2):
  mesh: Unreference pending D-Bus messages
  mesh: Remove unnecessary message ref/unref in agent.c

 mesh/agent.c | 16 ----------------
 mesh/mesh.c  |  8 +++++---
 2 files changed, 5 insertions(+), 19 deletions(-)

-- 
2.21.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH BlueZ 1/2] mesh: Unreference pending D-Bus messages
  2019-05-22  5:33 [PATCH BlueZ 0/2] mesh: Clean up D-Bus message references Inga Stotland
@ 2019-05-22  5:33 ` Inga Stotland
  2019-05-22  5:33 ` [PATCH BlueZ 2/2] mesh: Remove unnecessary message ref/unref in agent.c Inga Stotland
  1 sibling, 0 replies; 3+ messages in thread
From: Inga Stotland @ 2019-05-22  5:33 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: brian.gix, johan.hedberg, luiz.dentz, Inga Stotland

This change results in proper cleanup of D-Bus messages for pending
replies: if l_dbus_message_ref() was called for a message, then
l_dbus_message_unref() must be called for the same message to completely
free the message resources.
---
 mesh/mesh.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/mesh/mesh.c b/mesh/mesh.c
index 231a6bca4..bed8484f2 100644
--- a/mesh/mesh.c
+++ b/mesh/mesh.c
@@ -354,6 +354,9 @@ static void free_pending_join_call(bool failed)
 
 	mesh_agent_remove(join_pending->agent);
 
+	if (join_pending->msg)
+		l_dbus_message_unref(join_pending->msg);
+
 	if (failed)
 		node_remove(join_pending->node);
 
@@ -422,9 +425,6 @@ static void prov_disc_cb(struct l_dbus *bus, void *user_data)
 	if (!join_pending)
 		return;
 
-	if (join_pending->msg)
-		l_dbus_message_unref(join_pending->msg);
-
 	acceptor_cancel(&mesh);
 	join_pending->disc_watch = 0;
 
@@ -650,6 +650,7 @@ static void attach_ready_cb(void *user_data, int status, struct mesh_node *node)
 
 done:
 	l_dbus_send(dbus_get_bus(), reply);
+	l_dbus_message_unref(pending_msg);
 	l_queue_remove(pending_queue, pending_msg);
 }
 
@@ -727,6 +728,7 @@ static void create_network_ready_cb(void *user_data, int status,
 
 done:
 	l_dbus_send(dbus_get_bus(), reply);
+	l_dbus_message_unref(pending_msg);
 	l_queue_remove(pending_queue, pending_msg);
 }
 
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH BlueZ 2/2] mesh: Remove unnecessary message ref/unref in agent.c
  2019-05-22  5:33 [PATCH BlueZ 0/2] mesh: Clean up D-Bus message references Inga Stotland
  2019-05-22  5:33 ` [PATCH BlueZ 1/2] mesh: Unreference pending D-Bus messages Inga Stotland
@ 2019-05-22  5:33 ` Inga Stotland
  1 sibling, 0 replies; 3+ messages in thread
From: Inga Stotland @ 2019-05-22  5:33 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: brian.gix, johan.hedberg, luiz.dentz, Inga Stotland

This removes calls to reference/unrefernce D-Bus messages for
the methods that are called on org.bluez.mesh.ProvisionAgent1
interface since the referenced messages are not used.
---
 mesh/agent.c | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/mesh/agent.c b/mesh/agent.c
index 4f99bad7b..1cd09eee8 100644
--- a/mesh/agent.c
+++ b/mesh/agent.c
@@ -199,7 +199,6 @@ static void agent_free(void *agent_data)
 			break;
 		}
 
-		l_dbus_message_unref(req->msg);
 		l_free(req);
 	}
 
@@ -310,8 +309,6 @@ static void simple_reply(struct l_dbus_message *reply, void *user_data)
 
 	err = get_reply_error(reply);
 
-	l_dbus_message_unref(req->msg);
-
 	if (req->cb) {
 		cb = req->cb;
 		cb(req->user_data, err);
@@ -345,8 +342,6 @@ static void numeric_reply(struct l_dbus_message *reply, void *user_data)
 		}
 	}
 
-	l_dbus_message_unref(req->msg);
-
 	if (req->cb) {
 		cb = req->cb;
 		cb(req->user_data, err, count);
@@ -402,8 +397,6 @@ static void key_reply(struct l_dbus_message *reply, void *user_data)
 	}
 
 done:
-	l_dbus_message_unref(req->msg);
-
 	if (req->cb) {
 		cb = req->cb;
 		cb(req->user_data, err, buf, n);
@@ -444,8 +437,6 @@ static int output_request(struct mesh_agent *agent, const char *action,
 	l_dbus_send_with_reply(dbus_get_bus(), msg, simple_reply, agent,
 									NULL);
 
-	agent->req->msg = l_dbus_message_ref(msg);
-
 	return MESH_ERROR_NONE;
 }
 
@@ -486,8 +477,6 @@ static int prompt_input(struct mesh_agent *agent, const char *action,
 
 	l_dbus_send_with_reply(dbus_get_bus(), msg, reply_cb, agent, NULL);
 
-	agent->req->msg = l_dbus_message_ref(msg);
-
 	return MESH_ERROR_NONE;
 }
 
@@ -519,8 +508,6 @@ static int request_key(struct mesh_agent *agent,
 
 	l_dbus_send_with_reply(dbus_get_bus(), msg, key_reply, agent, NULL);
 
-	agent->req->msg = l_dbus_message_ref(msg);
-
 	return MESH_ERROR_NONE;
 }
 
@@ -554,10 +541,7 @@ int mesh_agent_display_string(struct mesh_agent *agent, const char *str,
 	l_dbus_send_with_reply(dbus_get_bus(), msg, simple_reply, agent,
 									NULL);
 
-	agent->req->msg = l_dbus_message_ref(msg);
-
 	return MESH_ERROR_NONE;
-
 }
 
 int mesh_agent_display_number(struct mesh_agent *agent, bool initiator,
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-05-22  5:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-22  5:33 [PATCH BlueZ 0/2] mesh: Clean up D-Bus message references Inga Stotland
2019-05-22  5:33 ` [PATCH BlueZ 1/2] mesh: Unreference pending D-Bus messages Inga Stotland
2019-05-22  5:33 ` [PATCH BlueZ 2/2] mesh: Remove unnecessary message ref/unref in agent.c Inga Stotland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).