KEYS: trusted: Rollback init_trusted() consistently
[sfrench/cifs-2.6.git] / security / keys / trusted-keys / trusted_core.c
index 85fb5c22529a761d9cc4509c74ea01cc790113e0..fee1ab2c734d32b1946785b3e3beb678d492b24b 100644 (file)
@@ -358,17 +358,17 @@ static int __init init_trusted(void)
                if (!get_random)
                        get_random = kernel_get_random;
 
-               static_call_update(trusted_key_seal,
-                                  trusted_key_sources[i].ops->seal);
-               static_call_update(trusted_key_unseal,
-                                  trusted_key_sources[i].ops->unseal);
-               static_call_update(trusted_key_get_random,
-                                  get_random);
-               trusted_key_exit = trusted_key_sources[i].ops->exit;
-               migratable = trusted_key_sources[i].ops->migratable;
-
                ret = trusted_key_sources[i].ops->init();
-               if (!ret)
+               if (!ret) {
+                       static_call_update(trusted_key_seal, trusted_key_sources[i].ops->seal);
+                       static_call_update(trusted_key_unseal, trusted_key_sources[i].ops->unseal);
+                       static_call_update(trusted_key_get_random, get_random);
+
+                       trusted_key_exit = trusted_key_sources[i].ops->exit;
+                       migratable = trusted_key_sources[i].ops->migratable;
+               }
+
+               if (!ret || ret != -ENODEV)
                        break;
        }