diff --git a/src/schema_features.c b/src/schema_features.c
index 2189046..fc6843a 100644
--- a/src/schema_features.c
+++ b/src/schema_features.c
@@ -386,7 +386,8 @@
     }
     if (j) {
         /* not matching count of ( and ) */
-        LOGVAL(ctx, LYVE_SYNTAX_YANG, "Invalid value \"%s\" of if-feature - non-matching opening and closing parentheses.", qname->str);
+        LOGVAL(ctx, LYVE_SYNTAX_YANG, "Invalid value \"%s\" of if-feature - non-matching opening and closing parentheses.",
+                qname->str);
         return LY_EVALID;
     }
     if (f_exp != f_size) {
@@ -399,7 +400,8 @@
     if (checkversion || (expr_size > 1)) {
         /* check that we have 1.1 module */
         if (qname->mod->version != LYS_VERSION_1_1) {
-            LOGVAL(ctx, LYVE_SYNTAX_YANG, "Invalid value \"%s\" of if-feature - YANG 1.1 expression in YANG 1.0 module.", qname->str);
+            LOGVAL(ctx, LYVE_SYNTAX_YANG, "Invalid value \"%s\" of if-feature - YANG 1.1 expression in YANG 1.0 module.",
+                    qname->str);
             return LY_EVALID;
         }
     }
@@ -529,15 +531,8 @@
     return LY_SUCCESS;
 }
 
-/**
- * @brief Check whether all enabled features have their if-features satisfied.
- * Enabled features with false if-features are disabled with a warning.
- *
- * @param[in] pmod Parsed module features to check.
- * @return LY_ERR value.
- */
-static LY_ERR
-lys_check_features(struct lysp_module *pmod)
+LY_ERR
+lys_check_features(const struct lysp_module *pmod)
 {
     LY_ERR r;
     uint32_t i = 0;
@@ -552,12 +547,9 @@
         assert(f->iffeatures_c);
         r = lysc_iffeature_value(f->iffeatures_c);
         if (r == LY_ENOT) {
-            LOGWRN(pmod->mod->ctx, "Feature \"%s\" cannot be enabled because its \"if-feature\" is not satisfied.",
+            LOGERR(pmod->mod->ctx, LY_EDENIED, "Feature \"%s\" cannot be enabled because its \"if-feature\" is not satisfied.",
                     f->name);
-
-            /* disable feature and re-evaluate all the feature if-features again */
-            f->flags &= ~LYS_FENABLED;
-            return lys_check_features(pmod);
+            return LY_EDENIED;
         } else if (r) {
             return r;
         } /* else if-feature satisfied */
@@ -626,8 +618,7 @@
         return LY_EEXIST;
     }
 
-    /* check final features if-feature state */
-    return lys_check_features(pmod);
+    return LY_SUCCESS;
 }
 
 /**
