Module Name: src Committed By: thorpej Date: Sun Sep 26 15:58:33 UTC 2021
Modified Files: src/sys/net: if_tap.c if_tun.c Log Message: Use seltrue_filtops rather than rolling our own with filt_seltrue. To generate a diff of this commit: cvs rdiff -u -r1.123 -r1.124 src/sys/net/if_tap.c cvs rdiff -u -r1.163 -r1.164 src/sys/net/if_tun.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/net/if_tap.c diff -u src/sys/net/if_tap.c:1.123 src/sys/net/if_tap.c:1.124 --- src/sys/net/if_tap.c:1.123 Sun Sep 26 01:16:10 2021 +++ src/sys/net/if_tap.c Sun Sep 26 15:58:33 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_tap.c,v 1.123 2021/09/26 01:16:10 thorpej Exp $ */ +/* $NetBSD: if_tap.c,v 1.124 2021/09/26 15:58:33 thorpej Exp $ */ /* * Copyright (c) 2003, 2004, 2008, 2009 The NetBSD Foundation. @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.123 2021/09/26 01:16:10 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.124 2021/09/26 15:58:33 thorpej Exp $"); #if defined(_KERNEL_OPT) @@ -1175,13 +1175,6 @@ static struct filterops tap_read_filtero .f_event = tap_kqread, }; -static struct filterops tap_seltrue_filterops = { - .f_flags = FILTEROP_ISFD, - .f_attach = NULL, - .f_detach = tap_kqdetach, - .f_event = filt_seltrue, -}; - static int tap_cdev_kqfilter(dev_t dev, struct knote *kn) { @@ -1204,24 +1197,25 @@ tap_dev_kqfilter(int unit, struct knote if (sc == NULL) return ENXIO; - KERNEL_LOCK(1, NULL); switch(kn->kn_filter) { case EVFILT_READ: kn->kn_fop = &tap_read_filterops; + kn->kn_hook = sc; + KERNEL_LOCK(1, NULL); + mutex_spin_enter(&sc->sc_lock); + selrecord_knote(&sc->sc_rsel, kn); + mutex_spin_exit(&sc->sc_lock); + KERNEL_UNLOCK_ONE(NULL); break; + case EVFILT_WRITE: - kn->kn_fop = &tap_seltrue_filterops; + kn->kn_fop = &seltrue_filtops; break; + default: - KERNEL_UNLOCK_ONE(NULL); return EINVAL; } - kn->kn_hook = sc; - mutex_spin_enter(&sc->sc_lock); - selrecord_knote(&sc->sc_rsel, kn); - mutex_spin_exit(&sc->sc_lock); - KERNEL_UNLOCK_ONE(NULL); return 0; } Index: src/sys/net/if_tun.c diff -u src/sys/net/if_tun.c:1.163 src/sys/net/if_tun.c:1.164 --- src/sys/net/if_tun.c:1.163 Sun Sep 26 01:16:10 2021 +++ src/sys/net/if_tun.c Sun Sep 26 15:58:33 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_tun.c,v 1.163 2021/09/26 01:16:10 thorpej Exp $ */ +/* $NetBSD: if_tun.c,v 1.164 2021/09/26 15:58:33 thorpej Exp $ */ /* * Copyright (c) 1988, Julian Onions <j...@cs.nott.ac.uk> @@ -19,7 +19,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.163 2021/09/26 01:16:10 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.164 2021/09/26 15:58:33 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1088,13 +1088,6 @@ static const struct filterops tunread_fi .f_event = filt_tunread, }; -static const struct filterops tun_seltrue_filtops = { - .f_flags = FILTEROP_ISFD, - .f_attach = NULL, - .f_detach = filt_tunrdetach, - .f_event = filt_seltrue, -}; - int tunkqfilter(dev_t dev, struct knote *kn) { @@ -1108,10 +1101,12 @@ tunkqfilter(dev_t dev, struct knote *kn) switch (kn->kn_filter) { case EVFILT_READ: kn->kn_fop = &tunread_filtops; + kn->kn_hook = tp; + selrecord_knote(&tp->tun_rsel, kn); break; case EVFILT_WRITE: - kn->kn_fop = &tun_seltrue_filtops; + kn->kn_fop = &seltrue_filtops; break; default: @@ -1119,10 +1114,6 @@ tunkqfilter(dev_t dev, struct knote *kn) goto out; } - kn->kn_hook = tp; - - selrecord_knote(&tp->tun_rsel, kn); - out: mutex_exit(&tp->tun_lock); out_nolock: