Module Name: src Committed By: thorpej Date: Sun Sep 26 15:11:33 UTC 2021
Modified Files: src/sys/kern: subr_log.c Log Message: logread_filtops is MPSAFE. To generate a diff of this commit: cvs rdiff -u -r1.61 -r1.62 src/sys/kern/subr_log.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/subr_log.c diff -u src/sys/kern/subr_log.c:1.61 src/sys/kern/subr_log.c:1.62 --- src/sys/kern/subr_log.c:1.61 Sun Sep 26 01:16:10 2021 +++ src/sys/kern/subr_log.c Sun Sep 26 15:11:33 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_log.c,v 1.61 2021/09/26 01:16:10 thorpej Exp $ */ +/* $NetBSD: subr_log.c,v 1.62 2021/09/26 15:11:33 thorpej Exp $ */ /*- * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_log.c,v 1.61 2021/09/26 01:16:10 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_log.c,v 1.62 2021/09/26 15:11:33 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -290,7 +290,7 @@ filt_logread(struct knote *kn, long hint } static const struct filterops logread_filtops = { - .f_flags = FILTEROP_ISFD, + .f_flags = FILTEROP_ISFD | FILTEROP_MPSAFE, .f_attach = NULL, .f_detach = filt_logrdetach, .f_event = filt_logread, @@ -303,18 +303,15 @@ logkqfilter(dev_t dev, struct knote *kn) switch (kn->kn_filter) { case EVFILT_READ: kn->kn_fop = &logread_filtops; + mutex_spin_enter(&log_lock); + selrecord_knote(&log_selp, kn); + mutex_spin_exit(&log_lock); break; default: return (EINVAL); } - kn->kn_hook = NULL; - - mutex_spin_enter(&log_lock); - selrecord_knote(&log_selp, kn); - mutex_spin_exit(&log_lock); - return (0); }