[glib/glib-2-50] gunixmounts: Prevent "mounts-changed" race if	/etc/mtab is used
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc: 
- Subject: [glib/glib-2-50] gunixmounts: Prevent "mounts-changed" race if	/etc/mtab is used
- Date: Thu,  3 Aug 2017 08:40:32 +0000 (UTC)
commit a7d22c42cdbef20838f1624a96700380ec0cd0e2
Author: Ondrej Holy <oholy redhat com>
Date:   Mon Jul 17 15:53:24 2017 +0200
    gunixmounts: Prevent "mounts-changed" race if /etc/mtab is used
    
    The /etc/mtab file is still used by some distributions (e.g. Slackware),
    so it has to be monitored instead of /proc/self/mountinfo in order to
    avoid races between g_unix_mounts_get and "mounts-changed" signal. The
    util-linux is built with --enable-libmount-support-mtab in that case and
    mnt_has_regular_mtab is used for checks. Let's use mnt_has_regular_mtab
    also to determine which file to monitor.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=779607
 gio/gunixmounts.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
---
diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
index 0f1fb4d..70115e9 100644
--- a/gio/gunixmounts.c
+++ b/gio/gunixmounts.c
@@ -545,7 +545,15 @@ get_mtab_monitor_file (void)
     return mountinfo_path;
 
 #ifdef HAVE_LIBMOUNT
-  /* If using libmount we'll have the logic in place to read mountinfo */
+  /* The mtab file is still used by some distros, so it has to be monitored in
+   * order to avoid races between g_unix_mounts_get and "mounts-changed" signal:
+   * https://bugzilla.gnome.org/show_bug.cgi?id=782814
+   */
+  if (mnt_has_regular_mtab (&mountinfo_path, NULL))
+    {
+      return mountinfo_path;
+    }
+
   if (stat (PROC_MOUNTINFO_PATH, &buf) == 0)
     {
       mountinfo_path = PROC_MOUNTINFO_PATH;
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]