Merge tag 'tomoyo-pr-20200128' of git://git.osdn.net/gitroot/tomoyo/tomoyo-test1
[linux-2.6-microblaze.git] / crypto / algapi.c
index a5223c5..69605e2 100644 (file)
@@ -65,11 +65,6 @@ static int crypto_check_alg(struct crypto_alg *alg)
 
 static void crypto_free_instance(struct crypto_instance *inst)
 {
-       if (!inst->alg.cra_type->free) {
-               inst->tmpl->free(inst);
-               return;
-       }
-
        inst->alg.cra_type->free(inst);
 }
 
@@ -629,8 +624,7 @@ int crypto_register_instance(struct crypto_template *tmpl,
                spawn->inst = inst;
                spawn->registered = true;
 
-               if (spawn->dropref)
-                       crypto_mod_put(spawn->alg);
+               crypto_mod_put(spawn->alg);
 
                spawn = next;
        }
@@ -672,64 +666,33 @@ void crypto_unregister_instance(struct crypto_instance *inst)
 }
 EXPORT_SYMBOL_GPL(crypto_unregister_instance);
 
-int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg,
-                     struct crypto_instance *inst, u32 mask)
+int crypto_grab_spawn(struct crypto_spawn *spawn, struct crypto_instance *inst,
+                     const char *name, u32 type, u32 mask)
 {
+       struct crypto_alg *alg;
        int err = -EAGAIN;
 
        if (WARN_ON_ONCE(inst == NULL))
                return -EINVAL;
 
-       spawn->next = inst->spawns;
-       inst->spawns = spawn;
+       /* Allow the result of crypto_attr_alg_name() to be passed directly */
+       if (IS_ERR(name))
+               return PTR_ERR(name);
 
-       spawn->mask = mask;
+       alg = crypto_find_alg(name, spawn->frontend, type, mask);
+       if (IS_ERR(alg))
+               return PTR_ERR(alg);
 
        down_write(&crypto_alg_sem);
        if (!crypto_is_moribund(alg)) {
                list_add(&spawn->list, &alg->cra_users);
                spawn->alg = alg;
+               spawn->mask = mask;
+               spawn->next = inst->spawns;
+               inst->spawns = spawn;
                err = 0;
        }
        up_write(&crypto_alg_sem);
-
-       return err;
-}
-EXPORT_SYMBOL_GPL(crypto_init_spawn);
-
-int crypto_init_spawn2(struct crypto_spawn *spawn, struct crypto_alg *alg,
-                      struct crypto_instance *inst,
-                      const struct crypto_type *frontend)
-{
-       int err = -EINVAL;
-
-       if ((alg->cra_flags ^ frontend->type) & frontend->maskset)
-               goto out;
-
-       spawn->frontend = frontend;
-       err = crypto_init_spawn(spawn, alg, inst, frontend->maskset);
-
-out:
-       return err;
-}
-EXPORT_SYMBOL_GPL(crypto_init_spawn2);
-
-int crypto_grab_spawn(struct crypto_spawn *spawn, const char *name,
-                     u32 type, u32 mask)
-{
-       struct crypto_alg *alg;
-       int err;
-
-       /* Allow the result of crypto_attr_alg_name() to be passed directly */
-       if (IS_ERR(name))
-               return PTR_ERR(name);
-
-       alg = crypto_find_alg(name, spawn->frontend, type, mask);
-       if (IS_ERR(alg))
-               return PTR_ERR(alg);
-
-       spawn->dropref = true;
-       err = crypto_init_spawn(spawn, alg, spawn->inst, mask);
        if (err)
                crypto_mod_put(alg);
        return err;
@@ -746,7 +709,7 @@ void crypto_drop_spawn(struct crypto_spawn *spawn)
                list_del(&spawn->list);
        up_write(&crypto_alg_sem);
 
-       if (spawn->dropref && !spawn->registered)
+       if (!spawn->registered)
                crypto_mod_put(spawn->alg);
 }
 EXPORT_SYMBOL_GPL(crypto_drop_spawn);
@@ -876,20 +839,6 @@ const char *crypto_attr_alg_name(struct rtattr *rta)
 }
 EXPORT_SYMBOL_GPL(crypto_attr_alg_name);
 
-struct crypto_alg *crypto_attr_alg2(struct rtattr *rta,
-                                   const struct crypto_type *frontend,
-                                   u32 type, u32 mask)
-{
-       const char *name;
-
-       name = crypto_attr_alg_name(rta);
-       if (IS_ERR(name))
-               return ERR_CAST(name);
-
-       return crypto_find_alg(name, frontend, type, mask);
-}
-EXPORT_SYMBOL_GPL(crypto_attr_alg2);
-
 int crypto_attr_u32(struct rtattr *rta, u32 *num)
 {
        struct crypto_attr_u32 *nu32;
@@ -923,32 +872,6 @@ int crypto_inst_setname(struct crypto_instance *inst, const char *name,
 }
 EXPORT_SYMBOL_GPL(crypto_inst_setname);
 
-void *crypto_alloc_instance(const char *name, struct crypto_alg *alg,
-                           unsigned int head)
-{
-       struct crypto_instance *inst;
-       char *p;
-       int err;
-
-       p = kzalloc(head + sizeof(*inst) + sizeof(struct crypto_spawn),
-                   GFP_KERNEL);
-       if (!p)
-               return ERR_PTR(-ENOMEM);
-
-       inst = (void *)(p + head);
-
-       err = crypto_inst_setname(inst, name, alg);
-       if (err)
-               goto err_free_inst;
-
-       return p;
-
-err_free_inst:
-       kfree(p);
-       return ERR_PTR(err);
-}
-EXPORT_SYMBOL_GPL(crypto_alloc_instance);
-
 void crypto_init_queue(struct crypto_queue *queue, unsigned int max_qlen)
 {
        INIT_LIST_HEAD(&queue->list);