]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
smb/client: fix chown/chgrp with SMB3 POSIX Extensions
authorRalph Boehme <slow@samba.org>
Sun, 7 Jun 2026 13:23:18 +0000 (15:23 +0200)
committerSteve French <stfrench@microsoft.com>
Wed, 24 Jun 2026 15:33:51 +0000 (10:33 -0500)
Ownership (chown) and group (chgrp) modifications were being ignored when
mounting with SMB3 POSIX Extensions unless CIFS_MOUNT_CIFS_ACL or
CIFS_MOUNT_MODE_FROM_SID were also explicitly set.

Fix this by checking for posix_extensions in cifs_setattr_nounix() when
updating UID and GID, ensuring that id_mode_to_cifs_acl() is called to map
and set the ownership/group information on the server.

Cc: stable@vger.kernel.org
Signed-off-by: Ralph Boehme <slow@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/inode.c

index 51fb7c418d52a2db43dad66caf19f39b206e0b80..56b0f109e41b4df99a6998d30394dc85bcb5a679 100644 (file)
@@ -3376,7 +3376,8 @@ cifs_setattr_nounix(struct dentry *direntry, struct iattr *attrs)
        if (attrs->ia_valid & ATTR_GID)
                gid = attrs->ia_gid;
 
-       if (sbflags & (CIFS_MOUNT_CIFS_ACL | CIFS_MOUNT_MODE_FROM_SID)) {
+       if ((sbflags & (CIFS_MOUNT_CIFS_ACL | CIFS_MOUNT_MODE_FROM_SID)) ||
+           cifs_sb_master_tcon(cifs_sb)->posix_extensions) {
                if (uid_valid(uid) || gid_valid(gid)) {
                        mode = NO_CHANGE_64;
                        rc = id_mode_to_cifs_acl(inode, full_path, &mode,