summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-base/gvfs/files/gvfs-1.24.2-guard-caches.patch')
-rw-r--r--gnome-base/gvfs/files/gvfs-1.24.2-guard-caches.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/gnome-base/gvfs/files/gvfs-1.24.2-guard-caches.patch b/gnome-base/gvfs/files/gvfs-1.24.2-guard-caches.patch
new file mode 100644
index 000000000000..4bf90ad1f26c
--- /dev/null
+++ b/gnome-base/gvfs/files/gvfs-1.24.2-guard-caches.patch
@@ -0,0 +1,56 @@
+From 1220260f96a9ce2beb659da30888ea9648719e9a Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir@gnome.org>
+Date: Wed, 30 Sep 2015 12:38:55 +0200
+Subject: proxy volume monitor: Guard access to the internal caches
+
+Accesses to the drives, volumes and mounts hash tables should be
+guarded by the proxy_vm mutex.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=755805
+---
+ monitor/proxy/gproxyvolumemonitor.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/monitor/proxy/gproxyvolumemonitor.c b/monitor/proxy/gproxyvolumemonitor.c
+index 623cb14..17474a8 100644
+--- a/monitor/proxy/gproxyvolumemonitor.c
++++ b/monitor/proxy/gproxyvolumemonitor.c
+@@ -867,6 +867,8 @@ name_owner_appeared (GProxyVolumeMonitor *monitor)
+ GProxyVolume *volume;
+ GProxyMount *mount;
+
++ G_LOCK (proxy_vm);
++
+ seed_monitor (monitor);
+
+ /* emit signals for all the drives/volumes/mounts "added" */
+@@ -881,6 +883,8 @@ name_owner_appeared (GProxyVolumeMonitor *monitor)
+ g_hash_table_iter_init (&hash_iter, monitor->mounts);
+ while (g_hash_table_iter_next (&hash_iter, NULL, (gpointer) &mount))
+ signal_emit_in_idle (monitor, "mount-added", mount);
++
++ G_UNLOCK (proxy_vm);
+ }
+
+ static void
+@@ -891,6 +895,8 @@ name_owner_vanished (GProxyVolumeMonitor *monitor)
+ GProxyVolume *volume;
+ GProxyMount *mount;
+
++ G_LOCK (proxy_vm);
++
+ g_hash_table_iter_init (&hash_iter, monitor->mounts);
+ while (g_hash_table_iter_next (&hash_iter, NULL, (gpointer) &mount))
+ {
+@@ -914,6 +920,8 @@ name_owner_vanished (GProxyVolumeMonitor *monitor)
+ signal_emit_in_idle (monitor, "drive-disconnected", drive);
+ }
+ g_hash_table_remove_all (monitor->drives);
++
++ G_UNLOCK (proxy_vm);
+ }
+
+ static void
+--
+cgit v0.11.2
+