- 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:
parent
a615d99b28
commit
0d55f64fcb
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue