return ima_match_policy(inode, func, mask, IMA_APPRAISE);
 }
 
-static void ima_fix_xattr(struct dentry *dentry,
+static int ima_fix_xattr(struct dentry *dentry,
                          struct integrity_iint_cache *iint)
 {
        iint->ima_xattr.type = IMA_XATTR_DIGEST;
-       __vfs_setxattr_noperm(dentry, XATTR_NAME_IMA, (u8 *)&iint->ima_xattr,
-                             sizeof iint->ima_xattr, 0);
+       return __vfs_setxattr_noperm(dentry, XATTR_NAME_IMA,
+                                    (u8 *)&iint->ima_xattr,
+                                     sizeof(iint->ima_xattr), 0);
 }
 
 /*
                if ((ima_appraise & IMA_APPRAISE_FIX) &&
                    (!xattr_value ||
                     xattr_value->type != EVM_IMA_XATTR_DIGSIG)) {
-                       ima_fix_xattr(dentry, iint);
-                       status = INTEGRITY_PASS;
+                       if (!ima_fix_xattr(dentry, iint))
+                               status = INTEGRITY_PASS;
                }
                integrity_audit_msg(AUDIT_INTEGRITY_DATA, inode, filename,
                                    op, cause, rc, 0);