aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarsten Otte <cotte@de.ibm.com>2007-06-23 20:16:46 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-06-24 11:59:12 -0400
commit266f5aa0970409bf1ebdf9fc4e65a1186eeed3c2 (patch)
tree5c0ba331d323ddd3b2090631dc6a852a498257de
parent4f84e4be53a04a65d97bf0faa0c8f99e29bc0170 (diff)
ext2: disallow setting xip on remount
Yan Zheng pointed out that ext2_remount lacks checking if -o xip should be enabled or not. This patch checks for presence of direct_access on the backing block device and if the blocksize meets the requirements. Signed-off-by: Carsten Otte <cotte@de.ibm.com> Cc: Yan Zheng <yanzheng@21cn.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/ext2/super.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 16337bff0272..c9fd8cf6eaa9 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -1038,6 +1038,14 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
1038 sb->s_flags = (sb->s_flags & ~MS_POSIXACL) | 1038 sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
1039 ((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0); 1039 ((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
1040 1040
1041 ext2_xip_verify_sb(sb); /* see if bdev supports xip, unset
1042 EXT2_MOUNT_XIP if not */
1043
1044 if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
1045 printk("XIP: Unsupported blocksize\n");
1046 goto restore_opts;
1047 }
1048
1041 es = sbi->s_es; 1049 es = sbi->s_es;
1042 if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) != 1050 if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
1043 (old_mount_opt & EXT2_MOUNT_XIP)) && 1051 (old_mount_opt & EXT2_MOUNT_XIP)) &&