DragonFlyBSD Kernel Audit
DF-0177 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/kern/tty_tty.c b/sys/kern/tty_tty.c
--- a/sys/kern/tty_tty.c
+++ b/sys/kern/tty_tty.c
@@ -283,8 +283,13 @@
 	KKASSERT(p);
 	ttyvp = cttyvp(p);
 
-	if (ttyvp != NULL)
-		return (VOP_KQFILTER(ttyvp, kn));
+	if (ttyvp != NULL) {
+		int error;
+		vhold(ttyvp);
+		error = VOP_KQFILTER(ttyvp, kn);
+		vdrop(ttyvp);
+		return (error);
+	}
 
 	ap->a_result = 0;