Commit 1a45d7e3 authored by Wei Yongjun's avatar Wei Yongjun Committed by Herbert Xu

crypto: drbg - fix error return code

Fix to return a negative error code from the error handling
case instead of 0.
Signed-off-by: default avatarWei Yongjun <weiyj.lk@gmail.com>
Acked-by: default avatarStephan Mueller <smueller@chronox.de>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent b46b9d1a
...@@ -1178,12 +1178,16 @@ static inline int drbg_alloc_state(struct drbg_state *drbg) ...@@ -1178,12 +1178,16 @@ static inline int drbg_alloc_state(struct drbg_state *drbg)
goto err; goto err;
drbg->Vbuf = kmalloc(drbg_statelen(drbg) + ret, GFP_KERNEL); drbg->Vbuf = kmalloc(drbg_statelen(drbg) + ret, GFP_KERNEL);
if (!drbg->Vbuf) if (!drbg->Vbuf) {
ret = -ENOMEM;
goto fini; goto fini;
}
drbg->V = PTR_ALIGN(drbg->Vbuf, ret + 1); drbg->V = PTR_ALIGN(drbg->Vbuf, ret + 1);
drbg->Cbuf = kmalloc(drbg_statelen(drbg) + ret, GFP_KERNEL); drbg->Cbuf = kmalloc(drbg_statelen(drbg) + ret, GFP_KERNEL);
if (!drbg->Cbuf) if (!drbg->Cbuf) {
ret = -ENOMEM;
goto fini; goto fini;
}
drbg->C = PTR_ALIGN(drbg->Cbuf, ret + 1); drbg->C = PTR_ALIGN(drbg->Cbuf, ret + 1);
/* scratchpad is only generated for CTR and Hash */ /* scratchpad is only generated for CTR and Hash */
if (drbg->core->flags & DRBG_HMAC) if (drbg->core->flags & DRBG_HMAC)
...@@ -1199,8 +1203,10 @@ static inline int drbg_alloc_state(struct drbg_state *drbg) ...@@ -1199,8 +1203,10 @@ static inline int drbg_alloc_state(struct drbg_state *drbg)
if (0 < sb_size) { if (0 < sb_size) {
drbg->scratchpadbuf = kzalloc(sb_size + ret, GFP_KERNEL); drbg->scratchpadbuf = kzalloc(sb_size + ret, GFP_KERNEL);
if (!drbg->scratchpadbuf) if (!drbg->scratchpadbuf) {
ret = -ENOMEM;
goto fini; goto fini;
}
drbg->scratchpad = PTR_ALIGN(drbg->scratchpadbuf, ret + 1); drbg->scratchpad = PTR_ALIGN(drbg->scratchpadbuf, ret + 1);
} }
...@@ -1999,7 +2005,7 @@ static int __init drbg_init(void) ...@@ -1999,7 +2005,7 @@ static int __init drbg_init(void)
{ {
unsigned int i = 0; /* pointer to drbg_algs */ unsigned int i = 0; /* pointer to drbg_algs */
unsigned int j = 0; /* pointer to drbg_cores */ unsigned int j = 0; /* pointer to drbg_cores */
int ret = -EFAULT; int ret;
ret = drbg_healthcheck_sanity(); ret = drbg_healthcheck_sanity();
if (ret) if (ret)
...@@ -2009,7 +2015,7 @@ static int __init drbg_init(void) ...@@ -2009,7 +2015,7 @@ static int __init drbg_init(void)
pr_info("DRBG: Cannot register all DRBG types" pr_info("DRBG: Cannot register all DRBG types"
"(slots needed: %zu, slots available: %zu)\n", "(slots needed: %zu, slots available: %zu)\n",
ARRAY_SIZE(drbg_cores) * 2, ARRAY_SIZE(drbg_algs)); ARRAY_SIZE(drbg_cores) * 2, ARRAY_SIZE(drbg_algs));
return ret; return -EFAULT;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment