lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Thu, 11 Jan 2007 14:28:14 -0600
From:	Eric Sandeen <sandeen@...hat.com>
To:	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	ext4 development <linux-ext4@...r.kernel.org>
Subject: [PATCH] [UPDATED] ext3: refuse ro to rw remount of fs with orphan
 inodes

This is a followup to the patch which skipped orphan inode processing 
on a filesystem residing on a readonly bdev (think snapshot taken
with open, unlinked files).  That avoided an oops.

Stephen had concerns about what happens if the bdev later goes readwrite,
and the filesystem is subsequently mounted remount,rw - if the orphan
list isn't processed then, things will be in bad shape.

The patch I sent earlier to process the orphan inode list on remount
was met with silence and/or slight suspicion (from akpm) so how
about this: just to plug the hole on what I think is a pretty rare
condition, simply disallow the ro->rw transition if we have unprocessed
orphan inodes.

Then we get this:

[root@...nesium ~]# mount -o remount,rw /mnt/test
mount: /mnt/test not mounted already, or bad option
[root@...nesium ~]# dmesg | tail -n 1
EXT3-fs: hda7: couldn't remount RDWR because of unprocessed orphan inode list.  Please umount/remount instead.

Signed-off-by: Eric Sandeen <sandeen@...hat.com>

Index: linux-2.6.19/fs/ext3/super.c
===================================================================
--- linux-2.6.19.orig/fs/ext3/super.c
+++ linux-2.6.19/fs/ext3/super.c
@@ -2350,6 +2350,22 @@ static int ext3_remount (struct super_bl
 				err = -EROFS;
 				goto restore_opts;
 			}
+
+			/*
+			 * If we have an unprocessed orphan list hanging
+			 * around from a previously readonly bdev mount,
+			 * require a full umount/remount for now.
+			 */
+			if (es->s_last_orphan) {
+				printk(KERN_WARNING "EXT3-fs: %s: couldn't "
+				       "remount RDWR because of unprocessed "
+				       "orphan inode list.  Please "
+				       "umount/remount instead.\n",
+				       sb->s_id);
+				err = -EINVAL;
+				goto restore_opts;
+			}
+
 			/*
 			 * Mounting a RDONLY partition read-write, so reread
 			 * and store the current valid flag.  (It may have


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ