From 1052c2e1288e78996dde99a7df84d40272db6d4e Mon Sep 17 00:00:00 2001 From: rik Date: Thu, 10 Jun 2004 13:50:28 +0000 Subject: Free tty at detach(). Tested by: `pstat -t` Requested by: phk --- sys/dev/cx/if_cx.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'sys') diff --git a/sys/dev/cx/if_cx.c b/sys/dev/cx/if_cx.c index 17f98c2..726de52 100644 --- a/sys/dev/cx/if_cx.c +++ b/sys/dev/cx/if_cx.c @@ -1037,6 +1037,14 @@ static int cx_detach (device_t dev) if (!d || d->chan->type == T_NONE) continue; + +#if __FreeBSD_version >= 502113 + if (d->tty) { + ttyrel (d->tty); + d->tty = NULL; + } +#endif + #ifdef NETGRAPH #if __FreeBSD_version >= 500000 if (d->node) { @@ -1735,7 +1743,13 @@ static int cx_close (dev_t dev, int flag, int mode, struct thread *td) splx (s); d->callout = 0; - /* Wake up bidirectional opens. */ + /* + * Wake up bidirectional opens. + * Since we may be opened twice we couldn't call ttyrel() here. + * So just keep d->tty for future use. It would be freed by + * ttyrel() at cx_detach(). + */ + wakeup (d); d->open_dev &= ~0x2; -- cgit v1.1