svn commit: r283320 - head/sys/kern
Konstantin Belousov
kib at FreeBSD.org
Sat May 23 19:09:04 UTC 2015
Author: kib
Date: Sat May 23 19:09:04 2015
New Revision: 283320
URL: https://svnweb.freebsd.org/changeset/base/283320
Log:
If thread requested to not stop on non-boundary, then not only
stopping signals should obey, but also all forms of single-threading.
Otherwise, thread might sleep interruptible while owning some
resources, and single-threading thread could try to access them.
An example is owning vnode lock while dumping core.
Submitted by: Conrad Meyer
Review: https://reviews.freebsd.org/D2612
Tested by: pho
MFC after: 1 week
Modified:
head/sys/kern/kern_thread.c
Modified: head/sys/kern/kern_thread.c
==============================================================================
--- head/sys/kern/kern_thread.c Sat May 23 17:48:09 2015 (r283319)
+++ head/sys/kern/kern_thread.c Sat May 23 19:09:04 2015 (r283320)
@@ -868,12 +868,9 @@ thread_suspend_check(int return_instead)
return (ERESTART);
/*
- * Ignore suspend requests for stop signals if they
- * are deferred.
+ * Ignore suspend requests if they are deferred.
*/
- if ((P_SHOULDSTOP(p) == P_STOPPED_SIG ||
- (p->p_flag & P_TOTAL_STOP) != 0) &&
- (td->td_flags & TDF_SBDRY) != 0) {
+ if ((td->td_flags & TDF_SBDRY) != 0) {
KASSERT(return_instead,
("TDF_SBDRY set for unsafe thread_suspend_check"));
return (0);
More information about the svn-src-head
mailing list