]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
jail: Handle a possible race between jail_remove(2) and fork(2)
authorJamie Gritton <jamie@FreeBSD.org>
Tue, 16 Feb 2021 19:19:13 +0000 (11:19 -0800)
committerJamie Gritton <jamie@FreeBSD.org>
Tue, 16 Feb 2021 19:19:13 +0000 (11:19 -0800)
commitcc7b73065302005ebc4a19503188c8d6d5eb923d
tree0b36808af497706a50fdda177ce8efbe6ed80568
parent922cf8ac43adc9983f9a9e05cfd838306c1ef483
jail: Handle a possible race between jail_remove(2) and fork(2)

jail_remove(2) includes a loop that sends SIGKILL to all processes
in a jail, but skips processes in PRS_NEW state.  Thus it is possible
the a process in mid-fork(2) during jail removal can survive the jail
being removed.

Add a prison flag PR_REMOVE, which is checked before the new process
returns.  If the jail is being removed, the process will then exit.
Also check this flag in jail_attach(2) which has a similar issue.

Reported by:    trasz
Approved by:    kib
MFC after:      3 days
sys/kern/kern_fork.c
sys/kern/kern_jail.c
sys/sys/jail.h