The tty_inwakeup callback appears to be called both locked and unlocked.

Handle the required locking automatically for now.

MFC after:	1 weeks
This commit is contained in:
Hans Petter Selasky 2012-11-07 18:44:05 +00:00
parent 8eece22e2d
commit 3b8e984374
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=242702

View File

@ -788,15 +788,20 @@ ucom_inwakeup(struct tty *tp)
{
struct ucom_softc *sc = tty_softc(tp);
uint16_t pos;
int locked;
if (sc == NULL)
return;
tty_lock(tp);
locked = mtx_owned(sc->sc_mtx);
if (locked == 0)
tty_lock(tp);
if (ttydisc_can_bypass(tp) != 0 ||
(sc->sc_flag & UCOM_FLAG_HL_READY) == 0) {
tty_unlock(tp);
if (locked == 0)
tty_unlock(tp);
return;
}
@ -821,7 +826,8 @@ ucom_inwakeup(struct tty *tp)
(sc->sc_flag & UCOM_FLAG_RTS_IFLOW))
ucom_rts(sc, 0);
tty_unlock(tp);
if (locked == 0)
tty_unlock(tp);
}
static int