- Unlock softc mutex on failure.

MFC after:	1 week
This commit is contained in:
stas 2009-04-20 13:15:25 +00:00
parent 21a8b350dc
commit 518b993576

View File

@ -1677,6 +1677,7 @@ envy24htchan_trigger(kobj_t obj, void *data, int go)
struct sc_info *sc = ch->parent;
u_int32_t ptr;
int slot;
int error = 0;
#if 0
int i;
@ -1698,8 +1699,10 @@ envy24htchan_trigger(kobj_t obj, void *data, int go)
sc->caps[0].minspeed = sc->caps[0].maxspeed = sc->speed;
sc->caps[1].minspeed = sc->caps[1].maxspeed = sc->speed;
}
else if (ch->speed != 0 && ch->speed != sc->speed)
return -1;
else if (ch->speed != 0 && ch->speed != sc->speed) {
error = -1;
goto fail;
}
if (ch->speed == 0)
ch->channel->speed = sc->speed;
/* start or enable channel */
@ -1729,16 +1732,20 @@ envy24htchan_trigger(kobj_t obj, void *data, int go)
#if(0)
device_printf(sc->dev, "envy24htchan_trigger(): emldmawr\n");
#endif
if (ch->run != 1)
return -1;
if (ch->run != 1) {
error = -1;
goto fail;
}
ch->emldma(ch);
break;
case PCMTRIG_EMLDMARD:
#if(0)
device_printf(sc->dev, "envy24htchan_trigger(): emldmard\n");
#endif
if (ch->run != 1)
return -1;
if (ch->run != 1) {
error = -1;
goto fail;
}
ch->emldma(ch);
break;
case PCMTRIG_ABORT:
@ -1768,9 +1775,9 @@ envy24htchan_trigger(kobj_t obj, void *data, int go)
}
break;
}
fail:
snd_mtxunlock(sc->lock);
return 0;
return (error);
}
static int