diff options
author | 2015-01-02 10:38:22 +0000 | |
---|---|---|
committer | 2015-01-02 10:38:22 +0000 | |
commit | c81c71527a4ea46fa35cf2b04002db44991a83fa (patch) | |
tree | c223585f5e582ec122c29bb989b7aac2081b2606 | |
parent | store all state needed to defer probe/detach events in vscsi_devevent_task. (diff) | |
download | wireguard-openbsd-c81c71527a4ea46fa35cf2b04002db44991a83fa.tar.xz wireguard-openbsd-c81c71527a4ea46fa35cf2b04002db44991a83fa.zip |
give the device ref taken in vscsikqfilter to the knote, and unref
it in filt_vscsidetach.
-rw-r--r-- | sys/dev/vscsi.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/vscsi.c b/sys/dev/vscsi.c index c9938dea03c..64c8fc05a32 100644 --- a/sys/dev/vscsi.c +++ b/sys/dev/vscsi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vscsi.c,v 1.35 2015/01/02 10:32:21 dlg Exp $ */ +/* $OpenBSD: vscsi.c,v 1.36 2015/01/02 10:38:22 dlg Exp $ */ /* * Copyright (c) 2008 David Gwynne <dlg@openbsd.org> @@ -585,7 +585,8 @@ vscsikqfilter(dev_t dev, struct knote *kn) SLIST_INSERT_HEAD(klist, kn, kn_selnext); mtx_leave(&sc->sc_sel_mtx); - device_unref(&sc->sc_dev); + /* device ref is given to the knote in the klist */ + return (0); } @@ -598,6 +599,8 @@ filt_vscsidetach(struct knote *kn) mtx_enter(&sc->sc_sel_mtx); SLIST_REMOVE(klist, kn, knote, kn_selnext); mtx_leave(&sc->sc_sel_mtx); + + device_unref(&sc->sc_dev); } int |