From 6f978d71856e7c44f65d892f6bdae19255eb4044 Mon Sep 17 00:00:00 2001 From: Andrei Vagin Date: Thu, 3 Aug 2023 13:11:40 -0700 Subject: [PATCH] kernel: GetMountNamespace has to check that mntns isn't nil Reported-by: syzbot+e21bed832e505430bb27@syzkaller.appspotmail.com PiperOrigin-RevId: 553568085 --- pkg/sentry/kernel/task.go | 7 +++++-- pkg/sentry/kernel/task_exit.go | 5 ++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/sentry/kernel/task.go b/pkg/sentry/kernel/task.go index 9fb943fd1..93284958f 100644 --- a/pkg/sentry/kernel/task.go +++ b/pkg/sentry/kernel/task.go @@ -795,8 +795,11 @@ func (t *Task) MountNamespace() *vfs.MountNamespace { func (t *Task) GetMountNamespace() *vfs.MountNamespace { t.mu.Lock() defer t.mu.Unlock() - t.mountNamespace.IncRef() - return t.mountNamespace + mntns := t.mountNamespace + if mntns != nil { + mntns.IncRef() + } + return mntns } // AbstractSockets returns t's AbstractSocketNamespace. diff --git a/pkg/sentry/kernel/task_exit.go b/pkg/sentry/kernel/task_exit.go index 99dd4362f..43561a164 100644 --- a/pkg/sentry/kernel/task_exit.go +++ b/pkg/sentry/kernel/task_exit.go @@ -288,12 +288,11 @@ func (*runExitMain) execute(t *Task) taskRunState { mntns := t.mountNamespace t.mountNamespace = nil ipcns := t.ipcns + t.ipcns = nil netns := t.netns t.netns = nil t.mu.Unlock() - if mntns != nil { - mntns.DecRef(t) - } + mntns.DecRef(t) ipcns.DecRef(t) netns.DecRef(t)