These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / security / integrity / ima / ima_appraise.c
index 4df493e..1873b55 100644 (file)
@@ -378,10 +378,14 @@ int ima_inode_setxattr(struct dentry *dentry, const char *xattr_name,
        result = ima_protect_xattr(dentry, xattr_name, xattr_value,
                                   xattr_value_len);
        if (result == 1) {
+               bool digsig;
+
                if (!xattr_value_len || (xvalue->type >= IMA_XATTR_LAST))
                        return -EINVAL;
-               ima_reset_appraise_flags(d_backing_inode(dentry),
-                        (xvalue->type == EVM_IMA_XATTR_DIGSIG) ? 1 : 0);
+               digsig = (xvalue->type == EVM_IMA_XATTR_DIGSIG);
+               if (!digsig && (ima_appraise & IMA_APPRAISE_ENFORCE))
+                       return -EPERM;
+               ima_reset_appraise_flags(d_backing_inode(dentry), digsig);
                result = 0;
        }
        return result;