Date: Mon, 6 Jun 2022 19:28:05 GMT From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 156745b42d9e - main - fdescfs: allow chown/utime etc on fdescfs fd for underlying files opened with O_PATH Message-ID: <202206061928.256JS5R1077025@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=156745b42d9e6dfa3d9c6dc480db7836683850cf commit 156745b42d9e6dfa3d9c6dc480db7836683850cf Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2022-06-05 18:49:09 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2022-06-06 19:27:36 +0000 fdescfs: allow chown/utime etc on fdescfs fd for underlying files opened with O_PATH Reported and tested by: dchagin Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D35410 --- sys/fs/fdescfs/fdesc_vnops.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c index 2fbdcac34583..ae6d60d0fc55 100644 --- a/sys/fs/fdescfs/fdesc_vnops.c +++ b/sys/fs/fdescfs/fdesc_vnops.c @@ -492,9 +492,15 @@ fdesc_setattr(struct vop_setattr_args *ap) /* * Allow setattr where there is an underlying vnode. + * For O_PATH descriptors, disallow truncate. */ - error = getvnode(td, fd, - cap_rights_init_one(&rights, CAP_EXTATTR_SET), &fp); + if (vap->va_size != VNOVAL) { + error = getvnode(td, fd, + cap_rights_init_one(&rights, CAP_EXTATTR_SET), &fp); + } else { + error = getvnode_path(td, fd, + cap_rights_init_one(&rights, CAP_EXTATTR_SET), &fp); + } if (error) { /* * getvnode() returns EINVAL if the file descriptor is not
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202206061928.256JS5R1077025>