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:
parent
2fad1e931e
commit
a48c0be85d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=119755
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user