mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 23:16:14 +01:00
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
This commit is contained in:
parent
b267f648d9
commit
2db36d0d5c
@ -550,7 +550,15 @@ get_mtab_monitor_file (void)
|
|||||||
return mountinfo_path;
|
return mountinfo_path;
|
||||||
|
|
||||||
#ifdef HAVE_LIBMOUNT
|
#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)
|
if (stat (PROC_MOUNTINFO_PATH, &buf) == 0)
|
||||||
{
|
{
|
||||||
mountinfo_path = PROC_MOUNTINFO_PATH;
|
mountinfo_path = PROC_MOUNTINFO_PATH;
|
||||||
|
Loading…
Reference in New Issue
Block a user