summaryrefslogtreecommitdiff
path: root/internal/fusefrontend/file.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2019-10-06 21:27:38 +0200
committerJakob Unterwurzacher2019-10-06 21:47:36 +0200
commit00af4f48643f0533b6cfbd14fdf5186c844f8f5d (patch)
tree1ffbd671b1a82e9d8aa086d11abdce17a940029b /internal/fusefrontend/file.go
parent43265940fa2d43ebea8edb00373aa4d6718e2ea7 (diff)
fusefrontend: unregister from openfiletable before closing the fd
Closing the fd means the inode number may be reused immediately by a new file, so we have to get the old fileID out of the table beforehand! Hopefully fixes https://github.com/rfjakob/gocryptfs/issues/363
Diffstat (limited to 'internal/fusefrontend/file.go')
-rw-r--r--internal/fusefrontend/file.go5
1 files changed, 2 insertions, 3 deletions
diff --git a/internal/fusefrontend/file.go b/internal/fusefrontend/file.go
index 3313934..74a56c3 100644
--- a/internal/fusefrontend/file.go
+++ b/internal/fusefrontend/file.go
@@ -401,11 +401,10 @@ func (f *File) Release() {
if f.released {
log.Panicf("ino%d fh%d: double release", f.qIno.Ino, f.intFd())
}
- f.fd.Close()
f.released = true
- f.fdLock.Unlock()
-
openfiletable.Unregister(f.qIno)
+ f.fd.Close()
+ f.fdLock.Unlock()
}
// Flush - FUSE call