summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/kernel/task_cgroup.go
diff options
context:
space:
mode:
authorAndrei Vagin <avagin@google.com>2021-06-07 12:13:22 -0700
committergVisor bot <gvisor-bot@google.com>2021-06-07 12:15:39 -0700
commit7e4e71253ec7c06f2f4eaf387826f08a8b3373cb (patch)
treeaf4dd5f75345d96b4245622ca94540bb9c154931 /pkg/sentry/kernel/task_cgroup.go
parentee1003bde2291d6d892701b33c23bd7dd91d44f6 (diff)
cgroupfs: don't add a task in the root cgroup if it is already there.
PiperOrigin-RevId: 377975013
Diffstat (limited to 'pkg/sentry/kernel/task_cgroup.go')
-rw-r--r--pkg/sentry/kernel/task_cgroup.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/pkg/sentry/kernel/task_cgroup.go b/pkg/sentry/kernel/task_cgroup.go
index 25d2504fa..7c138e80f 100644
--- a/pkg/sentry/kernel/task_cgroup.go
+++ b/pkg/sentry/kernel/task_cgroup.go
@@ -85,6 +85,14 @@ func (t *Task) enterCgroupLocked(c Cgroup) {
c.Enter(t)
}
+// +checklocks:t.mu
+func (t *Task) enterCgroupIfNotYetLocked(c Cgroup) {
+ if _, ok := t.cgroups[c]; ok {
+ return
+ }
+ t.enterCgroupLocked(c)
+}
+
// LeaveCgroups removes t out from all its cgroups.
func (t *Task) LeaveCgroups() {
t.mu.Lock()