From 652d04726d7ed427df2b1e2aba1a0e1964a90109 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Mon, 23 Feb 2004 08:42:55 +0000 Subject: [PATCH] Fix two oversights here: don't trash the freelist, and properly cleanup the cdevsw{}. Submitted by: tegge --- sys/kern/kern_conf.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 1f8db46dd56..8f8d1a45c9e 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -287,6 +287,7 @@ allocdev(void) if (LIST_FIRST(&dev_free)) { si = LIST_FIRST(&dev_free); + LIST_REMOVE(si, si_hash); } else if (stashed >= DEVT_STASH) { MALLOC(si, struct cdev *, sizeof(*si), M_DEVT, M_USE_RESERVE | M_ZERO | M_WAITOK); @@ -399,7 +400,9 @@ fini_cdevsw(struct cdevsw *devsw) reserved_majors[devsw->d_maj] = 0; devsw->d_maj = MAJOR_AUTO; devsw->d_flags &= ~D_ALLOCMAJ; - } + } else if (devsw->d_maj == 0) + devsw->d_maj = 256; + devsw->d_flags &= ~D_INIT; } static void