summary refs log tree commit diff
path: root/fs/hostfs
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
parent4c6dcafc691bbd1e3258b623121d8859d3213ae9 (diff)
downloadlinux-2ad2dca6fd28cf24ed64110a8b374fc838838c81.tar.gz
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')
-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;