summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/vfs_export.c16
-rw-r--r--sys/kern/vfs_subr.c16
2 files changed, 20 insertions, 12 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c
index 867cf88..c0117a6 100644
--- a/sys/kern/vfs_export.c
+++ b/sys/kern/vfs_export.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
- * $Id: vfs_subr.c,v 1.165 1998/10/13 08:24:41 dg Exp $
+ * $Id: vfs_subr.c,v 1.166 1998/10/14 15:05:52 dt Exp $
*/
/*
@@ -46,6 +46,7 @@
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/proc.h>
#include <sys/malloc.h>
@@ -1126,16 +1127,19 @@ bdevvp(dev, vpp)
struct vnode *nvp;
int error;
- if (dev == NODEV)
- return (0);
- error = getnewvnode(VT_NON, (struct mount *) 0, spec_vnodeop_p, &nvp);
+ if (dev == NODEV || major(dev) >= nblkdev ||
+ bdevsw[major(dev)] == NULL) {
+ *vpp = NULLVP;
+ return (ENXIO);
+ }
+ error = getnewvnode(VT_NON, (struct mount *)0, spec_vnodeop_p, &nvp);
if (error) {
- *vpp = 0;
+ *vpp = NULLVP;
return (error);
}
vp = nvp;
vp->v_type = VBLK;
- if ((nvp = checkalias(vp, dev, (struct mount *) 0))) {
+ if ((nvp = checkalias(vp, dev, (struct mount *)0)) != NULL) {
vput(vp);
vp = nvp;
}
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 867cf88..c0117a6 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
- * $Id: vfs_subr.c,v 1.165 1998/10/13 08:24:41 dg Exp $
+ * $Id: vfs_subr.c,v 1.166 1998/10/14 15:05:52 dt Exp $
*/
/*
@@ -46,6 +46,7 @@
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/proc.h>
#include <sys/malloc.h>
@@ -1126,16 +1127,19 @@ bdevvp(dev, vpp)
struct vnode *nvp;
int error;
- if (dev == NODEV)
- return (0);
- error = getnewvnode(VT_NON, (struct mount *) 0, spec_vnodeop_p, &nvp);
+ if (dev == NODEV || major(dev) >= nblkdev ||
+ bdevsw[major(dev)] == NULL) {
+ *vpp = NULLVP;
+ return (ENXIO);
+ }
+ error = getnewvnode(VT_NON, (struct mount *)0, spec_vnodeop_p, &nvp);
if (error) {
- *vpp = 0;
+ *vpp = NULLVP;
return (error);
}
vp = nvp;
vp->v_type = VBLK;
- if ((nvp = checkalias(vp, dev, (struct mount *) 0))) {
+ if ((nvp = checkalias(vp, dev, (struct mount *)0)) != NULL) {
vput(vp);
vp = nvp;
}
OpenPOWER on IntegriCloud