From bebe9ca9937a5e44147c8fc0160f04d39573d110 Mon Sep 17 00:00:00 2001 From: Adrian Szyndela Date: Tue, 5 May 2015 12:27:15 +0100 Subject: [PATCH] extend lock's range in live_messages_notify() The other code paths that ref or unref a transport are protected by the DBusConnection's lock. This function already used that lock, but for a narrower scope than the refcount manipulation. live_messages_notify() could be triggered by unreffing messages that originated from the same connection in a different thread. [smcv: added commit message] Bug: https://bugs.freedesktop.org/show_bug.cgi?id=90312 Reviewed-by: Simon McVittie --- dbus/dbus-transport.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dbus/dbus-transport.c b/dbus/dbus-transport.c index f63e0ced4..e9dcc5681 100644 --- a/dbus/dbus-transport.c +++ b/dbus/dbus-transport.c @@ -63,6 +63,7 @@ live_messages_notify (DBusCounter *counter, { DBusTransport *transport = user_data; + _dbus_connection_lock (transport->connection); _dbus_transport_ref (transport); #if 0 @@ -77,12 +78,11 @@ live_messages_notify (DBusCounter *counter, */ if (transport->vtable->live_messages_changed) { - _dbus_connection_lock (transport->connection); (* transport->vtable->live_messages_changed) (transport); - _dbus_connection_unlock (transport->connection); } _dbus_transport_unref (transport); + _dbus_connection_unlock (transport->connection); } /** -- 2.47.3