aboutsummaryrefslogtreecommitdiff
path: root/sys/fs
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2011-11-03 18:55:18 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2011-11-03 18:55:18 +0000
commit1fef78c3f02e285cac38e9b81161793a71c15bd3 (patch)
tree3169bc7e19ab37bc304240ab8390ce40f754a985 /sys/fs
parent3ca1a2d6a0fb7e7fea68317cc2acf935ee41542a (diff)
downloadsrc-1fef78c3f02e285cac38e9b81161793a71c15bd3.tar.gz
src-1fef78c3f02e285cac38e9b81161793a71c15bd3.zip
Fix kernel panic when d_fdopen csw method is called for NULL fp.
This may happen when kernel consumer calls VOP_OPEN(). Reported by: Tavis Ormandy <taviso cmpxchg8b com> through delphij MFC after: 3 days
Notes
Notes: svn path=/head/; revision=227062
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/devfs/devfs_vnops.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index 68ab7ce9d94b..41bc0b80c9ce 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -1050,6 +1050,10 @@ devfs_open(struct vop_open_args *ap)
dsw = dev_refthread(dev, &ref);
if (dsw == NULL)
return (ENXIO);
+ if (fp == NULL && dsw->d_fdopen != NULL) {
+ dev_relthread(dev, ref);
+ return (ENXIO);
+ }
vlocked = VOP_ISLOCKED(vp);
VOP_UNLOCK(vp, 0);