* ppc/talitos oops on call to crypto_alloc_aead
@ 2016-04-08 13:40 Jonas Eymann
2016-04-15 14:02 ` Herbert Xu
0 siblings, 1 reply; 13+ messages in thread
From: Jonas Eymann @ 2016-04-08 13:40 UTC (permalink / raw)
To: linux-crypto
Hi all,
running a current 4.4.6 kernel on a board using a Freescale P1020, I ran into an oops when calling crypto_alloc_aead using the talitos driver. I could also reproduce this using the run-time self tests:
[...]
[ 1.141095] talitos ffe30000.crypto: hwrng
[ 1.145381] Unable to handle kernel paging request for data at address 0x00000058
[ 1.152913] Faulting instruction address: 0xc02accc0
[ 1.157910] Oops: Kernel access of bad area, sig: 11 [#1]
[ 1.163315] SMP NR_CPUS=2 P1020 RDB
[ 1.166810] Modules linked in:
[ 1.169875] CPU: 0 PID: 1007 Comm: cryptomgr_test Not tainted 4.4.6 #1
[ 1.176415] task: db5ec200 ti: db4d6000 task.ti: db4d6000
[ 1.181821] NIP: c02accc0 LR: c02acd18 CTR: c02acd04
[ 1.186793] REGS: db4d7d30 TRAP: 0300 Not tainted (4.4.6)
[ 1.192457] MSR: 00029000 <CE,EE,ME> CR: 95009359 XER: e0000000
[ 1.198585] DEAR: 00000058 ESR: 00000000
GPR00: c017bdc0 db4d7de0 db5ec200 df424b48 00000000 00000000 df424bfc db75a600
GPR08: df424b48 00000000 db75a628 db4d6000 00000149 00000000 c0044cac db5acda0
GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000400 df424940
GPR24: df424900 00003083 00000400 c0180000 db75a640 c03e9f84 df424b40 df424b48
[ 1.230978] NIP [c02accc0] talitos_cra_init+0x28/0x6c
[ 1.236039] LR [c02acd18] talitos_cra_init_aead+0x14/0x28
[ 1.241443] Call Trace:
[ 1.243894] [db4d7de0] [c03e9f84] 0xc03e9f84 (unreliable)
[ 1.249322] [db4d7df0] [c017bdc0] crypto_create_tfm+0x5c/0xf0
[ 1.255083] [db4d7e10] [c017beec] crypto_alloc_tfm+0x98/0xf8
[ 1.260769] [db4d7e40] [c0186a20] alg_test_aead+0x28/0xc8
[ 1.266181] [db4d7e60] [c0186718] alg_test+0x260/0x2e0
[ 1.271333] [db4d7ee0] [c0183860] cryptomgr_test+0x30/0x54
[ 1.276843] [db4d7ef0] [c0044d80] kthread+0xd4/0xd8
[ 1.281741] [db4d7f40] [c000e4a4] ret_from_kernel_thread+0x5c/0x64
[ 1.287930] Instruction dump:
[ 1.290902] 38600000 4e800020 81230028 7c681b78 81490010 38e9ffc0 3929ffe8 554a073e
[ 1.298691] 2b8a000a 7d474f9e 812a0008 91230030 <80e90058> 39270060 7c0004ac 7cc04828
[ 1.306676] ---[ end trace 4b725069552c2912 ]---
[ 1.311298]
In a first attempt to fix this problem using the patch further below, I could prevent the oops, though the self tests still fail:
[...]
[ 1.145414] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
[ 1.153564] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
[ 1.160041] 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 1.166509] 00000020: 00 00 00 00
[ 1.170041] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-3des-talitos
[ 1.178276] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
[ 1.184751] 00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
[ 1.191220] 00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
[ 1.197689] 00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
[ 1.204158] 00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
[ 1.210626] 00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
[ 1.217095] 00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
[ 1.223563] 00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
[ 1.230038] 00000080: de ad be ef de ad be ef de ad be ef de ad be ef
[ 1.236515] 00000090: de ad be ef
[...]
[ 1.651807] alg: No test for authenc(hmac(md5),cbc(aes)) (authenc-hmac-md5-cbc-aes-talitos)
[ 1.660371] alg: No test for authenc(hmac(md5),cbc(des3_ede)) (authenc-hmac-md5-cbc-3des-talitos)
[ 1.669576] talitos ffe30000.crypto: md5-talitos alg registration failed
[ 1.676331] talitos ffe30000.crypto: sha1-talitos alg registration failed
[ 1.683155] talitos ffe30000.crypto: sha224-talitos alg registration failed
[ 1.690153] talitos ffe30000.crypto: sha256-talitos alg registration failed
[ 1.697150] talitos ffe30000.crypto: sha384-talitos alg registration failed
[ 1.704148] talitos ffe30000.crypto: sha512-talitos alg registration failed
[ 1.711146] talitos ffe30000.crypto: hmac-md5-talitos alg registration failed
[ 1.718317] talitos ffe30000.crypto: hmac-sha1-talitos alg registration failed
[ 1.725581] talitos ffe30000.crypto: hmac-sha224-talitos alg registration failed
[ 1.733014] talitos ffe30000.crypto: hmac-sha256-talitos alg registration failed
[ 1.740446] talitos ffe30000.crypto: hmac-sha384-talitos alg registration failed
[ 1.747878] talitos ffe30000.crypto: hmac-sha512-talitos alg registration failed
[ 1.755310] talitos ffe30000.crypto: fsl,sec3.3 algorithms registered in /proc/crypto
I'm unsure whether or not this is related to the talitos driver not being able to register the hash algorithms (as it does not yet implement state import/export functions).
Can anyone generally confirm the problem on a P1020 or other CPU using the talitos driver and/or knows how to fix the remaining issues?
Thanks a lot in advance,
Jonas
---
Patch:
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -2519,21 +2519,10 @@ struct talitos_crypto_alg {
struct talitos_alg_template algt;
};
-static int talitos_cra_init(struct crypto_tfm *tfm)
+static int talitos_init_common(struct talitos_ctx *ctx, struct talitos_crypto_alg *talitos_alg)
{
- struct crypto_alg *alg = tfm->__crt_alg;
- struct talitos_crypto_alg *talitos_alg;
- struct talitos_ctx *ctx = crypto_tfm_ctx(tfm);
struct talitos_private *priv;
- if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_AHASH)
- talitos_alg = container_of(__crypto_ahash_alg(alg),
- struct talitos_crypto_alg,
- algt.alg.hash);
- else
- talitos_alg = container_of(alg, struct talitos_crypto_alg,
- algt.alg.crypto);
-
/* update context with ptr to dev */
ctx->dev = talitos_alg->dev;
@@ -2551,10 +2540,33 @@ static int talitos_cra_init(struct crypt
return 0;
}
+static int talitos_cra_init(struct crypto_tfm *tfm)
+{
+ struct crypto_alg *alg = tfm->__crt_alg;
+ struct talitos_crypto_alg *talitos_alg;
+ struct talitos_ctx *ctx = crypto_tfm_ctx(tfm);
+
+ if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_AHASH)
+ talitos_alg = container_of(__crypto_ahash_alg(tfm),
+ struct talitos_crypto_alg,
+ algt.alg.hash);
+ else
+ talitos_alg = container_of(alg, struct talitos_crypto_alg,
+ algt.alg.crypto);
+
+ return talitos_init_common(ctx, talitos_alg);
+}
+
static int talitos_cra_init_aead(struct crypto_aead *tfm)
{
- talitos_cra_init(crypto_aead_tfm(tfm));
- return 0;
+ struct aead_alg *alg = crypto_aead_alg(tfm);
+ struct talitos_crypto_alg *talitos_alg;
+ talitos_alg = container_of(alg,
+ struct talitos_crypto_alg,
+ algt.alg.aead);
+ struct talitos_ctx *ctx = crypto_aead_ctx(tfm);
+
+ return talitos_init_common(ctx, talitos_alg);
}
static int talitos_cra_init_ahash(struct crypto_tfm *tfm)
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: ppc/talitos oops on call to crypto_alloc_aead
2016-04-08 13:40 ppc/talitos oops on call to crypto_alloc_aead Jonas Eymann
@ 2016-04-15 14:02 ` Herbert Xu
2016-04-18 9:36 ` Herbert Xu
0 siblings, 1 reply; 13+ messages in thread
From: Herbert Xu @ 2016-04-15 14:02 UTC (permalink / raw)
To: Jonas Eymann; +Cc: linux-crypto
Jonas Eymann <J.Eymann@gmx.net> wrote:
>
> running a current 4.4.6 kernel on a board using a Freescale P1020, I ran into an oops when calling crypto_alloc_aead using the talitos driver. I could also reproduce this using the run-time self tests:
Thanks for the patch. Could you please add a Signed-off-by?
> In a first attempt to fix this problem using the patch further below, I could prevent the oops, though the self tests still fail:
>
> [...]
> [ 1.145414] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
> [ 1.153564] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
> [ 1.160041] 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> [ 1.166509] 00000020: 00 00 00 00
> [ 1.170041] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-3des-talitos
> [ 1.178276] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
> [ 1.184751] 00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
> [ 1.191220] 00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
> [ 1.197689] 00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
> [ 1.204158] 00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
> [ 1.210626] 00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
> [ 1.217095] 00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
> [ 1.223563] 00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
> [ 1.230038] 00000080: de ad be ef de ad be ef de ad be ef de ad be ef
> [ 1.236515] 00000090: de ad be ef
Let me look into this.
Cheers,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: ppc/talitos oops on call to crypto_alloc_aead
2016-04-15 14:02 ` Herbert Xu
@ 2016-04-18 9:36 ` Herbert Xu
2016-04-18 12:55 ` Horia Ioan Geanta Neag
0 siblings, 1 reply; 13+ messages in thread
From: Herbert Xu @ 2016-04-18 9:36 UTC (permalink / raw)
To: Jonas Eymann; +Cc: linux-crypto
On Fri, Apr 15, 2016 at 10:02:21PM +0800, Herbert Xu wrote:
> Jonas Eymann <J.Eymann@gmx.net> wrote:
> >
> > running a current 4.4.6 kernel on a board using a Freescale P1020, I ran into an oops when calling crypto_alloc_aead using the talitos driver. I could also reproduce this using the run-time self tests:
>
> Thanks for the patch. Could you please add a Signed-off-by?
>
> > In a first attempt to fix this problem using the patch further below, I could prevent the oops, though the self tests still fail:
> >
> > [...]
> > [ 1.145414] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
> > [ 1.153564] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
> > [ 1.160041] 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> > [ 1.166509] 00000020: 00 00 00 00
> > [ 1.170041] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-3des-talitos
> > [ 1.178276] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
> > [ 1.184751] 00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
> > [ 1.191220] 00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
> > [ 1.197689] 00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
> > [ 1.204158] 00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
> > [ 1.210626] 00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
> > [ 1.217095] 00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
> > [ 1.223563] 00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
> > [ 1.230038] 00000080: de ad be ef de ad be ef de ad be ef de ad be ef
> > [ 1.236515] 00000090: de ad be ef
Any chance you can let me know whether 4.2 works on this machine?
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: ppc/talitos oops on call to crypto_alloc_aead
2016-04-18 9:36 ` Herbert Xu
@ 2016-04-18 12:55 ` Horia Ioan Geanta Neag
2016-04-19 17:33 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Horia Geantă
2016-04-21 16:24 ` [PATCH] crypto: talitos - fix ahash algorithms registration Horia Geantă
0 siblings, 2 replies; 13+ messages in thread
From: Horia Ioan Geanta Neag @ 2016-04-18 12:55 UTC (permalink / raw)
To: Herbert Xu, Jonas Eymann; +Cc: linux-crypto
On 4/18/2016 12:36 PM, Herbert Xu wrote:
> On Fri, Apr 15, 2016 at 10:02:21PM +0800, Herbert Xu wrote:
>> Jonas Eymann <J.Eymann@gmx.net> wrote:
>>>
>>> running a current 4.4.6 kernel on a board using a Freescale P1020, I ran into an oops when calling crypto_alloc_aead using the talitos driver. I could also reproduce this using the run-time self tests:
>>
>> Thanks for the patch. Could you please add a Signed-off-by?
>>
Thanks Jonas.
It looks there's a typo, please consider this incremental patch:
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index 4f09395dd5f2..7c16051599fd 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -2657,7 +2657,7 @@ static int talitos_cra_init(struct crypto_tfm *tfm)
struct talitos_ctx *ctx = crypto_tfm_ctx(tfm);
if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
CRYPTO_ALG_TYPE_AHASH)
- talitos_alg = container_of(__crypto_ahash_alg(tfm),
+ talitos_alg = container_of(__crypto_ahash_alg(alg),
struct talitos_crypto_alg,
algt.alg.hash);
else
>>> In a first attempt to fix this problem using the patch further below, I could prevent the oops, though the self tests still fail:
>>>
>>> [...]
>>> [ 1.145414] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
>>> [ 1.153564] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
>>> [ 1.160041] 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> [ 1.166509] 00000020: 00 00 00 00
>>> [ 1.170041] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-3des-talitos
>>> [ 1.178276] 00000000: 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72 73 74
>>> [ 1.184751] 00000010: 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63 74 65
>>> [ 1.191220] 00000020: 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65 65 72
>>> [ 1.197689] 00000030: 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53 72 63
>>> [ 1.204158] 00000040: 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20 63 65
>>> [ 1.210626] 00000050: 65 72 73 74 54 20 6f 6f 4d 20 6e 61 20 79 65 53
>>> [ 1.217095] 00000060: 72 63 74 65 20 73 6f 54 20 6f 61 4d 79 6e 53 20
>>> [ 1.223563] 00000070: 63 65 65 72 73 74 54 20 6f 6f 4d 20 6e 61 0a 79
>>> [ 1.230038] 00000080: de ad be ef de ad be ef de ad be ef de ad be ef
>>> [ 1.236515] 00000090: de ad be ef
>
> Any chance you can let me know whether 4.2 works on this machine?
>
4.2 works fine. 4.3+ have issues.
This might be related to:
aeb4c132f33d crypto: talitos - Convert to new AEAD interface
Before this commit, self-tests pass.
Wrt. hash algorithms registration failure, indeed the problem is due to
lack of import/export functionality.
Regards,
Horia
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface
2016-04-18 12:55 ` Horia Ioan Geanta Neag
@ 2016-04-19 17:33 ` Horia Geantă
2016-04-19 17:33 ` [PATCH 1/2] crypto: talitos - fix crash in talitos_cra_init() Horia Geantă
` (2 more replies)
2016-04-21 16:24 ` [PATCH] crypto: talitos - fix ahash algorithms registration Horia Geantă
1 sibling, 3 replies; 13+ messages in thread
From: Horia Geantă @ 2016-04-19 17:33 UTC (permalink / raw)
To: Herbert Xu; +Cc: linux-crypto, Jonas Eymann, David S. Miller
Jonas Eymann reports a crash and some failures of AED algorithms
with kernel 4.4.6, all easily reproducible with tcrypt.
These have to do with the onversion to the new AEAD interface:
aeb4c132f33d crypto: talitos - Convert to new AEAD interface
Problems occur for 4.3+ kernels, sending patches to -stable.
(*) Proper fix for hash algorithms registration failures
(implementation of import/export functionality) will be added separately.
Thannks,
Horia
Horia Geantă (1):
crypto: talitos - fix AEAD tcrypt tests
Jonas Eymann (1):
crypto: talitos - fix crash in talitos_cra_init()
drivers/crypto/talitos.c | 87 +++++++++++++++++++++++++++++++-----------------
1 file changed, 57 insertions(+), 30 deletions(-)
--
2.4.4
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] crypto: talitos - fix crash in talitos_cra_init()
2016-04-19 17:33 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Horia Geantă
@ 2016-04-19 17:33 ` Horia Geantă
2016-04-19 17:33 ` [PATCH 2/2] crypto: talitos - fix AEAD tcrypt tests Horia Geantă
2016-04-20 9:58 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Herbert Xu
2 siblings, 0 replies; 13+ messages in thread
From: Horia Geantă @ 2016-04-19 17:33 UTC (permalink / raw)
To: Herbert Xu; +Cc: linux-crypto, Jonas Eymann, David S. Miller, stable
From: Jonas Eymann <J.Eymann@gmx.net>
Conversion of talitos driver to the new AEAD interface
hasn't been properly tested.
AEAD algorithms crash in talitos_cra_init as follows:
[...]
[ 1.141095] talitos ffe30000.crypto: hwrng
[ 1.145381] Unable to handle kernel paging request for data at address 0x00000058
[ 1.152913] Faulting instruction address: 0xc02accc0
[ 1.157910] Oops: Kernel access of bad area, sig: 11 [#1]
[ 1.163315] SMP NR_CPUS=2 P1020 RDB
[ 1.166810] Modules linked in:
[ 1.169875] CPU: 0 PID: 1007 Comm: cryptomgr_test Not tainted 4.4.6 #1
[ 1.176415] task: db5ec200 ti: db4d6000 task.ti: db4d6000
[ 1.181821] NIP: c02accc0 LR: c02acd18 CTR: c02acd04
[ 1.186793] REGS: db4d7d30 TRAP: 0300 Not tainted (4.4.6)
[ 1.192457] MSR: 00029000 <CE,EE,ME> CR: 95009359 XER: e0000000
[ 1.198585] DEAR: 00000058 ESR: 00000000
GPR00: c017bdc0 db4d7de0 db5ec200 df424b48 00000000 00000000 df424bfc db75a600
GPR08: df424b48 00000000 db75a628 db4d6000 00000149 00000000 c0044cac db5acda0
GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000400 df424940
GPR24: df424900 00003083 00000400 c0180000 db75a640 c03e9f84 df424b40 df424b48
[ 1.230978] NIP [c02accc0] talitos_cra_init+0x28/0x6c
[ 1.236039] LR [c02acd18] talitos_cra_init_aead+0x14/0x28
[ 1.241443] Call Trace:
[ 1.243894] [db4d7de0] [c03e9f84] 0xc03e9f84 (unreliable)
[ 1.249322] [db4d7df0] [c017bdc0] crypto_create_tfm+0x5c/0xf0
[ 1.255083] [db4d7e10] [c017beec] crypto_alloc_tfm+0x98/0xf8
[ 1.260769] [db4d7e40] [c0186a20] alg_test_aead+0x28/0xc8
[ 1.266181] [db4d7e60] [c0186718] alg_test+0x260/0x2e0
[ 1.271333] [db4d7ee0] [c0183860] cryptomgr_test+0x30/0x54
[ 1.276843] [db4d7ef0] [c0044d80] kthread+0xd4/0xd8
[ 1.281741] [db4d7f40] [c000e4a4] ret_from_kernel_thread+0x5c/0x64
[ 1.287930] Instruction dump:
[ 1.290902] 38600000 4e800020 81230028 7c681b78 81490010 38e9ffc0 3929ffe8 554a073e
[ 1.298691] 2b8a000a 7d474f9e 812a0008 91230030 <80e90058> 39270060 7c0004ac 7cc04828
Cc: <stable@vger.kernel.org> # 4.3+
Fixes: aeb4c132f33d ("crypto: talitos - Convert to new AEAD interface")
Signed-off-by: Jonas Eymann <J.Eymann@gmx.net>
Fix typo - replaced parameter of __crypto_ahash_alg(): s/tfm/alg
Remove checkpatch warnings.
Add commit message.
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
---
drivers/crypto/talitos.c | 41 +++++++++++++++++++++++++++--------------
1 file changed, 27 insertions(+), 14 deletions(-)
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index a0d4a08313ae..35198804d6d3 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -2629,21 +2629,11 @@ struct talitos_crypto_alg {
struct talitos_alg_template algt;
};
-static int talitos_cra_init(struct crypto_tfm *tfm)
+static int talitos_init_common(struct talitos_ctx *ctx,
+ struct talitos_crypto_alg *talitos_alg)
{
- struct crypto_alg *alg = tfm->__crt_alg;
- struct talitos_crypto_alg *talitos_alg;
- struct talitos_ctx *ctx = crypto_tfm_ctx(tfm);
struct talitos_private *priv;
- if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_AHASH)
- talitos_alg = container_of(__crypto_ahash_alg(alg),
- struct talitos_crypto_alg,
- algt.alg.hash);
- else
- talitos_alg = container_of(alg, struct talitos_crypto_alg,
- algt.alg.crypto);
-
/* update context with ptr to dev */
ctx->dev = talitos_alg->dev;
@@ -2661,10 +2651,33 @@ static int talitos_cra_init(struct crypto_tfm *tfm)
return 0;
}
+static int talitos_cra_init(struct crypto_tfm *tfm)
+{
+ struct crypto_alg *alg = tfm->__crt_alg;
+ struct talitos_crypto_alg *talitos_alg;
+ struct talitos_ctx *ctx = crypto_tfm_ctx(tfm);
+
+ if ((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) == CRYPTO_ALG_TYPE_AHASH)
+ talitos_alg = container_of(__crypto_ahash_alg(alg),
+ struct talitos_crypto_alg,
+ algt.alg.hash);
+ else
+ talitos_alg = container_of(alg, struct talitos_crypto_alg,
+ algt.alg.crypto);
+
+ return talitos_init_common(ctx, talitos_alg);
+}
+
static int talitos_cra_init_aead(struct crypto_aead *tfm)
{
- talitos_cra_init(crypto_aead_tfm(tfm));
- return 0;
+ struct aead_alg *alg = crypto_aead_alg(tfm);
+ struct talitos_crypto_alg *talitos_alg;
+ struct talitos_ctx *ctx = crypto_aead_ctx(tfm);
+
+ talitos_alg = container_of(alg, struct talitos_crypto_alg,
+ algt.alg.aead);
+
+ return talitos_init_common(ctx, talitos_alg);
}
static int talitos_cra_init_ahash(struct crypto_tfm *tfm)
--
2.4.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] crypto: talitos - fix AEAD tcrypt tests
2016-04-19 17:33 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Horia Geantă
2016-04-19 17:33 ` [PATCH 1/2] crypto: talitos - fix crash in talitos_cra_init() Horia Geantă
@ 2016-04-19 17:33 ` Horia Geantă
2016-04-20 9:58 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Herbert Xu
2 siblings, 0 replies; 13+ messages in thread
From: Horia Geantă @ 2016-04-19 17:33 UTC (permalink / raw)
To: Herbert Xu; +Cc: linux-crypto, Jonas Eymann, David S. Miller, stable
After conversion to new AEAD interface, tcrypt tests fail as follows:
[...]
[ 1.145414] alg: aead: Test 1 failed on encryption for authenc-hmac-sha1-cbc-aes-talitos
[ 1.153564] 00000000: 53 69 6e 67 6c 65 20 62 6c 6f 63 6b 20 6d 73 67
[ 1.160041] 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 1.166509] 00000020: 00 00 00 00
[...]
Fix them by providing the correct cipher in & cipher out pointers,
i.e. must skip over associated data in src and dst S/G.
While here, fix a problem with the HW S/G table index usage:
tbl_off must be updated after the pointer to the table entries is set.
Cc: <stable@vger.kernel.org> # 4.3+
Fixes: aeb4c132f33d ("crypto: talitos - Convert to new AEAD interface")
Reported-by: Jonas Eymann <J.Eymann@gmx.net>
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
---
drivers/crypto/talitos.c | 46 ++++++++++++++++++++++++++++++----------------
1 file changed, 30 insertions(+), 16 deletions(-)
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index 35198804d6d3..aae05547b924 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -63,6 +63,14 @@ static void to_talitos_ptr(struct talitos_ptr *ptr, dma_addr_t dma_addr,
ptr->eptr = upper_32_bits(dma_addr);
}
+static void copy_talitos_ptr(struct talitos_ptr *dst_ptr,
+ struct talitos_ptr *src_ptr, bool is_sec1)
+{
+ dst_ptr->ptr = src_ptr->ptr;
+ if (!is_sec1)
+ dst_ptr->eptr = src_ptr->eptr;
+}
+
static void to_talitos_ptr_len(struct talitos_ptr *ptr, unsigned int len,
bool is_sec1)
{
@@ -1083,21 +1091,20 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
sg_count = dma_map_sg(dev, areq->src, edesc->src_nents ?: 1,
(areq->src == areq->dst) ? DMA_BIDIRECTIONAL
: DMA_TO_DEVICE);
-
/* hmac data */
desc->ptr[1].len = cpu_to_be16(areq->assoclen);
if (sg_count > 1 &&
(ret = sg_to_link_tbl_offset(areq->src, sg_count, 0,
areq->assoclen,
&edesc->link_tbl[tbl_off])) > 1) {
- tbl_off += ret;
-
to_talitos_ptr(&desc->ptr[1], edesc->dma_link_tbl + tbl_off *
sizeof(struct talitos_ptr), 0);
desc->ptr[1].j_extent = DESC_PTR_LNKTBL_JUMP;
dma_sync_single_for_device(dev, edesc->dma_link_tbl,
edesc->dma_len, DMA_BIDIRECTIONAL);
+
+ tbl_off += ret;
} else {
to_talitos_ptr(&desc->ptr[1], sg_dma_address(areq->src), 0);
desc->ptr[1].j_extent = 0;
@@ -1126,11 +1133,13 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
if (edesc->desc.hdr & DESC_HDR_MODE1_MDEU_CICV)
sg_link_tbl_len += authsize;
- if (sg_count > 1 &&
- (ret = sg_to_link_tbl_offset(areq->src, sg_count, areq->assoclen,
- sg_link_tbl_len,
- &edesc->link_tbl[tbl_off])) > 1) {
- tbl_off += ret;
+ if (sg_count == 1) {
+ to_talitos_ptr(&desc->ptr[4], sg_dma_address(areq->src) +
+ areq->assoclen, 0);
+ } else if ((ret = sg_to_link_tbl_offset(areq->src, sg_count,
+ areq->assoclen, sg_link_tbl_len,
+ &edesc->link_tbl[tbl_off])) >
+ 1) {
desc->ptr[4].j_extent |= DESC_PTR_LNKTBL_JUMP;
to_talitos_ptr(&desc->ptr[4], edesc->dma_link_tbl +
tbl_off *
@@ -1138,8 +1147,10 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
dma_sync_single_for_device(dev, edesc->dma_link_tbl,
edesc->dma_len,
DMA_BIDIRECTIONAL);
- } else
- to_talitos_ptr(&desc->ptr[4], sg_dma_address(areq->src), 0);
+ tbl_off += ret;
+ } else {
+ copy_talitos_ptr(&desc->ptr[4], &edesc->link_tbl[tbl_off], 0);
+ }
/* cipher out */
desc->ptr[5].len = cpu_to_be16(cryptlen);
@@ -1151,11 +1162,13 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
edesc->icv_ool = false;
- if (sg_count > 1 &&
- (sg_count = sg_to_link_tbl_offset(areq->dst, sg_count,
+ if (sg_count == 1) {
+ to_talitos_ptr(&desc->ptr[5], sg_dma_address(areq->dst) +
+ areq->assoclen, 0);
+ } else if ((sg_count =
+ sg_to_link_tbl_offset(areq->dst, sg_count,
areq->assoclen, cryptlen,
- &edesc->link_tbl[tbl_off])) >
- 1) {
+ &edesc->link_tbl[tbl_off])) > 1) {
struct talitos_ptr *tbl_ptr = &edesc->link_tbl[tbl_off];
to_talitos_ptr(&desc->ptr[5], edesc->dma_link_tbl +
@@ -1178,8 +1191,9 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
edesc->dma_len, DMA_BIDIRECTIONAL);
edesc->icv_ool = true;
- } else
- to_talitos_ptr(&desc->ptr[5], sg_dma_address(areq->dst), 0);
+ } else {
+ copy_talitos_ptr(&desc->ptr[5], &edesc->link_tbl[tbl_off], 0);
+ }
/* iv out */
map_single_talitos_ptr(dev, &desc->ptr[6], ivsize, ctx->iv,
--
2.4.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface
2016-04-19 17:33 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Horia Geantă
2016-04-19 17:33 ` [PATCH 1/2] crypto: talitos - fix crash in talitos_cra_init() Horia Geantă
2016-04-19 17:33 ` [PATCH 2/2] crypto: talitos - fix AEAD tcrypt tests Horia Geantă
@ 2016-04-20 9:58 ` Herbert Xu
2016-04-20 11:29 ` Horia Ioan Geanta Neag
2016-04-20 12:09 ` Jonas Eymann
2 siblings, 2 replies; 13+ messages in thread
From: Herbert Xu @ 2016-04-20 9:58 UTC (permalink / raw)
To: Horia Geantă; +Cc: linux-crypto, Jonas Eymann, David S. Miller
On Tue, Apr 19, 2016 at 08:33:46PM +0300, Horia Geantă wrote:
> Jonas Eymann reports a crash and some failures of AED algorithms
> with kernel 4.4.6, all easily reproducible with tcrypt.
>
> These have to do with the onversion to the new AEAD interface:
> aeb4c132f33d crypto: talitos - Convert to new AEAD interface
>
> Problems occur for 4.3+ kernels, sending patches to -stable.
>
> (*) Proper fix for hash algorithms registration failures
> (implementation of import/export functionality) will be added separately.
Both applied. Thanks!
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface
2016-04-20 9:58 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Herbert Xu
@ 2016-04-20 11:29 ` Horia Ioan Geanta Neag
2016-04-21 11:02 ` Herbert Xu
2016-04-20 12:09 ` Jonas Eymann
1 sibling, 1 reply; 13+ messages in thread
From: Horia Ioan Geanta Neag @ 2016-04-20 11:29 UTC (permalink / raw)
To: Herbert Xu; +Cc: linux-crypto, Jonas Eymann, David S. Miller
On 4/20/2016 12:58 PM, Herbert Xu wrote:
> On Tue, Apr 19, 2016 at 08:33:46PM +0300, Horia Geantă wrote:
>> Jonas Eymann reports a crash and some failures of AED algorithms
>> with kernel 4.4.6, all easily reproducible with tcrypt.
>>
>> These have to do with the onversion to the new AEAD interface:
>> aeb4c132f33d crypto: talitos - Convert to new AEAD interface
>>
>> Problems occur for 4.3+ kernels, sending patches to -stable.
>>
>> (*) Proper fix for hash algorithms registration failures
>> (implementation of import/export functionality) will be added separately.
>
> Both applied. Thanks!
>
Thanks Herbert.
Shouldn't these have been included in the recent "Crypto Update for 4.6"
pull request?
Horia
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface
2016-04-20 9:58 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Herbert Xu
2016-04-20 11:29 ` Horia Ioan Geanta Neag
@ 2016-04-20 12:09 ` Jonas Eymann
1 sibling, 0 replies; 13+ messages in thread
From: Jonas Eymann @ 2016-04-20 12:09 UTC (permalink / raw)
To: horia.geanta; +Cc: linux-crypto
sorry for the late reply, I was out of office. Thank you very much Horia for fixing the typo, adding the sign-off and also for the second patch. I'll also run some tests when I find the time to see how everything works together.
Jonas
> Gesendet: Mittwoch, 20. April 2016 um 11:58 Uhr
> Von: "Herbert Xu" <herbert@gondor.apana.org.au>
> An: "Horia Geantă" <horia.geanta@nxp.com>
> Cc: linux-crypto@vger.kernel.org, "Jonas Eymann" <J.Eymann@gmx.net>, "David S. Miller" <davem@davemloft.net>
> Betreff: Re: [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface
>
> On Tue, Apr 19, 2016 at 08:33:46PM +0300, Horia Geantă wrote:
> > Jonas Eymann reports a crash and some failures of AED algorithms
> > with kernel 4.4.6, all easily reproducible with tcrypt.
> >
> > These have to do with the onversion to the new AEAD interface:
> > aeb4c132f33d crypto: talitos - Convert to new AEAD interface
> >
> > Problems occur for 4.3+ kernels, sending patches to -stable.
> >
> > (*) Proper fix for hash algorithms registration failures
> > (implementation of import/export functionality) will be added separately.
>
> Both applied. Thanks!
> --
> Email: Herbert Xu <herbert@gondor.apana.org.au>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface
2016-04-20 11:29 ` Horia Ioan Geanta Neag
@ 2016-04-21 11:02 ` Herbert Xu
0 siblings, 0 replies; 13+ messages in thread
From: Herbert Xu @ 2016-04-21 11:02 UTC (permalink / raw)
To: Horia Ioan Geanta Neag; +Cc: linux-crypto, Jonas Eymann, David S. Miller
On Wed, Apr 20, 2016 at 11:29:52AM +0000, Horia Ioan Geanta Neag wrote:
>
> Shouldn't these have been included in the recent "Crypto Update for 4.6"
> pull request?
It will go in the next pull request.
Cheers,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] crypto: talitos - fix ahash algorithms registration
2016-04-18 12:55 ` Horia Ioan Geanta Neag
2016-04-19 17:33 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Horia Geantă
@ 2016-04-21 16:24 ` Horia Geantă
2016-04-25 11:22 ` Herbert Xu
1 sibling, 1 reply; 13+ messages in thread
From: Horia Geantă @ 2016-04-21 16:24 UTC (permalink / raw)
To: Herbert Xu; +Cc: linux-crypto, Jonas Eymann, David S. Miller
Provide hardware state import/export functionality, as mandated by
commit 8996eafdcbad ("crypto: ahash - ensure statesize is non-zero")
Cc: <stable@vger.kernel.org> # 4.3+
Reported-by: Jonas Eymann <J.Eymann@gmx.net>
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
---
drivers/crypto/talitos.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index aae05547b924..b7ee8d30147d 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -835,6 +835,16 @@ struct talitos_ahash_req_ctx {
struct scatterlist *psrc;
};
+struct talitos_export_state {
+ u32 hw_context[TALITOS_MDEU_MAX_CONTEXT_SIZE / sizeof(u32)];
+ u8 buf[HASH_MAX_BLOCK_SIZE];
+ unsigned int swinit;
+ unsigned int first;
+ unsigned int last;
+ unsigned int to_hash_later;
+ unsigned int nbuf;
+};
+
static int aead_setkey(struct crypto_aead *authenc,
const u8 *key, unsigned int keylen)
{
@@ -1981,6 +1991,46 @@ static int ahash_digest(struct ahash_request *areq)
return ahash_process_req(areq, areq->nbytes);
}
+static int ahash_export(struct ahash_request *areq, void *out)
+{
+ struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq);
+ struct talitos_export_state *export = out;
+
+ memcpy(export->hw_context, req_ctx->hw_context,
+ req_ctx->hw_context_size);
+ memcpy(export->buf, req_ctx->buf, req_ctx->nbuf);
+ export->swinit = req_ctx->swinit;
+ export->first = req_ctx->first;
+ export->last = req_ctx->last;
+ export->to_hash_later = req_ctx->to_hash_later;
+ export->nbuf = req_ctx->nbuf;
+
+ return 0;
+}
+
+static int ahash_import(struct ahash_request *areq, const void *in)
+{
+ struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq);
+ struct crypto_ahash *tfm = crypto_ahash_reqtfm(areq);
+ const struct talitos_export_state *export = in;
+
+ memset(req_ctx, 0, sizeof(*req_ctx));
+ req_ctx->hw_context_size =
+ (crypto_ahash_digestsize(tfm) <= SHA256_DIGEST_SIZE)
+ ? TALITOS_MDEU_CONTEXT_SIZE_MD5_SHA1_SHA256
+ : TALITOS_MDEU_CONTEXT_SIZE_SHA384_SHA512;
+ memcpy(req_ctx->hw_context, export->hw_context,
+ req_ctx->hw_context_size);
+ memcpy(req_ctx->buf, export->buf, export->nbuf);
+ req_ctx->swinit = export->swinit;
+ req_ctx->first = export->first;
+ req_ctx->last = export->last;
+ req_ctx->to_hash_later = export->to_hash_later;
+ req_ctx->nbuf = export->nbuf;
+
+ return 0;
+}
+
struct keyhash_result {
struct completion completion;
int err;
@@ -2458,6 +2508,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = MD5_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "md5",
.cra_driver_name = "md5-talitos",
@@ -2473,6 +2524,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA1_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "sha1",
.cra_driver_name = "sha1-talitos",
@@ -2488,6 +2540,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA224_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "sha224",
.cra_driver_name = "sha224-talitos",
@@ -2503,6 +2556,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA256_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "sha256",
.cra_driver_name = "sha256-talitos",
@@ -2518,6 +2572,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA384_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "sha384",
.cra_driver_name = "sha384-talitos",
@@ -2533,6 +2588,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA512_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "sha512",
.cra_driver_name = "sha512-talitos",
@@ -2548,6 +2604,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = MD5_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "hmac(md5)",
.cra_driver_name = "hmac-md5-talitos",
@@ -2563,6 +2620,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA1_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "hmac(sha1)",
.cra_driver_name = "hmac-sha1-talitos",
@@ -2578,6 +2636,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA224_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "hmac(sha224)",
.cra_driver_name = "hmac-sha224-talitos",
@@ -2593,6 +2652,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA256_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "hmac(sha256)",
.cra_driver_name = "hmac-sha256-talitos",
@@ -2608,6 +2668,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA384_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "hmac(sha384)",
.cra_driver_name = "hmac-sha384-talitos",
@@ -2623,6 +2684,7 @@ static struct talitos_alg_template driver_algs[] = {
{ .type = CRYPTO_ALG_TYPE_AHASH,
.alg.hash = {
.halg.digestsize = SHA512_DIGEST_SIZE,
+ .halg.statesize = sizeof(struct talitos_export_state),
.halg.base = {
.cra_name = "hmac(sha512)",
.cra_driver_name = "hmac-sha512-talitos",
@@ -2814,6 +2876,8 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev,
t_alg->algt.alg.hash.finup = ahash_finup;
t_alg->algt.alg.hash.digest = ahash_digest;
t_alg->algt.alg.hash.setkey = ahash_setkey;
+ t_alg->algt.alg.hash.import = ahash_import;
+ t_alg->algt.alg.hash.export = ahash_export;
if (!(priv->features & TALITOS_FTR_HMAC_OK) &&
!strncmp(alg->cra_name, "hmac", 4)) {
--
2.4.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] crypto: talitos - fix ahash algorithms registration
2016-04-21 16:24 ` [PATCH] crypto: talitos - fix ahash algorithms registration Horia Geantă
@ 2016-04-25 11:22 ` Herbert Xu
0 siblings, 0 replies; 13+ messages in thread
From: Herbert Xu @ 2016-04-25 11:22 UTC (permalink / raw)
To: Horia Geantă; +Cc: linux-crypto, Jonas Eymann, David S. Miller
On Thu, Apr 21, 2016 at 07:24:55PM +0300, Horia Geantă wrote:
> Provide hardware state import/export functionality, as mandated by
> commit 8996eafdcbad ("crypto: ahash - ensure statesize is non-zero")
>
> Cc: <stable@vger.kernel.org> # 4.3+
> Reported-by: Jonas Eymann <J.Eymann@gmx.net>
> Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Applied to cryptodev. As with other statesize fixes, I'd like
this to go into the next merge window.
Cheers,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2016-04-25 11:22 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-08 13:40 ppc/talitos oops on call to crypto_alloc_aead Jonas Eymann
2016-04-15 14:02 ` Herbert Xu
2016-04-18 9:36 ` Herbert Xu
2016-04-18 12:55 ` Horia Ioan Geanta Neag
2016-04-19 17:33 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Horia Geantă
2016-04-19 17:33 ` [PATCH 1/2] crypto: talitos - fix crash in talitos_cra_init() Horia Geantă
2016-04-19 17:33 ` [PATCH 2/2] crypto: talitos - fix AEAD tcrypt tests Horia Geantă
2016-04-20 9:58 ` [PATCH 0/2] crypto: talitos - fix conversion to new AEAD interface Herbert Xu
2016-04-20 11:29 ` Horia Ioan Geanta Neag
2016-04-21 11:02 ` Herbert Xu
2016-04-20 12:09 ` Jonas Eymann
2016-04-21 16:24 ` [PATCH] crypto: talitos - fix ahash algorithms registration Horia Geantă
2016-04-25 11:22 ` Herbert Xu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.