git: 25cecc4ba284 - main - kern/kern_event.c: extract kqueue_acquire_ref() from kqueue_acquire()

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Sat, 18 Oct 2025 05:14:13 UTC
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=25cecc4ba284096376b1348a807c0e2704d1b746

commit 25cecc4ba284096376b1348a807c0e2704d1b746
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-08-19 04:54:27 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-10-18 05:12:36 +0000

    kern/kern_event.c: extract kqueue_acquire_ref() from kqueue_acquire()
    
    Reviewed by:    markj
    Tested by:      pho
    Sponsored by:   The FreeBSD Foundation
    MFC after:      2 weeks
    Differential revision:  https://reviews.freebsd.org/D52045
---
 sys/kern/kern_event.c | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index 5435f9702d06..80c289f7d802 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -1871,17 +1871,8 @@ done:
 }
 
 static int
-kqueue_acquire(struct file *fp, struct kqueue **kqp)
+kqueue_acquire_ref(struct kqueue *kq)
 {
-	int error;
-	struct kqueue *kq;
-
-	error = 0;
-
-	kq = fp->f_data;
-	if (fp->f_type != DTYPE_KQUEUE || kq == NULL)
-		return (EINVAL);
-	*kqp = kq;
 	KQ_LOCK(kq);
 	if ((kq->kq_state & KQ_CLOSING) == KQ_CLOSING) {
 		KQ_UNLOCK(kq);
@@ -1889,8 +1880,22 @@ kqueue_acquire(struct file *fp, struct kqueue **kqp)
 	}
 	kq->kq_refcnt++;
 	KQ_UNLOCK(kq);
+	return (0);
+}
 
-	return error;
+static int
+kqueue_acquire(struct file *fp, struct kqueue **kqp)
+{
+	struct kqueue *kq;
+	int error;
+
+	kq = fp->f_data;
+	if (fp->f_type != DTYPE_KQUEUE || kq == NULL)
+		return (EINVAL);
+	error = kqueue_acquire_ref(kq);
+	if (error == 0)
+		*kqp = kq;
+	return (error);
 }
 
 static void