[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]