Re: nmdm(4) does not call .l_close

From: Maksim Yevmenkin <maksim.yevmenkin_at_gmail.com>
Date: Fri, 27 Jul 2007 16:14:33 -0700
On 7/27/07, Maksim Yevmenkin <maksim.yevmenkin_at_gmail.com> wrote:
> On 7/26/07, Julian Elischer <julian_at_elischer.org> wrote:
> > Maksim Yevmenkin wrote:
> > > Dear All,
> > >
> > > it seems to me that nmdm(4) is not calling .l_close (i.e. does not
> > > close whatever line discipline might be installed onto /dev/nmdmXX).
> > > the problem is easy to reproduce - just open /dev/nmdm0A and install,
> > > say, ng_tty(4) line discipline onto it. after that, simply close the
> > > /dev/nmdm0A. in theory, the ng_tty(4) node should disappear when
> > > device is closed, but it does not.
> >

[...]

> i have not tried other disciplines yet, i.e. ppp and slip,

ok, i changed the patch to

===

diff -u nmdm.c.orig nmdm.c
--- nmdm.c.orig 2006-11-21 16:59:40.000000000 -0800
+++ nmdm.c      2007-07-27 15:57:50.000000000 -0700
_at__at_ -401,8 +401,13 _at__at_
 static int
  nmdmclose(struct cdev *dev, int flag, int mode, struct thread *td)
 {
+       struct tty *tp = dev->si_tty;
+       int error;

-       return (tty_close(dev->si_tty));
+       error = ttyld_close(tp, flag);
+       (void) tty_close(tp);
+
+       return (error);
 }

 static void

===

and tried it with h4, ppp and slip line disciplines. it seems to work.
since nmdmopen() calls ttyld_open(), nmdmclose(), imo, should call
ttyld_close().

any comments?

thanks,
max
Received on Fri Jul 27 2007 - 21:14:34 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:15 UTC