diff options
Diffstat (limited to 'fs/reiserfs/super.c')
-rw-r--r-- | fs/reiserfs/super.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index fbae5f4eea09..7dfdc503e601 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c | |||
@@ -2085,6 +2085,14 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) | |||
2085 | unlock_new_inode(root_inode); | 2085 | unlock_new_inode(root_inode); |
2086 | } | 2086 | } |
2087 | 2087 | ||
2088 | if (!S_ISDIR(root_inode->i_mode) || !inode_get_bytes(root_inode) || | ||
2089 | !root_inode->i_size) { | ||
2090 | SWARN(silent, s, "", "corrupt root inode, run fsck"); | ||
2091 | iput(root_inode); | ||
2092 | errval = -EUCLEAN; | ||
2093 | goto error; | ||
2094 | } | ||
2095 | |||
2088 | s->s_root = d_make_root(root_inode); | 2096 | s->s_root = d_make_root(root_inode); |
2089 | if (!s->s_root) | 2097 | if (!s->s_root) |
2090 | goto error; | 2098 | goto error; |