|
@@ -689,8 +689,13 @@ int cifs_get_inode_info(struct inode **pinode,
|
|
|
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
|
|
/* fill in 0777 bits from ACL */
|
|
|
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
|
|
|
- cFYI(1, "Getting mode bits from ACL");
|
|
|
- cifs_acl_to_fattr(cifs_sb, &fattr, *pinode, full_path, pfid);
|
|
|
+ rc = cifs_acl_to_fattr(cifs_sb, &fattr, *pinode, full_path,
|
|
|
+ pfid);
|
|
|
+ if (rc) {
|
|
|
+ cFYI(1, "%s: Getting ACL failed with error: %d",
|
|
|
+ __func__, rc);
|
|
|
+ goto cgii_exit;
|
|
|
+ }
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -2117,9 +2122,14 @@ cifs_setattr_nounix(struct dentry *direntry, struct iattr *attrs)
|
|
|
if (attrs->ia_valid & ATTR_MODE) {
|
|
|
rc = 0;
|
|
|
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
|
|
- if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL)
|
|
|
- rc = mode_to_acl(inode, full_path, mode);
|
|
|
- else
|
|
|
+ if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
|
|
|
+ rc = mode_to_cifs_acl(inode, full_path, mode);
|
|
|
+ if (rc) {
|
|
|
+ cFYI(1, "%s: Setting ACL failed with error: %d",
|
|
|
+ __func__, rc);
|
|
|
+ goto cifs_setattr_exit;
|
|
|
+ }
|
|
|
+ } else
|
|
|
#endif
|
|
|
if (((mode & S_IWUGO) == 0) &&
|
|
|
(cifsInode->cifsAttrs & ATTR_READONLY) == 0) {
|