diff options
author | Alan Somers <asomers@FreeBSD.org> | 2019-05-06 20:46:58 +0000 |
---|---|---|
committer | Alan Somers <asomers@FreeBSD.org> | 2019-05-06 20:46:58 +0000 |
commit | 3fa127896b72f2b1e9855979ce4b0300cb6d13e9 (patch) | |
tree | f0bb79026052c119bbab4d05c2202dc0d854a4b7 /sys/fs/fuse/fuse_internal.c | |
parent | 8cfb44315a1024c119992695cb00958150d8d288 (diff) | |
download | src-3fa127896b72f2b1e9855979ce4b0300cb6d13e9.tar.gz src-3fa127896b72f2b1e9855979ce4b0300cb6d13e9.zip |
fusefs: allow ftruncate on files without write permission
ftruncate should succeed as long as the file descriptor is writable, even if
the file doesn't have write permission. This is important when combined
with O_CREAT.
Reported by: pjdfstest
Sponsored by: The FreeBSD Foundation
Notes
Notes:
svn path=/projects/fuse2/; revision=347209
Diffstat (limited to 'sys/fs/fuse/fuse_internal.c')
-rw-r--r-- | sys/fs/fuse/fuse_internal.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c index a5a55ef4eb49..8676d94455d7 100644 --- a/sys/fs/fuse/fuse_internal.c +++ b/sys/fs/fuse/fuse_internal.c @@ -128,6 +128,9 @@ fuse_internal_access(struct vnode *vp, data = fuse_get_mpdata(mp); dataflags = data->dataflags; + if (mode == 0) + return 0; + if (mode & VMODIFY_PERMS && vfs_isrdonly(mp)) { switch (vp->v_type) { case VDIR: |