diff options
author | Jakob Unterwurzacher | 2020-07-12 13:13:24 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2020-07-12 13:13:24 +0200 |
commit | b1d631d432ea0a7158060c31de6dd4370d6606e8 (patch) | |
tree | 08cfcd047879a2716f2199d32e84cfeeb6170b7e /internal/fusefrontend | |
parent | 6196a5b5fe78f7a5b8e38c00e656f70c1592e1df (diff) |
v2api: fix double-lock in truncate
Diffstat (limited to 'internal/fusefrontend')
-rw-r--r-- | internal/fusefrontend/file2_allocate_truncate.go | 9 | ||||
-rw-r--r-- | internal/fusefrontend/file2_setattr.go | 2 |
2 files changed, 2 insertions, 9 deletions
diff --git a/internal/fusefrontend/file2_allocate_truncate.go b/internal/fusefrontend/file2_allocate_truncate.go index 9413b90..b504c50 100644 --- a/internal/fusefrontend/file2_allocate_truncate.go +++ b/internal/fusefrontend/file2_allocate_truncate.go @@ -84,15 +84,6 @@ func (f *File2) Allocate(ctx context.Context, off uint64, sz uint64, mode uint32 // truncate - called from Setattr. func (f *File2) truncate(newSize uint64) (errno syscall.Errno) { - f.fdLock.RLock() - defer f.fdLock.RUnlock() - if f.released { - // The file descriptor has been closed concurrently. - tlog.Warn.Printf("ino%d fh%d: Truncate on released file", f.qIno.Ino, f.intFd()) - return syscall.EBADF - } - f.fileTableEntry.ContentLock.Lock() - defer f.fileTableEntry.ContentLock.Unlock() var err error // Common case first: Truncate to zero if newSize == 0 { diff --git a/internal/fusefrontend/file2_setattr.go b/internal/fusefrontend/file2_setattr.go index c341e53..697e0d9 100644 --- a/internal/fusefrontend/file2_setattr.go +++ b/internal/fusefrontend/file2_setattr.go @@ -8,6 +8,7 @@ import ( "github.com/hanwen/go-fuse/v2/fuse" "github.com/rfjakob/gocryptfs/internal/syscallcompat" + "github.com/rfjakob/gocryptfs/internal/tlog" ) func (f *File2) Setattr(ctx context.Context, in *fuse.SetAttrIn, out *fuse.AttrOut) (errno syscall.Errno) { @@ -22,6 +23,7 @@ func (f *File2) setAttr(ctx context.Context, in *fuse.SetAttrIn) (errno syscall. f.fdLock.RLock() defer f.fdLock.RUnlock() if f.released { + tlog.Warn.Printf("ino%d fh%d: Truncate on released file", f.qIno.Ino, f.intFd()) return syscall.EBADF } f.fileTableEntry.ContentLock.Lock() |