diff options
author | kib <kib@FreeBSD.org> | 2011-11-18 09:12:26 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2011-11-18 09:12:26 +0000 |
commit | b49a65685440a2621d5d334b580d98b6d2e934a7 (patch) | |
tree | 2947b2e820c322b723e3a4a24ae2b79191b3f1ec /sys/sys | |
parent | 6332d67cd9b3ba8b163b2d90c5e405684ba4d052 (diff) | |
download | FreeBSD-src-b49a65685440a2621d5d334b580d98b6d2e934a7.zip FreeBSD-src-b49a65685440a2621d5d334b580d98b6d2e934a7.tar.gz |
Consistently use process spin lock for protection of the
p->p_boundary_count. Race could cause the execve(2) from the threaded
process to hung since thread boundary counter was incorrect and
single-threading never finished.
Reported by: pluknet, pho
Tested by: pho
MFC after: 1 week
Diffstat (limited to 'sys/sys')
-rw-r--r-- | sys/sys/proc.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 813c236..82cdae1 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -532,7 +532,7 @@ struct proc { struct thread *p_singlethread;/* (c + j) If single threading this is it */ int p_suspcount; /* (j) Num threads in suspended mode. */ struct thread *p_xthread; /* (c) Trap thread */ - int p_boundary_count;/* (c) Num threads at user boundary */ + int p_boundary_count;/* (j) Num threads at user boundary */ int p_pendingcnt; /* how many signals are pending */ struct itimers *p_itimers; /* (c) POSIX interval timers. */ struct procdesc *p_procdesc; /* (e) Process descriptor, if any. */ |