[gvfs] backend: Hold reference during force unmount



commit 1ccf7766efc57d9784e5e0b3cba33f5446052d24
Author: Ondrej Holy <oholy redhat com>
Date:   Thu Jan 26 14:53:05 2017 +0100

    backend: Hold reference during force unmount
    
    g_vfs_backend_force_unmount may be called multiple times, or in
    parallel with regular unmount operation. Hold backend reference during
    the whole force unmount procedure in order to avoid unwanted segfaults.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777794

 daemon/gvfsbackend.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/daemon/gvfsbackend.c b/daemon/gvfsbackend.c
index d2750da..711c533 100644
--- a/daemon/gvfsbackend.c
+++ b/daemon/gvfsbackend.c
@@ -1046,6 +1046,7 @@ forced_unregister_mount_callback (GVfsDBusMountTracker *proxy,
   g_vfs_daemon_close_active_channels (daemon, backend);
   g_vfs_job_source_closed (G_VFS_JOB_SOURCE (backend));
 
+  g_object_unref (backend);
 }
 
 void
@@ -1053,7 +1054,7 @@ g_vfs_backend_force_unmount (GVfsBackend *backend)
 {
   g_vfs_backend_set_block_requests (backend, TRUE);
   g_vfs_backend_unregister_mount (backend,
-                                 (GAsyncReadyCallback) forced_unregister_mount_callback,
-                                 backend);
+                                  (GAsyncReadyCallback) forced_unregister_mount_callback,
+                                  g_object_ref (backend));
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]