From: Adrian Szyndela Date: Tue, 5 May 2015 11:27:15 +0000 (+0100) Subject: extend lock's range in live_messages_notify() X-Git-Tag: dbus-1.8.18~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bebe9ca9937a5e44147c8fc0160f04d39573d110;p=thirdparty%2Fdbus.git 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 --- 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); } /**