summaryrefslogtreecommitdiff
path: root/fs/hostfs/hostfs_kern.c
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2015-03-02 00:10:25 +0100
committerRichard Weinberger <richard@nod.at>2015-03-26 23:27:49 +0100
commit2ad2dca6fd28cf24ed64110a8b374fc838838c81 (patch)
treee049cd5d7583f33368496c0f8f145f4b162d7c21 /fs/hostfs/hostfs_kern.c
parent4c6dcafc691bbd1e3258b623121d8859d3213ae9 (diff)
downloadlwn-2ad2dca6fd28cf24ed64110a8b374fc838838c81.tar.gz
lwn-2ad2dca6fd28cf24ed64110a8b374fc838838c81.zip
hostfs: Handle bogus st.mode
Make sure that we return EIO if one passes an invalid st.mode into hostfs. Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'fs/hostfs/hostfs_kern.c')
-rw-r--r--fs/hostfs/hostfs_kern.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index 92b008f564a4..8163aac81c21 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -534,11 +534,13 @@ static int read_name(struct inode *ino, char *name)
init_special_inode(ino, st.mode & S_IFMT, rdev);
ino->i_op = &hostfs_iops;
break;
-
- default:
+ case S_IFREG:
ino->i_op = &hostfs_iops;
ino->i_fop = &hostfs_file_fops;
ino->i_mapping->a_ops = &hostfs_aops;
+ break;
+ default:
+ return -EIO;
}
ino->i_ino = st.ino;