summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/kernel/task_start.go
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2019-07-17 21:46:51 +0000
committergVisor bot <gvisor-bot@google.com>2019-07-17 21:46:51 +0000
commit55b44419bc553cb248a9bf2011004454d7491d7a (patch)
treee1c5b4e72b346e0e1f9431770f57bf23639c2693 /pkg/sentry/kernel/task_start.go
parentf262d78f6a4b487c9ba4d087ec5482f1751ffea2 (diff)
parent609cd91e3fc3359af263b52f494116ddbc800f77 (diff)
Merge 609cd91e (automated)
Diffstat (limited to 'pkg/sentry/kernel/task_start.go')
-rw-r--r--pkg/sentry/kernel/task_start.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/pkg/sentry/kernel/task_start.go b/pkg/sentry/kernel/task_start.go
index a88bf3951..d60cd62c7 100644
--- a/pkg/sentry/kernel/task_start.go
+++ b/pkg/sentry/kernel/task_start.go
@@ -250,8 +250,20 @@ func (ns *PIDNamespace) allocateTID() (ThreadID, error) {
}
// Is it available?
- _, ok := ns.tasks[tid]
- if !ok {
+ tidInUse := func() bool {
+ if _, ok := ns.tasks[tid]; ok {
+ return true
+ }
+ if _, ok := ns.processGroups[ProcessGroupID(tid)]; ok {
+ return true
+ }
+ if _, ok := ns.sessions[SessionID(tid)]; ok {
+ return true
+ }
+ return false
+ }()
+
+ if !tidInUse {
ns.last = tid
return tid, nil
}