diff options
author | phk <phk@FreeBSD.org> | 2005-10-01 19:21:03 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2005-10-01 19:21:03 +0000 |
commit | 464deb56c22ebb174dadf6125f72f183b808f67f (patch) | |
tree | 7363fdedcb9117b5c84bce4ae4837712436fd834 | |
parent | fa915020265304f5027c203fbd829ebb82bb4795 (diff) | |
download | FreeBSD-src-464deb56c22ebb174dadf6125f72f183b808f67f.zip FreeBSD-src-464deb56c22ebb174dadf6125f72f183b808f67f.tar.gz |
Make sure the clone lists are sorted in the right order.
Explosion triggered by: pjd
MFC: 3 days
-rw-r--r-- | sys/kern/kern_conf.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 4e8e033..b400a4e 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -824,8 +824,10 @@ clone_create(struct clonedevs **cdp, struct cdevsw *csw, int *up, struct cdev ** low++; de = dev; continue; - } - if (u > (unit | extra)) { + } else if (u < (unit | extra)) { + de = dev; + continue; + } else if (u > (unit | extra)) { dl = dev; break; } @@ -835,7 +837,7 @@ clone_create(struct clonedevs **cdp, struct cdevsw *csw, int *up, struct cdev ** dev = newdev(csw, unit2minor(unit | extra), ndev); if (dev->si_flags & SI_CLONELIST) { printf("dev %p (%s) is on clonelist\n", dev, dev->si_name); - printf("unit=%d\n", unit); + printf("unit=%d, low=%d, extra=0x%x\n", unit, low, extra); LIST_FOREACH(dev, &cd->head, si_clone) { printf("\t%p %s\n", dev, dev->si_name); } |