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)
Sun, Dec 7, 6:01 AM
Unknown Object (File)
Wed, Nov 26, 9:23 AM
Unknown Object (File)
Thu, Nov 20, 11:25 PM
Unknown Object (File)
Sun, Nov 16, 8:36 PM
Unknown Object (File)
Nov 7 2025, 9:55 AM
Unknown Object (File)
Nov 5 2025, 10:52 AM
Unknown Object (File)
Oct 26 2025, 3:35 PM
Unknown Object (File)
Oct 26 2025, 3:34 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