aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysv
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2010-07-21 21:11:48 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2010-08-11 00:18:43 -0400
commit496ee9b8f349a8ae2065114c414a47e89bdeb930 (patch)
tree4f20840fbaf0016df62be4d7bfc83f4e93c17b4e /fs/sysv
parentb76212d7f19420ab29d86e9d17d1ff36cfe0f922 (diff)
V7: Adjust sanity checks for some volumes
Newly mkfs-ed filesystems from Seventh Edition have last modification time set to zero, but are otherwise perfectly valid. Also, tighten up other sanity checks to filter out most filesystems with different bytesex than we're using. Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/sysv')
-rw-r--r--fs/sysv/super.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/sysv/super.c b/fs/sysv/super.c
index 2da3075aff78..5c0aab0b7e18 100644
--- a/fs/sysv/super.c
+++ b/fs/sysv/super.c
@@ -469,7 +469,7 @@ static int v7_fill_super(struct super_block *sb, void *data, int silent)
469 v7sb = (struct v7_super_block *) bh->b_data; 469 v7sb = (struct v7_super_block *) bh->b_data;
470 if (fs16_to_cpu(sbi, v7sb->s_nfree) > V7_NICFREE || 470 if (fs16_to_cpu(sbi, v7sb->s_nfree) > V7_NICFREE ||
471 fs16_to_cpu(sbi, v7sb->s_ninode) > V7_NICINOD || 471 fs16_to_cpu(sbi, v7sb->s_ninode) > V7_NICINOD ||
472 fs32_to_cpu(sbi, v7sb->s_time) == 0) 472 fs32_to_cpu(sbi, v7sb->s_fsize) > V7_MAXSIZE)
473 goto failed; 473 goto failed;
474 474
475 /* plausibility check on root inode: it is a directory, 475 /* plausibility check on root inode: it is a directory,
@@ -479,7 +479,9 @@ static int v7_fill_super(struct super_block *sb, void *data, int silent)
479 v7i = (struct sysv_inode *)(bh2->b_data + 64); 479 v7i = (struct sysv_inode *)(bh2->b_data + 64);
480 if ((fs16_to_cpu(sbi, v7i->i_mode) & ~0777) != S_IFDIR || 480 if ((fs16_to_cpu(sbi, v7i->i_mode) & ~0777) != S_IFDIR ||
481 (fs32_to_cpu(sbi, v7i->i_size) == 0) || 481 (fs32_to_cpu(sbi, v7i->i_size) == 0) ||
482 (fs32_to_cpu(sbi, v7i->i_size) & 017) != 0) 482 (fs32_to_cpu(sbi, v7i->i_size) & 017) ||
483 (fs32_to_cpu(sbi, v7i->i_size) > V7_NFILES *
484 sizeof (struct sysv_dir_entry)))
483 goto failed; 485 goto failed;
484 brelse(bh2); 486 brelse(bh2);
485 bh2 = NULL; 487 bh2 = NULL;