diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2026-05-10 15:15:45 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2026-05-20 19:34:50 +0000 |
| commit | f95da272b8b7138008542022af3dc7ead3ff2ce2 (patch) | |
| tree | f0b51ff2cf3faf43585c7dd1a27e46e36100088b /sys | |
| parent | 4b6a23eb8a7e4b137d9e1b527d1fa84c950484eb (diff) | |
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/kern/kern_jaildesc.c | 10 | ||||
| -rw-r--r-- | sys/sys/jaildesc.h | 1 |
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 */ |
