summaryrefslogtreecommitdiff
path: root/fs/minix/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/minix/inode.c')
-rw-r--r--fs/minix/inode.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/minix/inode.c b/fs/minix/inode.c
index b55585988875..42fd4f97ceb2 100644
--- a/fs/minix/inode.c
+++ b/fs/minix/inode.c
@@ -208,7 +208,7 @@ static struct super_block *minix_read_super(struct super_block *s, void *data,
/* set up enough so that it can read an inode */
s->s_op = &minix_sops;
root_inode = iget(s, MINIX_ROOT_INO);
- if (!root_inode)
+ if (!root_inode || is_bad_inode(root_inode))
goto out_no_root;
s->s_root = d_alloc_root(root_inode);
@@ -347,8 +347,10 @@ static void V1_minix_read_inode(struct inode * inode)
int i;
raw_inode = minix_V1_raw_inode(inode->i_sb, inode->i_ino, &bh);
- if (!raw_inode)
+ if (!raw_inode) {
+ make_bad_inode(inode);
return;
+ }
inode->i_mode = raw_inode->i_mode;
inode->i_uid = (uid_t)raw_inode->i_uid;
inode->i_gid = (gid_t)raw_inode->i_gid;
@@ -372,8 +374,10 @@ static void V2_minix_read_inode(struct inode * inode)
int i;
raw_inode = minix_V2_raw_inode(inode->i_sb, inode->i_ino, &bh);
- if (!raw_inode)
+ if (!raw_inode) {
+ make_bad_inode(inode);
return;
+ }
inode->i_mode = raw_inode->i_mode;
inode->i_uid = (uid_t)raw_inode->i_uid;
inode->i_gid = (gid_t)raw_inode->i_gid;