diff --git a/sys/dev/misc/kbd/kbd.c b/sys/dev/misc/kbd/kbd.c --- a/sys/dev/misc/kbd/kbd.c +++ b/sys/dev/misc/kbd/kbd.c @@ -826,6 +826,12 @@ ap->a_result = 0; + sc = dev->si_drv1; + if (sc == NULL) { + ap->a_result = ENXIO; + return (0); + } + switch (kn->kn_filter) { case EVFILT_READ: kn->kn_fop = &genkbdfiltops; @@ -836,7 +842,6 @@ return (0); } - sc = dev->si_drv1; klist = &sc->gkb_rkq.ki_note; knote_insert(klist, kn); @@ -851,6 +856,8 @@ struct klist *klist; sc = dev->si_drv1; + if (sc == NULL) + return; klist = &sc->gkb_rkq.ki_note; knote_remove(klist, kn); }