]> err.no Git - util-linux/commitdiff
mount: don't create loopdev for MS_BIND
authorKarel Zak <kzak@redhat.com>
Mon, 14 Jun 2010 07:35:28 +0000 (09:35 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 14 Jun 2010 07:35:28 +0000 (09:35 +0200)
Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=602573
Reported-by: Adam Tkac <atkac@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
mount/mount.c

index 865665bfa1c0d1705306afd449ec9d540a2a4363..11936a620a6114ed44232f3f989ed720e844b6c4 100644 (file)
@@ -1127,8 +1127,9 @@ loop_check(const char **spec, const char **type, int *flags,
    * file as a mount(2) source argument. A filesystem that is able to mount
    * regular files could be implemented.
    */
-  if (!*loop && (!*type || strcmp(*type, "auto") == 0 ||
-                          fsprobe_known_fstype(*type))) {
+  if (!*loop && !(*flags & (MS_BIND | MS_MOVE | MS_PROPAGATION)) &&
+      (!*type || strcmp(*type, "auto") == 0 || fsprobe_known_fstype(*type))) {
+
     struct stat st;
     if (stat(*loopfile, &st) == 0)
       *loop = S_ISREG(st.st_mode);