diff options
Diffstat (limited to 'sys/vm/vm_swap.c')
-rw-r--r-- | sys/vm/vm_swap.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/vm/vm_swap.c b/sys/vm/vm_swap.c index bfcebdc028c9..10488d9a2184 100644 --- a/sys/vm/vm_swap.c +++ b/sys/vm/vm_swap.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)vm_swap.c 8.5 (Berkeley) 2/17/94 - * $Id: vm_swap.c,v 1.56 1998/07/04 22:30:26 julian Exp $ + * $Id: vm_swap.c,v 1.55 1998/07/04 20:45:42 julian Exp $ */ #include "opt_devfs.h" @@ -203,8 +203,8 @@ swapon(p, uap) switch (vp->v_type) { case VBLK: - dev = vp->v_rdev; - if (major(dev) >= nblkdev || bdevsw[major(dev)] == NULL) { + dev = (dev_t) vp->v_rdev; + if (major(dev) >= nblkdev) { error = ENXIO; break; } @@ -264,11 +264,14 @@ swaponvp(p, vp, dev, nblks) } return EINVAL; found: + if (dev != NODEV && (major(dev) >= nblkdev)) + return (ENXIO); + error = VOP_OPEN(vp, FREAD | FWRITE, p->p_ucred, p); if (error) return (error); - if (nblks == 0 && dev != NODEV && (bdevsw[major(dev)]->d_psize == 0 || + if (nblks == 0 && (bdevsw[major(dev)]->d_psize == 0 || (nblks = (*bdevsw[major(dev)]->d_psize) (dev)) == -1)) { (void) VOP_CLOSE(vp, FREAD | FWRITE, p->p_ucred, p); return (ENXIO); |