diff options
-rw-r--r-- | sys/kern/kern_conf.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 8762352a0f9f..cf47c7c624b7 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; } |