diff options
author | Jeff Roberson <jeff@FreeBSD.org> | 2008-03-12 05:01:14 +0000 |
---|---|---|
committer | Jeff Roberson <jeff@FreeBSD.org> | 2008-03-12 05:01:14 +0000 |
commit | bdb5bdf0b7eb04a7a2f2a6b6bf0f60afaa812f1d (patch) | |
tree | 342401e37df100966bf0c5dfb2f162bf1c44fd66 | |
parent | 0b4793efb7311d8a13354b710f7544d035fe537b (diff) | |
download | src-bdb5bdf0b7eb04a7a2f2a6b6bf0f60afaa812f1d.tar.gz src-bdb5bdf0b7eb04a7a2f2a6b6bf0f60afaa812f1d.zip |
- KSE may free a thread that was never actually forked. This will leave
td_cpuset NULL. Check for this condition before dereferencing the
cpuset.
Reported by: david@catwhisker.org, miwi@freebsd.org
Sponsored by: Nokia
Notes
Notes:
svn path=/head/; revision=177083
-rw-r--r-- | sys/kern/kern_thread.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c index 8d9f75320a4f..43522ef7649d 100644 --- a/sys/kern/kern_thread.c +++ b/sys/kern/kern_thread.c @@ -343,7 +343,12 @@ thread_alloc(void) void thread_free(struct thread *td) { +#ifdef KSE + if (td->td_cpuset != NULL) + cpuset_rel(td->td_cpuset); +#else cpuset_rel(td->td_cpuset); +#endif td->td_cpuset = NULL; cpu_thread_free(td); if (td->td_altkstack != 0) |