summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fsimpl/fuse/fusefs.go
diff options
context:
space:
mode:
authorJinmou Li <jinmli@google.com>2020-09-16 17:44:06 +0000
committerAndrei Vagin <avagin@gmail.com>2020-09-16 12:22:17 -0700
commitc4c302a27e5811ce04bb904686e657c9ed830a44 (patch)
tree1a3ac68b92e7482395136195ba927b4f91b08048 /pkg/sentry/fsimpl/fuse/fusefs.go
parent70cf503b4c3653df8253438a8873a5d3ebb688e3 (diff)
fuse: fix data race in fusefs Release()
fix #3956
Diffstat (limited to 'pkg/sentry/fsimpl/fuse/fusefs.go')
-rw-r--r--pkg/sentry/fsimpl/fuse/fusefs.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/pkg/sentry/fsimpl/fuse/fusefs.go b/pkg/sentry/fsimpl/fuse/fusefs.go
index 86922a96a..f1ffd2343 100644
--- a/pkg/sentry/fsimpl/fuse/fusefs.go
+++ b/pkg/sentry/fsimpl/fuse/fusefs.go
@@ -225,12 +225,13 @@ func newFUSEFilesystem(ctx context.Context, devMinor uint32, opts *filesystemOpt
// Release implements vfs.FilesystemImpl.Release.
func (fs *filesystem) Release(ctx context.Context) {
+ fs.conn.fd.mu.Lock()
+
fs.umounted = true
fs.conn.Abort(ctx)
-
- fs.conn.fd.mu.Lock()
// Notify all the waiters on this fd.
fs.conn.fd.waitQueue.Notify(waiter.EventIn)
+
fs.conn.fd.mu.Unlock()
fs.Filesystem.VFSFilesystem().VirtualFilesystem().PutAnonBlockDevMinor(fs.devMinor)