aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2026-05-10 15:15:45 +0000
committerMark Johnston <markj@FreeBSD.org>2026-05-20 19:34:50 +0000
commitf95da272b8b7138008542022af3dc7ead3ff2ce2 (patch)
treef0b51ff2cf3faf43585c7dd1a27e46e36100088b /sys
parent4b6a23eb8a7e4b137d9e1b527d1fa84c950484eb (diff)
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_jaildesc.c10
-rw-r--r--sys/sys/jaildesc.h1
2 files changed, 3 insertions, 8 deletions
diff --git a/sys/kern/kern_jaildesc.c b/sys/kern/kern_jaildesc.c
index 80d0f3d07d7c..e2e3246ea92b 100644
--- a/sys/kern/kern_jaildesc.c
+++ b/sys/kern/kern_jaildesc.c
@@ -232,10 +232,7 @@ jaildesc_knote(struct prison *pr, long hint)
JAILDESC_LOCK(jd);
if (hint == NOTE_JAIL_REMOVE) {
jd->jd_flags |= JDF_REMOVED;
- if (jd->jd_flags & JDF_SELECTED) {
- jd->jd_flags &= ~JDF_SELECTED;
- selwakeup(&jd->jd_selinfo);
- }
+ selwakeup(&jd->jd_selinfo);
}
KNOTE_LOCKED(&jd->jd_selinfo.si_note, hint);
JAILDESC_UNLOCK(jd);
@@ -292,6 +289,7 @@ jaildesc_close(struct file *fp, struct thread *td)
}
prison_free(pr);
}
+ seldrain(&jd->jd_selinfo);
knlist_destroy(&jd->jd_selinfo.si_note);
JAILDESC_LOCK_DESTROY(jd);
free(jd, M_JAILDESC);
@@ -311,10 +309,8 @@ jaildesc_poll(struct file *fp, int events, struct ucred *active_cred,
JAILDESC_LOCK(jd);
if (jd->jd_flags & JDF_REMOVED)
revents |= POLLHUP;
- if (revents == 0) {
+ else
selrecord(td, &jd->jd_selinfo);
- jd->jd_flags |= JDF_SELECTED;
- }
JAILDESC_UNLOCK(jd);
return (revents);
}
diff --git a/sys/sys/jaildesc.h b/sys/sys/jaildesc.h
index b0a1a6238cc9..22a03bfbb1fa 100644
--- a/sys/sys/jaildesc.h
+++ b/sys/sys/jaildesc.h
@@ -71,7 +71,6 @@ struct jaildesc {
/*
* Flags for the jd_flags field
*/
-#define JDF_SELECTED 0x00000001 /* issue selwakeup() */
#define JDF_REMOVED 0x00000002 /* jail was removed */
#define JDF_OWNING 0x00000004 /* closing descriptor removes jail */