From 70acfe3e4fa84e9ca2006217be0f76dc062c29ee Mon Sep 17 00:00:00 2001 From: green Date: Wed, 29 Sep 2004 16:38:38 +0000 Subject: Account for alias devices when tearing them down in destroy_dev() so we don't panic on a NULL cdev->si_devsw. --- sys/kern/kern_conf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'sys') diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 1846fa7..f5d6077 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -579,14 +579,14 @@ idestroy_dev(struct cdev *dev) } csw = dev->si_devsw; - dev->si_devsw = NULL; - while (csw->d_purge != NULL && dev->si_threadcount) { + dev->si_devsw = NULL; /* already NULL for SI_ALIAS */ + while (csw != NULL && csw->d_purge != NULL && dev->si_threadcount) { printf("Purging %lu threads from %s\n", dev->si_threadcount, devtoname(dev)); csw->d_purge(dev); msleep(csw, &devmtx, PRIBIO, "devprg", hz/10); } - if (csw->d_purge != NULL) + if (csw != NULL && csw->d_purge != NULL) printf("All threads purged from %s\n", devtoname(dev)); dev->si_drv1 = 0; -- cgit v1.1