From 8ff33adb8cd022a192b0ec6d7d7421bfc4cb57c0 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Fri, 24 Sep 2004 06:29:23 +0000 Subject: [PATCH] Hold threadref while we throb cdevsw in devtoname() --- sys/kern/kern_conf.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index e3e94958be5..53d006bc56e 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -621,20 +621,24 @@ const char * devtoname(struct cdev *dev) { char *p; + struct cdevsw *csw; int mynor; if (dev->si_name[0] == '#' || dev->si_name[0] == '\0') { p = dev->si_name; - if (devsw(dev)) - sprintf(p, "#%s/", devsw(dev)->d_name); - else - sprintf(p, "#%d/", major(dev)); + sprintf(p, "#%d", major(dev)); + p += strlen(p); + csw = dev_refthread(dev); + if (csw != NULL) { + sprintf(p, "(%s)", csw->d_name); + dev_relthread(dev); + } p += strlen(p); mynor = minor(dev); if (mynor < 0 || mynor > 255) - sprintf(p, "%#x", (u_int)mynor); + sprintf(p, "/%#x", (u_int)mynor); else - sprintf(p, "%d", mynor); + sprintf(p, "/%d", mynor); } return (dev->si_name); }