summaryrefslogtreecommitdiff
path: root/fs/sysv/inode.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 23:59:43 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 23:59:43 -0800
commitba6edf537004b1c68a0736c95ebe39a30a2537fb (patch)
treeb4a2cd81ca09ab6cd8e442458d6da722422ad952 /fs/sysv/inode.c
parentd0415686774477153ca911a612f74c2d2bb11be6 (diff)
v2.5.1.4 -> v2.5.1.5
- Dave Jones: more merging, fix up last merge.. - release to sync with Dave
Diffstat (limited to 'fs/sysv/inode.c')
-rw-r--r--fs/sysv/inode.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c
index 6233aecba88a..d1ee3e89567d 100644
--- a/fs/sysv/inode.c
+++ b/fs/sysv/inode.c
@@ -152,13 +152,13 @@ static void sysv_read_inode(struct inode *inode)
printk("Bad inode number on dev %s"
": %d is out of range\n",
kdevname(inode->i_dev), ino);
- return;
+ goto bad_inode;
}
raw_inode = sysv_raw_inode(sb, ino, &bh);
if (!raw_inode) {
printk("Major problem: unable to read inode from dev %s\n",
bdevname(inode->i_dev));
- return;
+ goto bad_inode;
}
/* SystemV FS: kludge permissions if ino==SYSV_ROOT_INO ?? */
inode->i_mode = fs16_to_cpu(sb, raw_inode->i_mode);
@@ -178,6 +178,11 @@ static void sysv_read_inode(struct inode *inode)
rdev = (u16)fs32_to_cpu(sb, inode->u.sysv_i.i_data[0]);
inode->u.sysv_i.i_dir_start_lookup = 0;
sysv_set_inode(inode, rdev);
+ return;
+
+bad_inode:
+ make_bad_inode(inode);
+ return;
}
static struct buffer_head * sysv_update_inode(struct inode * inode)