diff options
author | dim <dim@FreeBSD.org> | 2015-06-09 19:14:27 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-06-09 19:14:27 +0000 |
commit | 6370dd4a2cfcd7b1e323f780f34523097a892d0c (patch) | |
tree | 16a54540a7fb71a7c91fd866ad2437410acbf587 /sys/compat/linux/linux_emul.c | |
parent | 8c2b6d93700b452fac3cadba57de1b18a783ec92 (diff) | |
parent | 8fbb8a1dd51626b81ee23212d3001e3908ff17c4 (diff) | |
download | FreeBSD-src-6370dd4a2cfcd7b1e323f780f34523097a892d0c.zip FreeBSD-src-6370dd4a2cfcd7b1e323f780f34523097a892d0c.tar.gz |
Merged ^/head r283871 through r284187.
Diffstat (limited to 'sys/compat/linux/linux_emul.c')
-rw-r--r-- | sys/compat/linux/linux_emul.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/compat/linux/linux_emul.c b/sys/compat/linux/linux_emul.c index a28da8d..c2bf3ae 100644 --- a/sys/compat/linux/linux_emul.c +++ b/sys/compat/linux/linux_emul.c @@ -219,6 +219,18 @@ void linux_proc_exec(void *arg __unused, struct proc *p, struct image_params *imgp) { struct thread *td = curthread; + struct thread *othertd; + + /* + * In a case of execing from linux binary properly detach + * other threads from the user space. + */ + if (__predict_false(SV_PROC_ABI(p) == SV_ABI_LINUX)) { + FOREACH_THREAD_IN_PROC(p, othertd) { + if (td != othertd) + (p->p_sysent->sv_thread_detach)(othertd); + } + } /* * In a case of execing to linux binary we create linux |