From df3343c5ae686fc9dda8618a212f08ec591b7e7e Mon Sep 17 00:00:00 2001 From: phk Date: Sat, 20 Aug 2005 12:13:51 +0000 Subject: Properly un-giant-trick the cdevsw in fini_cdevsw() Tripped over by: Huang wen hui --- sys/kern/kern_conf.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'sys/kern/kern_conf.c') diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 8762352..cf47c7c 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -443,10 +443,14 @@ umajor(dev_t dev) static void fini_cdevsw(struct cdevsw *devsw) { + struct cdevsw *gt; - if (devsw->d_gianttrick != NULL) - free(devsw->d_gianttrick, M_DEVT); - devsw->d_gianttrick = NULL; + if (devsw->d_gianttrick != NULL) { + gt = devsw->d_gianttrick; + memcpy(devsw, gt, sizeof *devsw); + free(gt, M_DEVT); + devsw->d_gianttrick = NULL; + } devsw->d_flags &= ~D_INIT; } -- cgit v1.1