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:
parent
8eece22e2d
commit
3b8e984374
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=242702
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user