aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/fuse/fuse_internal.c
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2019-05-06 20:46:58 +0000
committerAlan Somers <asomers@FreeBSD.org>2019-05-06 20:46:58 +0000
commit3fa127896b72f2b1e9855979ce4b0300cb6d13e9 (patch)
treef0bb79026052c119bbab4d05c2202dc0d854a4b7 /sys/fs/fuse/fuse_internal.c
parent8cfb44315a1024c119992695cb00958150d8d288 (diff)
downloadsrc-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.c3
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: