]> err.no Git - util-linux/commitdiff
mount: mtab created multiple times with -a option
authorKarel Zak <kzak@redhat.com>
Tue, 30 Sep 2008 22:27:37 +0000 (00:27 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 30 Sep 2008 22:34:52 +0000 (00:34 +0200)
When /etc/mtab does not exist and mount is called with -a, for every
mount point that is mounted a root-fs record is added to mtab. This is
because get_mtab_info() sets the flag mtab_does_not_exist to 1 when it
doesn't find /etc/mtab. However, if it actually finds /etc/mtab, the
variable is not reset to 0. So on every subsequent call to
get_mtab_info() (as it is the case when mounting several mount points
with the -a option), mount will think that /etc/mtab does not exist,
even if it was created in the meantime by mount itself.

Reported-By: Jonas Kramer <jkramer@nex.scrapping.cc>
Signed-off-by: Karel Zak <kzak@redhat.com>
mount/fstab.c

index 895fd2ce27448dc7a38dca480671365d0ca8b6b6..8c62a9e25aabffdfc626c9f6423db966cb6fbcd8 100644 (file)
@@ -30,9 +30,12 @@ static int var_mtab_is_a_symlink = 0;
 
 static void
 get_mtab_info(void) {
-       struct stat mtab_stat;
-
        if (!have_mtab_info) {
+               struct stat mtab_stat;
+
+               var_mtab_does_not_exist = 0;
+               var_mtab_is_a_symlink = 0;
+
                if (lstat(_PATH_MOUNTED, &mtab_stat))
                        var_mtab_does_not_exist = 1;
                else if (S_ISLNK(mtab_stat.st_mode))