diff options
author | Fabricio Voznika <fvoznika@google.com> | 2021-07-12 18:27:59 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-07-12 18:30:46 -0700 |
commit | 520795aaad701854e9ffe84de1108954cf2b77f8 (patch) | |
tree | 9f2aa17263053f5fd3edd7614679341202129c08 /pkg/sentry/kernel/fs_context_refs.go | |
parent | 275932bf0852431b6f307ba9c45f26073d20ac62 (diff) |
Fix deadlock in procfs
Kernfs provides an internal mechanism to defer calls to `DecRef()` because
on the last reference `Filesystem.mu` must be held and most places that
need to call `DecRef()` are inside the lock. The same can be true for
filesystems that extend kernfs. procfs needs to look up files and `DecRef()`
them inside the `kernfs.Filesystem.mu`. If the files happen to be procfs
files, it can deadlock trying to decrement if it's the last reference.
This change extends the mechanism to external callers to defer DecRefs
to `vfs.FileDescription` and `vfs.VirtualDentries`.
PiperOrigin-RevId: 384361647
Diffstat (limited to 'pkg/sentry/kernel/fs_context_refs.go')
0 files changed, 0 insertions, 0 deletions