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)
Mon, Aug 10, 2:08 PM
Unknown Object (File)
Mon, Aug 10, 9:41 AM
Unknown Object (File)
Sun, Aug 9, 3:50 AM
Unknown Object (File)
Sat, Aug 8, 6:19 PM
Unknown Object (File)
Sun, Aug 2, 7:46 PM
Unknown Object (File)
Sat, Aug 1, 10:26 PM
Unknown Object (File)
Sat, Aug 1, 10:26 PM
Unknown Object (File)
Fri, Jul 31, 7:42 PM
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