# Jared D. McNeill 2008-05-29:
On Thu, 29 May 2008, Jachym Holecek wrote:
Drvctl_close() should release dce_event object when flushing event
queue.
I mean the event plist to which drvctl holds the last reference.
It does (are you looking at the code in-tree?),
I was looking at the URL you posted, but -current has the same
problem unless I'm missing something (see patch below).
-- Jachym
Index: sys/kern/kern_drvctl.c
===================================================================
RCS file: /cvsroot/src/sys/kern/kern_drvctl.c,v
retrieving revision 1.17
diff -u -r1.17 kern_drvctl.c
--- sys/kern/kern_drvctl.c 25 May 2008 12:30:40 -0000 1.17
+++ sys/kern/kern_drvctl.c 30 May 2008 14:44:15 -0000
@@ -128,6 +128,8 @@
if (drvctl_eventcnt == DRVCTL_EVENTQ_DEPTH) {
odce = TAILQ_FIRST(&drvctl_eventq);
TAILQ_REMOVE(&drvctl_eventq, odce, dce_link);
+ prop_object_release(odce->dce_event);
+ kmem_free(odce, sizeof(*odce));
--drvctl_eventcnt;
}
@@ -372,6 +374,7 @@
TAILQ_REMOVE(&drvctl_eventq, dce, dce_link);
KASSERT(drvctl_eventcnt > 0);
--drvctl_eventcnt;
+ prop_object_release(dce->dce_event);
kmem_free(dce, sizeof(*dce));
}
}