nmdm(4) does not call .l_close
Julian Elischer
julian at elischer.org
Sat Jul 28 03:28:10 UTC 2007
Maksim Yevmenkin wrote:
> 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
> @@ -401,8 +401,13 @@
> 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);
> }
looks fine to me
>
> 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
More information about the freebsd-current
mailing list