diff options
-rw-r--r-- | sys/kern/kern_kse.c | 2 | ||||
-rw-r--r-- | sys/kern/kern_thread.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/kern_kse.c b/sys/kern/kern_kse.c index 3725bd8..c71b74d 100644 --- a/sys/kern/kern_kse.c +++ b/sys/kern/kern_kse.c @@ -641,6 +641,8 @@ kse_create(struct thread *td, struct kse_create_args *uap) ksegrp_link(newkg, p); mtx_unlock_spin(&sched_lock); } else { + if (!first && ((td->td_flags & TDF_SA) ^ sa) != 0) + return (EINVAL); newkg = kg; } diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c index 3725bd8..c71b74d 100644 --- a/sys/kern/kern_thread.c +++ b/sys/kern/kern_thread.c @@ -641,6 +641,8 @@ kse_create(struct thread *td, struct kse_create_args *uap) ksegrp_link(newkg, p); mtx_unlock_spin(&sched_lock); } else { + if (!first && ((td->td_flags & TDF_SA) ^ sa) != 0) + return (EINVAL); newkg = kg; } |