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 | |
| parent | 6196a5b5fe78f7a5b8e38c00e656f70c1592e1df (diff) | |
v2api: fix double-lock in truncate
| -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() | 
