- lock the tty when playing with the kqueue list.

- don't return 1, when we expect to return errno [EPERM is kind of stupid
  in this case :-)]
This commit is contained in:
christos 2005-10-13 16:18:43 +00:00
parent a615d99b28
commit 0d55f64fcb
1 changed files with 5 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: tty.c,v 1.175 2005/07/25 17:32:03 christos Exp $ */ /* $NetBSD: tty.c,v 1.176 2005/10/13 16:18:43 christos Exp $ */
/*- /*-
* Copyright (c) 1982, 1986, 1990, 1991, 1993 * Copyright (c) 1982, 1986, 1990, 1991, 1993
@ -37,7 +37,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.175 2005/07/25 17:32:03 christos Exp $"); __KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.176 2005/10/13 16:18:43 christos Exp $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/systm.h> #include <sys/systm.h>
@ -1259,7 +1259,9 @@ filt_ttyrdetach(struct knote *kn)
tp = kn->kn_hook; tp = kn->kn_hook;
s = spltty(); s = spltty();
TTY_LOCK(tp);
SLIST_REMOVE(&tp->t_rsel.sel_klist, kn, knote, kn_selnext); SLIST_REMOVE(&tp->t_rsel.sel_klist, kn, knote, kn_selnext);
TTY_UNLOCK(tp);
splx(s); splx(s);
} }
@ -1340,7 +1342,7 @@ ttykqfilter(dev_t dev, struct knote *kn)
kn->kn_fop = &ttywrite_filtops; kn->kn_fop = &ttywrite_filtops;
break; break;
default: default:
return (1); return EINVAL;
} }
kn->kn_hook = tp; kn->kn_hook = tp;