--- utils/mount/fstab.c +++ utils/mount/fstab.c @@ -57,7 +57,7 @@ mtab_does_not_exist(void) { return var_mtab_does_not_exist; } -static int +int mtab_is_a_symlink(void) { get_mtab_info(); return var_mtab_is_a_symlink; --- utils/mount/fstab.h +++ utils/mount/fstab.h @@ -7,6 +7,7 @@ #define _PATH_FSTAB "/etc/fstab" #endif +int mtab_is_a_symlink(void); int mtab_is_writable(void); int mtab_does_not_exist(void); void reset_mtab_info(void); --- utils/mount/mount.c +++ utils/mount/mount.c @@ -230,6 +230,13 @@ create_mtab (void) { int flags; mntFILE *mfp; + /* Avoid writing if the mtab is a symlink to /proc/mounts, since + that would create a file /proc/mounts in case the proc filesystem + is not mounted, and the fchmod below would also fail. */ + if (mtab_is_a_symlink()) { + return EX_SUCCESS; + } + lock_mtab(); mfp = nfs_setmntent (MOUNTED, "a+");