The branch, master has been updated via 534de9b2827 VFS: Remove SMB_VFS_CHMOD, no longer used via 8b24b864357 s3/modules: VFS: unityed_media: Remove um_chmod function via ca6764aff3a s3/modules: VFS: time_audit: Remove smb_time_audit_chmod via ad45e014569 s3/modules: VFS: snapper: Remove snapper_gmt_chmod via 04d6f4a153f s3/modules: VFS: shadow_copy2: Remove shadow_copy2_chmod via 9999205a20c s3/modules: VFS: media_harmony: Remove mh_chmod via 2505719cdd1 s3/modules: VFS: gpfs: Remove vfs_gpfs_chmod() function via 9cfbd8cb7fa s3/modules: VFS: Remove vfs_gluster_chmod() function via 2bcd5b92e03 s3/modules: VFS: full_audit: Remove smb_full_audit_chmod() function via 3df8106edc8 s3/modules: VFS: fruit: Remove fruit_chmod via 87223ed5b0d s3/modules: VFS: fake_acls: Remove fake_acls_chmod() function via 8f680b45b0e s3/modules: VFS: extd_audit: Remove audit_chmod() function via 27ae0e1e37c s3/modules: VFS: cep_snapshots: remove ceph_snap_gmt_chmod() function via 25c53f14997 s3/modules: VFS: ceph: Remove cephwrap_chmod() function via bf90930a038 s3/modules: VFS: catia: Remove catia_chmod() function via b1a5c292cd2 s3/modules: VFS: cap: remove cap_chmod via f4e1598bbbf s3/modules: VFS: audit: Remove audit_chmod via d87123648b8 s3/modules: VFS: acl_common: Remove chmod_acl_module_common() function via a773d5e321f s3/modules: VFS: acl_xattr: Remove call to chmod_acl_module_common() via 726160a8ae6 s3/modules: VFS: acl_tdb: Remove call to chmod_acl_module_common() via 5cad228f555 s3/torture: Make cmd_chmod now use SMB_VFS_FCHMOD via dda3d953a00 s3/modules: linux_xfs_sgid_mkdirat() SMB_VFS_NEXT_FCHMOD => SMB_VFS_NEXT_CHMOD via cb571d2b476 s3/modules: nfs4acl_xattr_fset_nt_acl VFS_SMB_NEXT_CHMOD => VFS_SMB_NEXT_FCHMOD via 34949219eda s3/smbd: file_set_dosmode SMB_VFS_CHMOD => SMB_VFS_FCHMOD via 9722732b186 s3/smbd: SMB_VFS_CHMOD -> SMB_VFS_FCHMOD via 7501407f988 s3/modules: VFS: snapper: Add new fchmod_fn implementation via a412b5cc793 s3/modules: VFS: shadow_copy2: Add new fchmod_fn implementation via f54ec00eca5 s3/modules: VFS: fruit: Add new fchmod_fn implementation via c1e9aea0da1 s3/modules: VFS: ceph_snapshots: Add new fchmod_fn implementation via 74ecb467073 s3/modules: make chmod_acl_module_common less strict so fchmod can run via a749da2a5d6 VFS: ceph: Allow cephwrap_fchmod() to cope with pathref fsps. via fcf696bfa28 VFS: gluster: Allow vfs_gluster_fchmod() to cope with pathref fsps. via 6ad10836d6e s3/modules: fchmod: fallback to path based chmod if pathref via f923d1f474f vfs_default: require fchmod() via 1a68d34c232 VFS: Fix version SMB_VFS_GET_DOS_ATTRIBUTES was removed in from 9386e6ef5dd s3: VFS: streams_xattr: Now we know we will never be doing ACL operations on streams, delete the now unneeded code.
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 534de9b28274165ac5d86f0c79fa2d543c0f09ed Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 13:03:57 2021 +0100 VFS: Remove SMB_VFS_CHMOD, no longer used --------------- / \ / REST \ / IN \ / PEACE \ / \ | | | SMB_VFS_CHMOD | | | | | | 08 April | | 2021 | | | | | *| * * * | * _________)/\\_//(\/(/\)/\//\/\////|_)_______ Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Noel Power <npo...@samba.org> Autobuild-Date(master): Sun Apr 11 23:25:31 UTC 2021 on sn-devel-184 commit 8b24b8643571ba3fb9f2d138e5f779ab514b3697 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 13:01:06 2021 +0100 s3/modules: VFS: unityed_media: Remove um_chmod function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit ca6764aff3a716bba76307d99442f0b8d394513a Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 13:00:36 2021 +0100 s3/modules: VFS: time_audit: Remove smb_time_audit_chmod Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit ad45e014569e6b846d9af4e26b8bd4261b079086 Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 15:59:06 2021 +0200 s3/modules: VFS: snapper: Remove snapper_gmt_chmod Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 04d6f4a153f322fa1f0055bf59f47e2a218657d1 Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 15:58:42 2021 +0200 s3/modules: VFS: shadow_copy2: Remove shadow_copy2_chmod Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 9999205a20c3cf31cb1a4f1f6925dababf7c3b63 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:52:18 2021 +0100 s3/modules: VFS: media_harmony: Remove mh_chmod Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 2505719cdd144d272a43be8ac0a324a6baed7a99 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:51:36 2021 +0100 s3/modules: VFS: gpfs: Remove vfs_gpfs_chmod() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 9cfbd8cb7fafa9aa75424c4d2ef7d9c43a2e1907 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:50:53 2021 +0100 s3/modules: VFS: Remove vfs_gluster_chmod() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 2bcd5b92e03b0764483052a3b700050d2bb1e95b Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:50:16 2021 +0100 s3/modules: VFS: full_audit: Remove smb_full_audit_chmod() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 3df8106edc8d67a596fbc5c8679014492e12e04c Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 15:58:20 2021 +0200 s3/modules: VFS: fruit: Remove fruit_chmod Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 87223ed5b0dd5006d339b277c3f610bb7db4e470 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:47:33 2021 +0100 s3/modules: VFS: fake_acls: Remove fake_acls_chmod() function Also remove fake_acls_sys_acl_set_file() which is no longer called Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 8f680b45b0e978631fc3631dd3caefdfb80f2b73 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:46:27 2021 +0100 s3/modules: VFS: extd_audit: Remove audit_chmod() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 27ae0e1e37c370aeab2e454e94d21a48e1e0a706 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:42:56 2021 +0100 s3/modules: VFS: cep_snapshots: remove ceph_snap_gmt_chmod() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 25c53f1499750934f6c82ddd2fce4a34e48eff5e Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:42:01 2021 +0100 s3/modules: VFS: ceph: Remove cephwrap_chmod() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit bf90930a0380ad064e2372afdabe7d3394405e77 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:41:15 2021 +0100 s3/modules: VFS: catia: Remove catia_chmod() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit b1a5c292cd23aea3b71671992bc81307e6681a7c Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:39:48 2021 +0100 s3/modules: VFS: cap: remove cap_chmod Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit f4e1598bbbfff92752763156e70bdb9ec0ab6278 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:35:56 2021 +0100 s3/modules: VFS: audit: Remove audit_chmod Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit d87123648b81fd2e39062ab3a9aac8abab41d2ce Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:34:39 2021 +0100 s3/modules: VFS: acl_common: Remove chmod_acl_module_common() function Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit a773d5e321fa8b9df247af11290845f1d21c4874 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:34:02 2021 +0100 s3/modules: VFS: acl_xattr: Remove call to chmod_acl_module_common() Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 726160a8ae6364b52fa4c962b1f836aa975847fa Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 12:32:14 2021 +0100 s3/modules: VFS: acl_tdb: Remove call to chmod_acl_module_common() Signed-off-by: Noel Power <noel.po...@suse.com> commit 5cad228f55595b1f62c7c6e69df4908df1211f72 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 13:02:09 2021 +0100 s3/torture: Make cmd_chmod now use SMB_VFS_FCHMOD Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit dda3d953a0082719de6f4d9ec208f6b52b00886c Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 11:24:04 2021 +0100 s3/modules: linux_xfs_sgid_mkdirat() SMB_VFS_NEXT_FCHMOD => SMB_VFS_NEXT_CHMOD Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit cb571d2b47644f0cd4f148d2e52d9970b4d4d6c5 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 11:10:54 2021 +0100 s3/modules: nfs4acl_xattr_fset_nt_acl VFS_SMB_NEXT_CHMOD => VFS_SMB_NEXT_FCHMOD Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 34949219eda5c1e8524106af50bbade32d5c9ce6 Author: Noel Power <noel.po...@suse.com> Date: Thu Apr 8 10:20:37 2021 +0100 s3/smbd: file_set_dosmode SMB_VFS_CHMOD => SMB_VFS_FCHMOD Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 9722732b1867e359304594ada72ff40cd1341be5 Author: Noel Power <noel.po...@suse.com> Date: Tue Apr 6 17:11:48 2021 +0100 s3/smbd: SMB_VFS_CHMOD -> SMB_VFS_FCHMOD Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 7501407f988d19f16a2f441f260df056ef8842b5 Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 15:57:08 2021 +0200 s3/modules: VFS: snapper: Add new fchmod_fn implementation Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit a412b5cc793b89d6e79f5031ba462777af14c656 Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 15:54:44 2021 +0200 s3/modules: VFS: shadow_copy2: Add new fchmod_fn implementation Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit f54ec00eca521e766690f24263555c04bd5e47e9 Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 15:53:20 2021 +0200 s3/modules: VFS: fruit: Add new fchmod_fn implementation Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit c1e9aea0da1f1f0ad40e5089d92a76c29f51ceee Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 15:49:15 2021 +0200 s3/modules: VFS: ceph_snapshots: Add new fchmod_fn implementation Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 74ecb467073fed08635929c82c0a9e9d70428433 Author: Noel Power <noel.po...@suse.com> Date: Wed Apr 7 16:02:15 2021 +0100 s3/modules: make chmod_acl_module_common less strict so fchmod can run Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit a749da2a5d6775b0e583822d461a1884a44e5a1f Author: Noel Power <noel.po...@suse.com> Date: Tue Apr 6 17:10:35 2021 +0100 VFS: ceph: Allow cephwrap_fchmod() to cope with pathref fsps. Ensure it only uses an io fd for a handle based call. Otherwise fall back to pathname based. Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit fcf696bfa2827bb5b726c4f1d8cc24ba9c41f613 Author: Noel Power <noel.po...@suse.com> Date: Tue Apr 6 17:08:50 2021 +0100 VFS: gluster: Allow vfs_gluster_fchmod() to cope with pathref fsps. Ensure it only uses an io fd for a handle based call. Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> commit 6ad10836d6e04d8c95773e9122b63f5a5e040487 Author: Ralph Boehme <s...@samba.org> Date: Fri Apr 9 14:58:34 2021 +0200 s3/modules: fchmod: fallback to path based chmod if pathref Signed-off-by: Noel Power <noel.po...@suse.com> Signed-off-by: Ralph Boehme <s...@samba.org> commit f923d1f474fa1d9a19c8fd2904d50f411803bc05 Author: Ralph Boehme <s...@samba.org> Date: Fri Apr 9 14:55:06 2021 +0200 vfs_default: require fchmod() This has been part of POSIX for long enough in 2021. Signed-off-by: Ralph Boehme <s...@samba.org> commit 1a68d34c2329d3862bd4bdc0a9375ce4039aa293 Author: Noel Power <noel.po...@suse.com> Date: Fri Apr 9 12:08:35 2021 +0100 VFS: Fix version SMB_VFS_GET_DOS_ATTRIBUTES was removed in Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Ralph Boehme <s...@samba.org> ----------------------------------------------------------------------- Summary of changes: examples/VFS/skel_opaque.c | 9 ---- examples/VFS/skel_transparent.c | 8 --- source3/include/vfs.h | 12 +---- source3/include/vfs_macros.h | 5 -- source3/modules/vfs_acl_common.c | 14 +----- source3/modules/vfs_acl_common.h | 3 -- source3/modules/vfs_acl_tdb.c | 1 - source3/modules/vfs_acl_xattr.c | 1 - source3/modules/vfs_audit.c | 17 ------- source3/modules/vfs_cap.c | 35 ------------- source3/modules/vfs_catia.c | 39 -------------- source3/modules/vfs_ceph.c | 27 +++++----- source3/modules/vfs_ceph_snapshots.c | 12 +++-- source3/modules/vfs_default.c | 45 ++++++++++------- source3/modules/vfs_extd_audit.c | 23 --------- source3/modules/vfs_fake_acls.c | 95 ----------------------------------- source3/modules/vfs_fruit.c | 32 +++++++++--- source3/modules/vfs_full_audit.c | 21 -------- source3/modules/vfs_glusterfs.c | 26 ++++------ source3/modules/vfs_gpfs.c | 33 ------------ source3/modules/vfs_linux_xfs_sgid.c | 2 +- source3/modules/vfs_media_harmony.c | 34 ------------- source3/modules/vfs_nfs4acl_xattr.c | 12 ++--- source3/modules/vfs_not_implemented.c | 9 ---- source3/modules/vfs_shadow_copy2.c | 20 ++++---- source3/modules/vfs_snapper.c | 22 ++++---- source3/modules/vfs_time_audit.c | 23 --------- source3/modules/vfs_unityed_media.c | 29 ----------- source3/smbd/dosmode.c | 2 +- source3/smbd/trans2.c | 9 +--- source3/smbd/vfs.c | 8 --- source3/torture/cmd_vfs.c | 22 +++++--- 32 files changed, 131 insertions(+), 519 deletions(-) Changeset truncated at 500 lines: diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c index 79ed98897be..d0b14aaaae7 100644 --- a/examples/VFS/skel_opaque.c +++ b/examples/VFS/skel_opaque.c @@ -362,14 +362,6 @@ static int skel_unlinkat(vfs_handle_struct *handle, return -1; } -static int skel_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - errno = ENOSYS; - return -1; -} - static int skel_fchmod(vfs_handle_struct *handle, files_struct *fsp, mode_t mode) { @@ -1037,7 +1029,6 @@ static struct vfs_fn_pointers skel_opaque_fns = { .lstat_fn = skel_lstat, .get_alloc_size_fn = skel_get_alloc_size, .unlinkat_fn = skel_unlinkat, - .chmod_fn = skel_chmod, .fchmod_fn = skel_fchmod, .fchown_fn = skel_fchown, .lchown_fn = skel_lchown, diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c index 6c5e9002e16..c73e04fd58b 100644 --- a/examples/VFS/skel_transparent.c +++ b/examples/VFS/skel_transparent.c @@ -491,13 +491,6 @@ static int skel_unlinkat(vfs_handle_struct *handle, flags); } -static int skel_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - return SMB_VFS_NEXT_CHMOD(handle, smb_fname, mode); -} - static int skel_fchmod(vfs_handle_struct *handle, files_struct *fsp, mode_t mode) { @@ -1342,7 +1335,6 @@ static struct vfs_fn_pointers skel_transparent_fns = { .lstat_fn = skel_lstat, .get_alloc_size_fn = skel_get_alloc_size, .unlinkat_fn = skel_unlinkat, - .chmod_fn = skel_chmod, .fchmod_fn = skel_fchmod, .fchown_fn = skel_fchown, .lchown_fn = skel_lchown, diff --git a/source3/include/vfs.h b/source3/include/vfs.h index d06a62e5151..7bbd5e189a8 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -338,7 +338,6 @@ * Version 44 - Add 'have_proc_fds' flag to struct connection_struct. * Version 44 - Add 'have_proc_fds' flag to struct files_struct. * Version 44 - Add dirfsp arg to SMB_VFS_READDIR() - * Version 44 - Remove SMB_VFS_GET_DOS_ATTRIBUTES() * Version 44 - Replace SMB_VFS_GET_COMPRESSION() with SMB_VFS_FGET_COMPRESSION() * Version 44 - Add type argument to SMB_VFS_SYS_ACL_SET_FD() * Version 44 - Remove SMB_VFS_SYS_ACL_SET_FILE() @@ -346,6 +345,8 @@ * Version 45 - Remove SMB_VFS_LISTXATTR * Version 45 - Remove SMB_VFS_SETXATTR * Version 45 - Remove SMB_VFS_REMOVEXATTR + * Version 45 - Remove SMB_VFS_GET_DOS_ATTRIBUTES() + * Version 45 - Remove SMB_VFS_CHMOD */ #define SMB_VFS_INTERFACE_VERSION 45 @@ -1005,9 +1006,6 @@ struct vfs_fn_pointers { struct files_struct *srcdir_fsp, const struct smb_filename *smb_fname, int flags); - int (*chmod_fn)(struct vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode); int (*fchmod_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, mode_t mode); int (*fchown_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, uid_t uid, gid_t gid); int (*lchown_fn)(struct vfs_handle_struct *handle, @@ -1518,9 +1516,6 @@ int smb_vfs_call_unlinkat(struct vfs_handle_struct *handle, struct files_struct *dirfsp, const struct smb_filename *smb_fname, int flags); -int smb_vfs_call_chmod(struct vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode); int smb_vfs_call_fchmod(struct vfs_handle_struct *handle, struct files_struct *fsp, mode_t mode); int smb_vfs_call_fchown(struct vfs_handle_struct *handle, @@ -1949,9 +1944,6 @@ int vfs_not_implemented_unlinkat(vfs_handle_struct *handle, struct files_struct *dirfsp, const struct smb_filename *smb_fname, int flags); -int vfs_not_implemented_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode); int vfs_not_implemented_fchmod(vfs_handle_struct *handle, files_struct *fsp, mode_t mode); int vfs_not_implemented_fchown(vfs_handle_struct *handle, files_struct *fsp, diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h index 9ec9330095a..5247d56bfc9 100644 --- a/source3/include/vfs_macros.h +++ b/source3/include/vfs_macros.h @@ -243,11 +243,6 @@ #define SMB_VFS_NEXT_UNLINKAT(handle, dirfsp, path, flags) \ smb_vfs_call_unlinkat((handle)->next, (dirfsp), (path), (flags)) -#define SMB_VFS_CHMOD(conn, smb_fname, mode) \ - smb_vfs_call_chmod((conn)->vfs_handles, (smb_fname), (mode)) -#define SMB_VFS_NEXT_CHMOD(handle, smb_fname, mode) \ - smb_vfs_call_chmod((handle)->next, (smb_fname), (mode)) - #define SMB_VFS_FCHMOD(fsp, mode) \ smb_vfs_call_fchmod((fsp)->conn->vfs_handles, (fsp), (mode)) #define SMB_VFS_NEXT_FCHMOD(handle, fsp, mode) \ diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c index db6f40d3adf..39afdcb1cf3 100644 --- a/source3/modules/vfs_acl_common.c +++ b/source3/modules/vfs_acl_common.c @@ -1360,21 +1360,11 @@ int unlink_acl_common(struct vfs_handle_struct *handle, return -1; } -int chmod_acl_module_common(struct vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - if (smb_fname->flags & SMB_FILENAME_POSIX_PATH) { - /* Only allow this on POSIX pathnames. */ - return SMB_VFS_NEXT_CHMOD(handle, smb_fname, mode); - } - return 0; -} - int fchmod_acl_module_common(struct vfs_handle_struct *handle, struct files_struct *fsp, mode_t mode) { - if (fsp->posix_flags & FSP_POSIX_FLAGS_OPEN) { + if (fsp->posix_flags & FSP_POSIX_FLAGS_PATHNAMES + || fsp->fsp_name->flags & SMB_FILENAME_POSIX_PATH) { /* Only allow this on POSIX opens. */ return SMB_VFS_NEXT_FCHMOD(handle, fsp, mode); } diff --git a/source3/modules/vfs_acl_common.h b/source3/modules/vfs_acl_common.h index c686395bdfa..c4b4fb9c1b3 100644 --- a/source3/modules/vfs_acl_common.h +++ b/source3/modules/vfs_acl_common.h @@ -43,9 +43,6 @@ int unlink_acl_common(struct vfs_handle_struct *handle, struct files_struct *dirfsp, const struct smb_filename *smb_fname, int flags); -int chmod_acl_module_common(struct vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode); int fchmod_acl_module_common(struct vfs_handle_struct *handle, struct files_struct *fsp, mode_t mode); int chmod_acl_acl_module_common(struct vfs_handle_struct *handle, diff --git a/source3/modules/vfs_acl_tdb.c b/source3/modules/vfs_acl_tdb.c index 4439a92557e..dab215571b2 100644 --- a/source3/modules/vfs_acl_tdb.c +++ b/source3/modules/vfs_acl_tdb.c @@ -448,7 +448,6 @@ static struct vfs_fn_pointers vfs_acl_tdb_fns = { .connect_fn = connect_acl_tdb, .disconnect_fn = disconnect_acl_tdb, .unlinkat_fn = unlinkat_acl_tdb, - .chmod_fn = chmod_acl_module_common, .fchmod_fn = fchmod_acl_module_common, .fget_nt_acl_fn = acl_tdb_fget_nt_acl, .get_nt_acl_at_fn = acl_tdb_get_nt_acl_at, diff --git a/source3/modules/vfs_acl_xattr.c b/source3/modules/vfs_acl_xattr.c index 9e20896cb2f..4f092de0220 100644 --- a/source3/modules/vfs_acl_xattr.c +++ b/source3/modules/vfs_acl_xattr.c @@ -380,7 +380,6 @@ static NTSTATUS acl_xattr_fset_nt_acl(vfs_handle_struct *handle, static struct vfs_fn_pointers vfs_acl_xattr_fns = { .connect_fn = connect_acl_xattr, .unlinkat_fn = acl_xattr_unlinkat, - .chmod_fn = chmod_acl_module_common, .fchmod_fn = fchmod_acl_module_common, .fget_nt_acl_fn = acl_xattr_fget_nt_acl, .get_nt_acl_at_fn = acl_xattr_get_nt_acl_at, diff --git a/source3/modules/vfs_audit.c b/source3/modules/vfs_audit.c index 72d982b88ae..2b0171b9c09 100644 --- a/source3/modules/vfs_audit.c +++ b/source3/modules/vfs_audit.c @@ -294,22 +294,6 @@ static int audit_unlinkat(vfs_handle_struct *handle, return result; } -static int audit_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - int result; - - result = SMB_VFS_NEXT_CHMOD(handle, smb_fname, mode); - - syslog(audit_syslog_priority(handle), "chmod %s mode 0x%x %s%s\n", - smb_fname->base_name, mode, - (result < 0) ? "failed: " : "", - (result < 0) ? strerror(errno) : ""); - - return result; -} - static int audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, mode_t mode) { int result; @@ -332,7 +316,6 @@ static struct vfs_fn_pointers vfs_audit_fns = { .close_fn = audit_close, .renameat_fn = audit_renameat, .unlinkat_fn = audit_unlinkat, - .chmod_fn = audit_chmod, .fchmod_fn = audit_fchmod, }; diff --git a/source3/modules/vfs_cap.c b/source3/modules/vfs_cap.c index 372acff5918..c24a2be05fd 100644 --- a/source3/modules/vfs_cap.c +++ b/source3/modules/vfs_cap.c @@ -333,40 +333,6 @@ static int cap_unlinkat(vfs_handle_struct *handle, return ret; } -static int cap_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - struct smb_filename *cap_smb_fname = NULL; - char *cappath = capencode(talloc_tos(), smb_fname->base_name); - int ret; - int saved_errno; - - if (!cappath) { - errno = ENOMEM; - return -1; - } - - cap_smb_fname = synthetic_smb_fname(talloc_tos(), - cappath, - NULL, - NULL, - smb_fname->twrp, - smb_fname->flags); - if (cap_smb_fname == NULL) { - TALLOC_FREE(cappath); - errno = ENOMEM; - return -1; - } - - ret = SMB_VFS_NEXT_CHMOD(handle, cap_smb_fname, mode); - saved_errno = errno; - TALLOC_FREE(cappath); - TALLOC_FREE(cap_smb_fname); - errno = saved_errno; - return ret; -} - static int cap_lchown(vfs_handle_struct *handle, const struct smb_filename *smb_fname, uid_t uid, @@ -1017,7 +983,6 @@ static struct vfs_fn_pointers vfs_cap_fns = { .stat_fn = cap_stat, .lstat_fn = cap_lstat, .unlinkat_fn = cap_unlinkat, - .chmod_fn = cap_chmod, .lchown_fn = cap_lchown, .chdir_fn = cap_chdir, .ntimes_fn = cap_ntimes, diff --git a/source3/modules/vfs_catia.c b/source3/modules/vfs_catia.c index cb06a4de355..96843095f17 100644 --- a/source3/modules/vfs_catia.c +++ b/source3/modules/vfs_catia.c @@ -742,44 +742,6 @@ static int catia_lchown(vfs_handle_struct *handle, return ret; } -static int catia_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - char *name = NULL; - NTSTATUS status; - int ret; - int saved_errno; - struct smb_filename *catia_smb_fname = NULL; - - status = catia_string_replace_allocate(handle->conn, - smb_fname->base_name, - &name, - vfs_translate_to_unix); - if (!NT_STATUS_IS_OK(status)) { - errno = map_errno_from_nt_status(status); - return -1; - } - catia_smb_fname = synthetic_smb_fname(talloc_tos(), - name, - NULL, - &smb_fname->st, - smb_fname->twrp, - smb_fname->flags); - if (catia_smb_fname == NULL) { - TALLOC_FREE(name); - errno = ENOMEM; - return -1; - } - - ret = SMB_VFS_NEXT_CHMOD(handle, catia_smb_fname, mode); - saved_errno = errno; - TALLOC_FREE(name); - TALLOC_FREE(catia_smb_fname); - errno = saved_errno; - return ret; -} - static int catia_mkdirat(vfs_handle_struct *handle, struct files_struct *dirfsp, const struct smb_filename *smb_fname, @@ -2185,7 +2147,6 @@ static struct vfs_fn_pointers vfs_catia_fns = { .fstat_fn = catia_fstat, .lstat_fn = catia_lstat, .unlinkat_fn = catia_unlinkat, - .chmod_fn = catia_chmod, .fchmod_fn = catia_fchmod, .fchown_fn = catia_fchown, .lchown_fn = catia_lchown, diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c index 634222df764..d627a2233ae 100644 --- a/source3/modules/vfs_ceph.c +++ b/source3/modules/vfs_ceph.c @@ -858,24 +858,24 @@ static int cephwrap_unlinkat(struct vfs_handle_struct *handle, WRAP_RETURN(result); } -static int cephwrap_chmod(struct vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - int result; - - DBG_DEBUG("[CEPH] chmod(%p, %s, %d)\n", handle, smb_fname->base_name, mode); - result = ceph_chmod(handle->data, smb_fname->base_name, mode); - DBG_DEBUG("[CEPH] chmod(...) = %d\n", result); - WRAP_RETURN(result); -} - static int cephwrap_fchmod(struct vfs_handle_struct *handle, files_struct *fsp, mode_t mode) { int result; DBG_DEBUG("[CEPH] fchmod(%p, %p, %d)\n", handle, fsp, mode); - result = ceph_fchmod(handle->data, fsp_get_io_fd(fsp), mode); + if (!fsp->fsp_flags.is_pathref) { + /* + * We can use an io_fd to remove xattrs. + */ + result = ceph_fchmod(handle->data, fsp_get_io_fd(fsp), mode); + } else { + /* + * This is no longer a handle based call. + */ + result = ceph_chmod(handle->data, + fsp->fsp_name->base_name, + mode); + } DBG_DEBUG("[CEPH] fchmod(...) = %d\n", result); WRAP_RETURN(result); } @@ -1576,7 +1576,6 @@ static struct vfs_fn_pointers ceph_fns = { .fstat_fn = cephwrap_fstat, .lstat_fn = cephwrap_lstat, .unlinkat_fn = cephwrap_unlinkat, - .chmod_fn = cephwrap_chmod, .fchmod_fn = cephwrap_fchmod, .fchown_fn = cephwrap_fchown, .lchown_fn = cephwrap_lchown, diff --git a/source3/modules/vfs_ceph_snapshots.c b/source3/modules/vfs_ceph_snapshots.c index 7b2307b19ee..eccc5fcbf3e 100644 --- a/source3/modules/vfs_ceph_snapshots.c +++ b/source3/modules/vfs_ceph_snapshots.c @@ -939,13 +939,15 @@ static int ceph_snap_gmt_unlinkat(vfs_handle_struct *handle, flags); } -static int ceph_snap_gmt_chmod(vfs_handle_struct *handle, - const struct smb_filename *csmb_fname, - mode_t mode) +static int ceph_snap_gmt_fchmod(vfs_handle_struct *handle, + struct files_struct *fsp, + mode_t mode) { + const struct smb_filename *csmb_fname = NULL; time_t timestamp = 0; int ret; + csmb_fname = fsp->fsp_name; ret = ceph_snap_gmt_strip_snapshot(handle, csmb_fname, ×tamp, NULL, 0); @@ -957,7 +959,7 @@ static int ceph_snap_gmt_chmod(vfs_handle_struct *handle, errno = EROFS; return -1; } - return SMB_VFS_NEXT_CHMOD(handle, csmb_fname, mode); + return SMB_VFS_NEXT_FCHMOD(handle, fsp, mode); } static int ceph_snap_gmt_chdir(vfs_handle_struct *handle, @@ -1460,7 +1462,7 @@ static struct vfs_fn_pointers ceph_snap_fns = { .lstat_fn = ceph_snap_gmt_lstat, .openat_fn = ceph_snap_gmt_openat, .unlinkat_fn = ceph_snap_gmt_unlinkat, - .chmod_fn = ceph_snap_gmt_chmod, + .fchmod_fn = ceph_snap_gmt_fchmod, .chdir_fn = ceph_snap_gmt_chdir, .ntimes_fn = ceph_snap_gmt_ntimes, .readlinkat_fn = ceph_snap_gmt_readlinkat, diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 58891a2c1c3..376d7f51ea1 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -2408,29 +2408,37 @@ static int vfswrap_unlinkat(vfs_handle_struct *handle, return result; } -static int vfswrap_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, - mode_t mode) -{ - int result; - - START_PROFILE(syscall_chmod); - result = chmod(smb_fname->base_name, mode); - END_PROFILE(syscall_chmod); - return result; -} - static int vfswrap_fchmod(vfs_handle_struct *handle, files_struct *fsp, mode_t mode) { int result; START_PROFILE(syscall_fchmod); -#if defined(HAVE_FCHMOD) - result = fchmod(fsp_get_io_fd(fsp), mode); -#else - result = -1; - errno = ENOSYS; -#endif + + if (!fsp->fsp_flags.is_pathref) { + result = fchmod(fsp_get_io_fd(fsp), mode); + END_PROFILE(syscall_fchmod); + return result; + } + + if (fsp->fsp_flags.have_proc_fds) { + int fd = fsp_get_pathref_fd(fsp); + const char *p = NULL; + char buf[PATH_MAX]; + + p = sys_proc_fd_path(fd, buf, sizeof(buf)); + if (p != NULL) { + result = chmod(p, mode); + } else { + result = -1; + } + END_PROFILE(syscall_fchmod); + return result; + } + + /* + * This is no longer a handle based call. + */ + result = chmod(fsp->fsp_name->base_name, mode); END_PROFILE(syscall_fchmod); return result; @@ -3799,7 +3807,6 @@ static struct vfs_fn_pointers vfs_default_fns = { .lstat_fn = vfswrap_lstat, .get_alloc_size_fn = vfswrap_get_alloc_size, .unlinkat_fn = vfswrap_unlinkat, - .chmod_fn = vfswrap_chmod, .fchmod_fn = vfswrap_fchmod, .fchown_fn = vfswrap_fchown, .lchown_fn = vfswrap_lchown, diff --git a/source3/modules/vfs_extd_audit.c b/source3/modules/vfs_extd_audit.c index 45e8f1c5b3b..98ad9bdcacb 100644 --- a/source3/modules/vfs_extd_audit.c +++ b/source3/modules/vfs_extd_audit.c @@ -339,28 +339,6 @@ static int audit_unlinkat(vfs_handle_struct *handle, return result; } -static int audit_chmod(vfs_handle_struct *handle, - const struct smb_filename *smb_fname, -- Samba Shared Repository