IB/hfi1: Suppress a compiler warning
[linux-2.6-microblaze.git] / crypto / simd.c
index 208226d..ea7240b 100644 (file)
@@ -221,4 +221,54 @@ void simd_skcipher_free(struct simd_skcipher_alg *salg)
 }
 EXPORT_SYMBOL_GPL(simd_skcipher_free);
 
+int simd_register_skciphers_compat(struct skcipher_alg *algs, int count,
+                                  struct simd_skcipher_alg **simd_algs)
+{
+       int err;
+       int i;
+       const char *algname;
+       const char *drvname;
+       const char *basename;
+       struct simd_skcipher_alg *simd;
+
+       err = crypto_register_skciphers(algs, count);
+       if (err)
+               return err;
+
+       for (i = 0; i < count; i++) {
+               WARN_ON(strncmp(algs[i].base.cra_name, "__", 2));
+               WARN_ON(strncmp(algs[i].base.cra_driver_name, "__", 2));
+               algname = algs[i].base.cra_name + 2;
+               drvname = algs[i].base.cra_driver_name + 2;
+               basename = algs[i].base.cra_driver_name;
+               simd = simd_skcipher_create_compat(algname, drvname, basename);
+               err = PTR_ERR(simd);
+               if (IS_ERR(simd))
+                       goto err_unregister;
+               simd_algs[i] = simd;
+       }
+       return 0;
+
+err_unregister:
+       simd_unregister_skciphers(algs, count, simd_algs);
+       return err;
+}
+EXPORT_SYMBOL_GPL(simd_register_skciphers_compat);
+
+void simd_unregister_skciphers(struct skcipher_alg *algs, int count,
+                              struct simd_skcipher_alg **simd_algs)
+{
+       int i;
+
+       crypto_unregister_skciphers(algs, count);
+
+       for (i = 0; i < count; i++) {
+               if (simd_algs[i]) {
+                       simd_skcipher_free(simd_algs[i]);
+                       simd_algs[i] = NULL;
+               }
+       }
+}
+EXPORT_SYMBOL_GPL(simd_unregister_skciphers);
+
 MODULE_LICENSE("GPL");