diff options
author | 2016-04-01 11:51:55 +0000 | |
---|---|---|
committer | 2016-04-01 11:51:55 +0000 | |
commit | c42366fecd1a7720cd13782180f75778eaf5675a (patch) | |
tree | 7bf0023f850a70c131d1ae128afcf2f0627af582 | |
parent | Tweak rcctl wording. (diff) | |
download | wireguard-openbsd-c42366fecd1a7720cd13782180f75778eaf5675a.tar.xz wireguard-openbsd-c42366fecd1a7720cd13782180f75778eaf5675a.zip |
Revert the clone bitmap enlargement change
-rw-r--r-- | sys/kern/spec_vnops.c | 7 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 15 | ||||
-rw-r--r-- | sys/sys/specdev.h | 5 |
3 files changed, 7 insertions, 20 deletions
diff --git a/sys/kern/spec_vnops.c b/sys/kern/spec_vnops.c index 9a5e9e0f2b0..c8754e7a80b 100644 --- a/sys/kern/spec_vnops.c +++ b/sys/kern/spec_vnops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: spec_vnops.c,v 1.87 2016/03/31 20:00:17 natano Exp $ */ +/* $OpenBSD: spec_vnops.c,v 1.88 2016/04/01 11:51:55 mikeb Exp $ */ /* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */ /* @@ -707,14 +707,13 @@ spec_open_clone(struct vop_open_args *ap) if (minor(vp->v_rdev) >= (1 << CLONE_SHIFT)) return (ENXIO); - for (i = 1; i < CLONE_MAP_SZ * NBBY; i++) { + for (i = 1; i < sizeof(vp->v_specbitmap) * NBBY; i++) if (isclr(vp->v_specbitmap, i)) { setbit(vp->v_specbitmap, i); break; } - } - if (i == CLONE_MAP_SZ * NBBY) + if (i == sizeof(vp->v_specbitmap) * NBBY) return (EBUSY); /* too many open instances */ error = cdevvp(makedev(major(vp->v_rdev), diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index fb4e22da8d9..629429b7e72 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vfs_subr.c,v 1.241 2016/03/31 20:00:17 natano Exp $ */ +/* $OpenBSD: vfs_subr.c,v 1.242 2016/04/01 11:51:55 mikeb Exp $ */ /* $NetBSD: vfs_subr.c,v 1.53 1996/04/22 01:39:13 christos Exp $ */ /* @@ -555,13 +555,7 @@ loop: nvp->v_specnext = *vpp; nvp->v_specmountpoint = NULL; nvp->v_speclockf = NULL; - nvp->v_specbitmap = NULL; - if (nvp_rdev == VCHR && - (cdevsw[major(nvp_rdev)].d_flags & D_CLONE) && - minor(nvp_rdev) >> CLONE_SHIFT == 0) { - nvp->v_specbitmap = malloc(CLONE_MAP_SZ, M_VNODE, - M_WAITOK | M_ZERO); - } + memset(nvp->v_specbitmap, 0, sizeof(nvp->v_specbitmap)); *vpp = nvp; if (vp != NULLVP) { nvp->v_flag |= VALIASED; @@ -1099,11 +1093,6 @@ vgonel(struct vnode *vp, struct proc *p) vx->v_flag &= ~VALIASED; vp->v_flag &= ~VALIASED; } - if (vp->v_rdev == VCHR && - (cdevsw[major(vp->v_rdev)].d_flags & D_CLONE) && - minor(vp->v_rdev) >> CLONE_SHIFT == 0) { - free(vp->v_specbitmap, M_VNODE, CLONE_MAP_SZ); - } free(vp->v_specinfo, M_VNODE, sizeof(struct specinfo)); vp->v_specinfo = NULL; } diff --git a/sys/sys/specdev.h b/sys/sys/specdev.h index b550c720497..6bbfc28a680 100644 --- a/sys/sys/specdev.h +++ b/sys/sys/specdev.h @@ -1,4 +1,4 @@ -/* $OpenBSD: specdev.h,v 1.35 2016/03/31 20:00:17 natano Exp $ */ +/* $OpenBSD: specdev.h,v 1.36 2016/04/01 11:51:55 mikeb Exp $ */ /* $NetBSD: specdev.h,v 1.12 1996/02/13 13:13:01 mycroft Exp $ */ /* @@ -46,7 +46,7 @@ struct specinfo { daddr_t si_lastr; union { struct vnode *ci_parent; /* pointer back to parent device */ - u_int8_t *ci_bitmap; /* bitmap of devices cloned off us */ + u_int8_t ci_bitmap[8]; /* bitmap of devices cloned off us */ } si_ci; }; @@ -71,7 +71,6 @@ struct cloneinfo { * This gives us 8 bits for encoding the real minor number. */ #define CLONE_SHIFT 8 -#define CLONE_MAP_SZ 128 /* * Special device management |