From: Samuel J. Greear Date: Sun, 12 Dec 2010 23:27:19 +0000 (+0000) Subject: kernel - Mark kqfilters of several devices MPSAFE X-Git-Tag: v2.11.0~464^2~20 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/a081e067b882c46be05bbfdc1bd00401cdcb3093 kernel - Mark kqfilters of several devices MPSAFE * Memory I/O devices, Pipes, TTY's and PTY's * Also correct MPSAFE'ty comment for kern_close() --- diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index cc6c21007b..d160e550d5 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -816,7 +816,7 @@ sys_close(struct close_args *uap) } /* - * MPALMOSTSAFE - acquires mplock around knote_fdclose() calls + * MPSAFE */ int kern_close(int fd) diff --git a/sys/kern/kern_memio.c b/sys/kern/kern_memio.c index 9075e3f857..37e4032172 100644 --- a/sys/kern/kern_memio.c +++ b/sys/kern/kern_memio.c @@ -553,14 +553,15 @@ mm_filter_write(struct knote *kn, long hint) static void dummy_filter_detach(struct knote *kn) {} +/* Implemented in kern_nrandom.c */ static struct filterops random_read_filtops = - { FILTEROP_ISFD, NULL, dummy_filter_detach, random_filter_read }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, dummy_filter_detach, random_filter_read }; static struct filterops mm_read_filtops = - { FILTEROP_ISFD, NULL, dummy_filter_detach, mm_filter_read }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, dummy_filter_detach, mm_filter_read }; static struct filterops mm_write_filtops = - { FILTEROP_ISFD, NULL, dummy_filter_detach, mm_filter_write }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, dummy_filter_detach, mm_filter_write }; int mmkqfilter(struct dev_kqfilter_args *ap) diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index 467b95a41a..7b64efc573 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -93,9 +93,9 @@ static int filt_piperead(struct knote *kn, long hint); static int filt_pipewrite(struct knote *kn, long hint); static struct filterops pipe_rfiltops = - { FILTEROP_ISFD, NULL, filt_pipedetach, filt_piperead }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, filt_pipedetach, filt_piperead }; static struct filterops pipe_wfiltops = - { FILTEROP_ISFD, NULL, filt_pipedetach, filt_pipewrite }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, filt_pipedetach, filt_pipewrite }; MALLOC_DEFINE(M_PIPE, "pipe", "pipe structures"); diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 36aef0eb1b..348d770838 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -1280,9 +1280,9 @@ ttioctl(struct tty *tp, u_long cmd, void *data, int flag) } static struct filterops ttyread_filtops = - { FILTEROP_ISFD, NULL, filt_ttyrdetach, filt_ttyread }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, filt_ttyrdetach, filt_ttyread }; static struct filterops ttywrite_filtops = - { FILTEROP_ISFD, NULL, filt_ttywdetach, filt_ttywrite }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, filt_ttywdetach, filt_ttywrite }; int ttykqfilter(struct dev_kqfilter_args *ap) diff --git a/sys/kern/tty_pty.c b/sys/kern/tty_pty.c index a9e6980e6c..cd553daace 100644 --- a/sys/kern/tty_pty.c +++ b/sys/kern/tty_pty.c @@ -847,9 +847,9 @@ ptsunhold(struct tty *tp) * kqueue ops for pseudo-terminals. */ static struct filterops ptcread_filtops = - { FILTEROP_ISFD, NULL, filt_ptcrdetach, filt_ptcread }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, filt_ptcrdetach, filt_ptcread }; static struct filterops ptcwrite_filtops = - { FILTEROP_ISFD, NULL, filt_ptcwdetach, filt_ptcwrite }; + { FILTEROP_ISFD|FILTEROP_MPSAFE, NULL, filt_ptcwdetach, filt_ptcwrite }; static int ptckqfilter(struct dev_kqfilter_args *ap)