summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/kernel/task_exit.go
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2021-08-27 20:25:51 +0000
committergVisor bot <gvisor-bot@google.com>2021-08-27 20:25:51 +0000
commitac5bbb582c3d828b337dc3b0ce8b7ce41519d4dd (patch)
treeb7b4198cd4ba286ee37e407b1f643aa9407994b2 /pkg/sentry/kernel/task_exit.go
parent8416dca58aa8e1c9ab0ed5dfd4a3cdf8bd9ffef6 (diff)
parentf7281c6cb9bbf3e5757adf52a7820499b5a7483b (diff)
Merge release-20210816.0-52-gf7281c6cb (automated)
Diffstat (limited to 'pkg/sentry/kernel/task_exit.go')
-rw-r--r--pkg/sentry/kernel/task_exit.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/pkg/sentry/kernel/task_exit.go b/pkg/sentry/kernel/task_exit.go
index 342e5debe..b3931445b 100644
--- a/pkg/sentry/kernel/task_exit.go
+++ b/pkg/sentry/kernel/task_exit.go
@@ -230,9 +230,16 @@ func (*runExitMain) execute(t *Task) taskRunState {
t.tg.pidns.owner.mu.Lock()
t.updateRSSLocked()
t.tg.pidns.owner.mu.Unlock()
+
+ // Release the task image resources. Accessing these fields must be
+ // done with t.mu held, but the mm.DecUsers() call must be done outside
+ // of that lock.
t.mu.Lock()
- t.image.release()
+ mm := t.image.MemoryManager
+ t.image.MemoryManager = nil
+ t.image.fu = nil
t.mu.Unlock()
+ mm.DecUsers(t)
// Releasing the MM unblocks a blocked CLONE_VFORK parent.
t.unstopVforkParent()