Whacked out CIS configurations can cause us to not have any child. When

such a card is ejected, we'd panic.  Instead, just ignore it.

I should also add a sanity check in the FUNCID code as well, but this
isn't wrong since the check is cheap and happens infrequently.
This commit is contained in:
Warner Losh 2003-09-05 03:08:08 +00:00
parent 2fad1e931e
commit a48c0be85d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=119755

View File

@ -284,14 +284,16 @@ pccard_detach_card(device_t dev)
struct pccard_softc *sc = PCCARD_SOFTC(dev);
struct pccard_function *pf;
struct pccard_config_entry *cfe;
int state;
/*
* We are running on either the PCCARD socket's event thread
* or in user context detaching a device by user request.
*/
STAILQ_FOREACH(pf, &sc->card.pf_head, pf_list) {
int state = device_get_state(pf->dev);
if (pf->dev == NULL)
continue;
state = device_get_state(pf->dev);
if (state == DS_ATTACHED || state == DS_BUSY)
device_detach(pf->dev);
if (pf->cfe != NULL)