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
F152537141: D53200.diff
Wed, Apr 15, 1:33 PM
Unknown Object (File)
Sun, Apr 12, 2:25 PM
Unknown Object (File)
Sun, Apr 12, 2:51 AM
Unknown Object (File)
Sun, Apr 12, 12:45 AM
Unknown Object (File)
Wed, Apr 8, 7:27 PM
Unknown Object (File)
Mar 3 2026, 8:42 PM
Unknown Object (File)
Mar 2 2026, 5:27 AM
Unknown Object (File)
Mar 2 2026, 5:25 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