Page MenuHomeFreeBSD

Fix a regression that creates zombies when removing already-dying jails
ClosedPublic

Authored by jamie on Oct 19 2025, 5:55 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Mar 3, 8:42 PM
Unknown Object (File)
Mon, Mar 2, 5:27 AM
Unknown Object (File)
Mon, Mar 2, 5:25 AM
Unknown Object (File)
Mon, Mar 2, 5:25 AM
Unknown Object (File)
Sat, Feb 28, 10:00 AM
Unknown Object (File)
Sat, Feb 28, 4:17 AM
Unknown Object (File)
Jan 28 2026, 4:51 PM
Unknown Object (File)
Jan 13 2026, 1:12 AM
Subscribers

Details

Summary

Jail descriptors broke the sys_jail_remove function in two, with prison_remove doing the second half of the work. To work with other callers, prison_remove requires the jail be held and releases the hold, so sys_jail_remove holds the jail before calling it.

But prison_remove only did half the job of removing the hold; it would keep it when bailing out from an attempt to kill an already-dying jail.

The fix is to remove the dying jail from prison_remove, and handle it in prison_deref instead (and to do it correctly).

Test Plan

Bug 290217 has some tests that create these zombie jails, and can serve as a test case.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable