From fe169828c3d6b0dfabd753da476928fe23ab54a5 Mon Sep 17 00:00:00 2001
From: Mark Johnston <markj@FreeBSD.org>
Date: Fri, 19 Feb 2016 01:35:01 +0000
Subject: [PATCH] Return an error if both EV_ENABLE and EV_DISABLE are
 specified for a kevent.

Currently, this combination results in EV_DISABLE being ignored.

Reviewed by:	kib
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D5307
---
 sys/kern/kern_event.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index 805b6b541612..f96b6d75e79b 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -1116,6 +1116,9 @@ kqueue_register(struct kqueue *kq, struct kevent *kev, struct thread *td, int wa
 	int error, filt, event;
 	int haskqglobal, filedesc_unlock;
 
+	if ((kev->flags & (EV_ENABLE | EV_DISABLE)) == (EV_ENABLE | EV_DISABLE))
+		return (EINVAL);
+
 	fp = NULL;
 	kn = NULL;
 	error = 0;