mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Don't follow null bdevsw pointers. The `major(dev) < nblkdev' test rotted
when bdevsw[] became sparse. We still depend on magic to avoid having to check that (v_rdev) device numbers in vnodes are not NODEV.
This commit is contained in:
parent
9cd93b3aec
commit
65baf8f06b
7 changed files with 21 additions and 12 deletions
|
|
@ -36,7 +36,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)cd9660_vfsops.c 8.18 (Berkeley) 5/22/95
|
||||
* $Id: cd9660_vfsops.c,v 1.43 1998/09/07 13:17:00 bde Exp $
|
||||
* $Id: cd9660_vfsops.c,v 1.44 1998/09/14 19:56:39 sos Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
|
@ -229,7 +229,8 @@ cd9660_mount(mp, path, data, ndp, p)
|
|||
vrele(devvp);
|
||||
return ENOTBLK;
|
||||
}
|
||||
if (major(devvp->v_rdev) >= nblkdev) {
|
||||
if (major(devvp->v_rdev) >= nblkdev ||
|
||||
bdevsw[major(devvp->v_rdev)] == NULL) {
|
||||
vrele(devvp);
|
||||
return ENXIO;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: msdosfs_vfsops.c,v 1.35 1998/05/06 05:29:38 msmith Exp $ */
|
||||
/* $Id: msdosfs_vfsops.c,v 1.36 1998/09/07 13:17:02 bde Exp $ */
|
||||
/* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */
|
||||
|
||||
/*-
|
||||
|
|
@ -50,6 +50,7 @@
|
|||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/conf.h>
|
||||
#include <sys/namei.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/kernel.h>
|
||||
|
|
@ -297,7 +298,8 @@ msdosfs_mount(mp, path, data, ndp, p)
|
|||
vrele(devvp);
|
||||
return (ENOTBLK);
|
||||
}
|
||||
if (major(devvp->v_rdev) >= nblkdev) {
|
||||
if (major(devvp->v_rdev) >= nblkdev ||
|
||||
bdevsw[major(devvp->v_rdev)] == NULL) {
|
||||
vrele(devvp);
|
||||
return (ENXIO);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -276,7 +276,8 @@ ext2_mount(mp, path, data, ndp, p)
|
|||
vrele(devvp);
|
||||
return (ENOTBLK);
|
||||
}
|
||||
if (major(devvp->v_rdev) >= nblkdev) {
|
||||
if (major(devvp->v_rdev) >= nblkdev ||
|
||||
bdevsw[major(devvp->v_rdev)] == NULL) {
|
||||
vrele(devvp);
|
||||
return (ENXIO);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -276,7 +276,8 @@ ext2_mount(mp, path, data, ndp, p)
|
|||
vrele(devvp);
|
||||
return (ENOTBLK);
|
||||
}
|
||||
if (major(devvp->v_rdev) >= nblkdev) {
|
||||
if (major(devvp->v_rdev) >= nblkdev ||
|
||||
bdevsw[major(devvp->v_rdev)] == NULL) {
|
||||
vrele(devvp);
|
||||
return (ENXIO);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)swapgeneric.c 5.5 (Berkeley) 5/9/91
|
||||
* $Id: swapgeneric.c,v 1.23 1998/02/20 13:37:37 bde Exp $
|
||||
* $Id: swapgeneric.c,v 1.24 1998/09/15 10:03:43 gibbs Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
|
@ -138,7 +138,8 @@ bad:
|
|||
unit = 0;
|
||||
for (gc = genericconf; gc->gc_name; gc++) {
|
||||
for (bd = 0; bd < nblkdev; bd++) {
|
||||
if (!strcmp(bdevsw[bd]->d_name, gc->gc_name)) {
|
||||
if (bdevsw[bd] != NULL &&
|
||||
strcmp(bdevsw[bd]->d_name, gc->gc_name) == 0) {
|
||||
printf("root on %s0\n", bdevsw[bd]->d_name);
|
||||
goto found;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)cd9660_vfsops.c 8.18 (Berkeley) 5/22/95
|
||||
* $Id: cd9660_vfsops.c,v 1.43 1998/09/07 13:17:00 bde Exp $
|
||||
* $Id: cd9660_vfsops.c,v 1.44 1998/09/14 19:56:39 sos Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
|
@ -229,7 +229,8 @@ cd9660_mount(mp, path, data, ndp, p)
|
|||
vrele(devvp);
|
||||
return ENOTBLK;
|
||||
}
|
||||
if (major(devvp->v_rdev) >= nblkdev) {
|
||||
if (major(devvp->v_rdev) >= nblkdev ||
|
||||
bdevsw[major(devvp->v_rdev)] == NULL) {
|
||||
vrele(devvp);
|
||||
return ENXIO;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: msdosfs_vfsops.c,v 1.35 1998/05/06 05:29:38 msmith Exp $ */
|
||||
/* $Id: msdosfs_vfsops.c,v 1.36 1998/09/07 13:17:02 bde Exp $ */
|
||||
/* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */
|
||||
|
||||
/*-
|
||||
|
|
@ -50,6 +50,7 @@
|
|||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/conf.h>
|
||||
#include <sys/namei.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/kernel.h>
|
||||
|
|
@ -297,7 +298,8 @@ msdosfs_mount(mp, path, data, ndp, p)
|
|||
vrele(devvp);
|
||||
return (ENOTBLK);
|
||||
}
|
||||
if (major(devvp->v_rdev) >= nblkdev) {
|
||||
if (major(devvp->v_rdev) >= nblkdev ||
|
||||
bdevsw[major(devvp->v_rdev)] == NULL) {
|
||||
vrele(devvp);
|
||||
return (ENXIO);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue