From 54dd0d0dc5ee452890628c537e6ebd1ac8c9d699 Mon Sep 17 00:00:00 2001 From: Nicolas Lacasse Date: Tue, 4 Dec 2018 12:23:08 -0800 Subject: [PATCH] Fix data race caused by unlocked call of Dirent.descendantOf. PiperOrigin-RevId: 224025363 Change-Id: I98864403c779832e9e1436f7d3c3f6fb2fba9904 --- pkg/sentry/fs/dirent.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/sentry/fs/dirent.go b/pkg/sentry/fs/dirent.go index 2c01485a8..4c0d1b7ef 100644 --- a/pkg/sentry/fs/dirent.go +++ b/pkg/sentry/fs/dirent.go @@ -840,6 +840,10 @@ func (d *Dirent) getDotAttrs(root *Dirent) (DentAttr, DentAttr) { InodeID: sattr.InodeID, } + // Hold d.mu while we call d.descendantOf. + d.mu.Lock() + defer d.mu.Unlock() + // Get '..'. if !d.IsRoot() && d.descendantOf(root) { // Dirent is a descendant of the root. Get its parent's attrs.