Don't panic due to unlocking an unowned mutex if we fail during attach.

PR:		kern/139053
Reviewed by:	scottl
Approved by:	ed (mentor)
MFC after:	2 weeks
This commit is contained in:
Gavin Atkinson 2009-12-17 17:46:08 +00:00
parent 8c5d93d4d4
commit 64a026bdcc
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=200637

View file

@ -418,6 +418,7 @@ ciss_attach(device_t dev)
sc = device_get_softc(dev);
sc->ciss_dev = dev;
mtx_init(&sc->ciss_mtx, "cissmtx", NULL, MTX_DEF);
/*
* Do PCI-specific init.
@ -430,7 +431,6 @@ ciss_attach(device_t dev)
*/
ciss_initq_free(sc);
ciss_initq_notify(sc);
mtx_init(&sc->ciss_mtx, "cissmtx", NULL, MTX_DEF);
callout_init_mtx(&sc->ciss_periodic, &sc->ciss_mtx, 0);
/*
@ -496,8 +496,11 @@ ciss_attach(device_t dev)
error = 0;
out:
if (error != 0)
if (error != 0) {
/* ciss_free() expects the mutex to be held */
mtx_lock(&sc->ciss_mtx);
ciss_free(sc);
}
return(error);
}