Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 157944
b: refs/heads/master
c: 70ec7bb
h: refs/heads/master
v: v3
  • Loading branch information
Herbert Xu committed Jul 7, 2009
1 parent 5b3d562 commit 037f300
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f2ac72e8268d9559c3114d5a22679f91f80a2238
refs/heads/master: 70ec7bb91ad0d6cce84c8e17f8cbb608dda7b18c
37 changes: 31 additions & 6 deletions trunk/crypto/algapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -627,17 +627,20 @@ int crypto_attr_u32(struct rtattr *rta, u32 *num)
}
EXPORT_SYMBOL_GPL(crypto_attr_u32);

struct crypto_instance *crypto_alloc_instance(const char *name,
struct crypto_alg *alg)
void *crypto_alloc_instance2(const char *name, struct crypto_alg *alg,
unsigned int head)
{
struct crypto_instance *inst;
struct crypto_spawn *spawn;
char *p;
int err;

inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);
if (!inst)
p = kzalloc(head + sizeof(*inst) + sizeof(struct crypto_spawn),
GFP_KERNEL);
if (!p)
return ERR_PTR(-ENOMEM);

inst = (void *)(p + head);

err = -ENAMETOOLONG;
if (snprintf(inst->alg.cra_name, CRYPTO_MAX_ALG_NAME, "%s(%s)", name,
alg->cra_name) >= CRYPTO_MAX_ALG_NAME)
Expand All @@ -647,6 +650,25 @@ struct crypto_instance *crypto_alloc_instance(const char *name,
name, alg->cra_driver_name) >= CRYPTO_MAX_ALG_NAME)
goto err_free_inst;

return p;

err_free_inst:
kfree(p);
return ERR_PTR(err);
}
EXPORT_SYMBOL_GPL(crypto_alloc_instance2);

struct crypto_instance *crypto_alloc_instance(const char *name,
struct crypto_alg *alg)
{
struct crypto_instance *inst;
struct crypto_spawn *spawn;
int err;

inst = crypto_alloc_instance2(name, alg, 0);
if (IS_ERR(inst))
goto out;

spawn = crypto_instance_ctx(inst);
err = crypto_init_spawn(spawn, alg, inst,
CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC);
Expand All @@ -658,7 +680,10 @@ struct crypto_instance *crypto_alloc_instance(const char *name,

err_free_inst:
kfree(inst);
return ERR_PTR(err);
inst = ERR_PTR(err);

out:
return inst;
}
EXPORT_SYMBOL_GPL(crypto_alloc_instance);

Expand Down
2 changes: 2 additions & 0 deletions trunk/include/crypto/algapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ int crypto_check_attr_type(struct rtattr **tb, u32 type);
const char *crypto_attr_alg_name(struct rtattr *rta);
struct crypto_alg *crypto_attr_alg(struct rtattr *rta, u32 type, u32 mask);
int crypto_attr_u32(struct rtattr *rta, u32 *num);
void *crypto_alloc_instance2(const char *name, struct crypto_alg *alg,
unsigned int head);
struct crypto_instance *crypto_alloc_instance(const char *name,
struct crypto_alg *alg);

Expand Down

0 comments on commit 037f300

Please sign in to comment.