diff options
author | Ondrej Holy <oholy@redhat.com> | 2017-01-26 15:57:35 +0100 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2017-01-26 16:00:19 +0100 |
commit | cd4f923ba11d06e3ac917f95cd33987d80987c0a (patch) | |
tree | 10b35b6218498a449f95756bf2434a4e98d2caeb /daemon/gvfsbackendcdda.c | |
parent | d864620faa2ec65701244a8a216ddfbe3e5bb1e5 (diff) | |
download | gvfs-cd4f923ba11d06e3ac917f95cd33987d80987c0a.tar.gz |
cdda: Disconnect uevent handler immediately
Uevent handler with "remove" action may be called multiple times,
which causes that g_vfs_backend_force_unmount is called several
times, which may lead to segfault. Disconnect the uevent handler
immediately after g_vfs_backend_force_unmount call.
https://bugzilla.gnome.org/show_bug.cgi?id=777794
Diffstat (limited to 'daemon/gvfsbackendcdda.c')
-rw-r--r-- | daemon/gvfsbackendcdda.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/daemon/gvfsbackendcdda.c b/daemon/gvfsbackendcdda.c index edce885e..5660368d 100644 --- a/daemon/gvfsbackendcdda.c +++ b/daemon/gvfsbackendcdda.c @@ -225,6 +225,8 @@ on_uevent (GUdevClient *client, gchar *action, GUdevDevice *device, gpointer use g_udev_device_get_property_as_int (device, "ID_CDROM_MEDIA") != 1)) { g_vfs_backend_force_unmount (G_VFS_BACKEND (cdda_backend)); + + g_signal_handlers_disconnect_by_func (cdda_backend->gudev_client, on_uevent, cdda_backend); } } @@ -416,7 +418,9 @@ do_unmount (GVfsBackend *backend, release_device (cdda_backend); release_metadata (cdda_backend); - + + g_signal_handlers_disconnect_by_func (cdda_backend->gudev_client, on_uevent, cdda_backend); + g_vfs_job_succeeded (G_VFS_JOB (job)); //g_warning ("unmounted %p", backend); |