diff --git a/pkg/vfs/vfs.go b/pkg/vfs/vfs.go index 2337cdd68eb7..6e7a69ed3467 100644 --- a/pkg/vfs/vfs.go +++ b/pkg/vfs/vfs.go @@ -633,7 +633,7 @@ func (v *VFS) Release(ctx Context, ino Ino, fh uint64) { v.invalidateAttr(ino) } if locks&1 != 0 { - _ = v.Meta.Flock(ctx, ino, fowner, F_UNLCK, false) + _ = v.Meta.Flock(ctx, ino, fowner^fh, F_UNLCK, false) } if locks&2 != 0 && powner != 0 { _ = v.Meta.Setlk(ctx, ino, powner, false, F_UNLCK, 0, 0x7FFFFFFFFFFFFFFF, 0) diff --git a/pkg/vfs/vfs_unix.go b/pkg/vfs/vfs_unix.go index d7fcea8eaee7..dfe0e9eb8619 100644 --- a/pkg/vfs/vfs_unix.go +++ b/pkg/vfs/vfs_unix.go @@ -295,7 +295,7 @@ func (v *VFS) Flock(ctx Context, ino Ino, fh uint64, owner uint64, typ uint32, b } h.addOp(ctx) defer h.removeOp(ctx) - err = v.Meta.Flock(ctx, ino, owner, typ, block) + err = v.Meta.Flock(ctx, ino, owner^fh, typ, block) if err == 0 { h.Lock() if typ == syscall.F_UNLCK {