diff options
| author | Kyle Evans <kevans@FreeBSD.org> | 2024-01-05 16:13:06 +0000 |
|---|---|---|
| committer | Kyle Evans <kevans@FreeBSD.org> | 2024-01-05 16:13:06 +0000 |
| commit | a68d5a66258e953ef6ccdbdd82e89572a3cc04f9 (patch) | |
| tree | 2d2dd7b86ff0991f2fb6445891e15590990da16d /sys | |
| parent | f9b17005bf8f1a30e2a74a3e66c92e34aa87f9bf (diff) | |
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/kern/kern_cons.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/sys/kern/kern_cons.c b/sys/kern/kern_cons.c index d4a858cb12fd..462cd0c45758 100644 --- a/sys/kern/kern_cons.c +++ b/sys/kern/kern_cons.c @@ -239,31 +239,15 @@ cnremove(struct consdev *cn) { struct cn_device *cnd; int i; - bool primary = true; STAILQ_FOREACH(cnd, &cn_devlist, cnd_next) { - if (cnd->cnd_cn != cn) { - primary = false; + if (cnd->cnd_cn != cn) continue; - } - + if (STAILQ_FIRST(&cn_devlist) == cnd) + ttyconsdev_select(NULL); STAILQ_REMOVE(&cn_devlist, cnd, cn_device, cnd_next); cnd->cnd_cn = NULL; - /* - * We only need to select a new console if we've removed all - * consoles or if we're removing the primary console. - */ - if (primary) { - struct cn_device *next; - - next = STAILQ_FIRST(&cn_devlist); - if (next == NULL) - ttyconsdev_select(NULL); - else - ttyconsdev_select(next->cnd_cn->cn_name); - } - /* Remove this device from available mask. */ for (i = 0; i < CNDEVTAB_SIZE; i++) if (cnd == &cn_devtab[i]) { @@ -372,6 +356,8 @@ sysctl_kern_console(SYSCTL_HANDLER_ARGS) error = 0; } else { error = cnadd(cp); + if (error == 0) + cnselect(cp); } break; } |
