]> err.no Git - util-linux/commitdiff
mount: detect when kernel silently adds MS_RDONLY flag
authorPetr Uzel <petr.uzel@suse.cz>
Fri, 21 May 2010 13:19:31 +0000 (15:19 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 28 May 2010 12:48:49 +0000 (14:48 +0200)
Linux kernel can silently add MS_RDONLY flag when mounting file system that
does not have write support. Check this to avoid 'ro' in /proc/mounts and 'rw'
in mtab.

[kzak@redhat.com: - don't check for 'ro' for MS_MOVE and MS_PROPAGATION]

Reported-by: James Foris <jim.foris@med.ge.com>
Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
Signed-off-by: Karel Zak <kzak@redhat.com>
mount/mount.c

index 576fed6b5551b29e735d0ea1a2c1e3bf8cfed351..4f2dcd24ff7148ac54b2a470a839ef1a64416d32 100644 (file)
@@ -1435,6 +1435,18 @@ try_mount_one (const char *spec0, const char *node0, const char *types0,
       flags &= ~MS_RDONLY;
   }
 
+  /* Kernel can silently add MS_RDONLY flag when mounting file system that
+   * does not have write support. Check this to avoid 'ro' in /proc/mounts
+   * and 'rw' in mtab.
+   */
+  if (!fake && mnt5_res == 0 &&
+      !(flags & MS_RDONLY) && !(flags & MS_PROPAGATION) && !(flags & MS_MOVE) &&
+      is_readonly(node)) {
+
+      printf(_("mount: warning: %s seems to be mounted read-only.\n"), node);
+      flags |= MS_RDONLY;
+  }
+
   if (fake || mnt5_res == 0) {
       /* Mount succeeded, report this (if verbose) and write mtab entry.  */