s390/crypto: Fix kernel crash on aes_s390 module remove.
A kernel crash occurs when the aes_s390 kernel module is removed on machines < z14. This only happens on kernel version 4.15 and higher on machines not supporting MSA 8. The reason for the crash is a unconditional crypto_unregister_aead() invocation where no previous crypto_register_aead() had been called. The fix now remembers if there has been a successful registration and only then calls the unregister function upon kernel module remove. The code now crashing has been introduced with "bf7fa03 s390/crypto: add s390 platform specific aes gcm support." Signed-off-by: Harald Freudenberger <freude@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
c9f52c2ddb
commit
c7260ca335
|
@ -1047,6 +1047,7 @@ static struct aead_alg gcm_aes_aead = {
|
||||||
|
|
||||||
static struct crypto_alg *aes_s390_algs_ptr[5];
|
static struct crypto_alg *aes_s390_algs_ptr[5];
|
||||||
static int aes_s390_algs_num;
|
static int aes_s390_algs_num;
|
||||||
|
static struct aead_alg *aes_s390_aead_alg;
|
||||||
|
|
||||||
static int aes_s390_register_alg(struct crypto_alg *alg)
|
static int aes_s390_register_alg(struct crypto_alg *alg)
|
||||||
{
|
{
|
||||||
|
@ -1065,7 +1066,8 @@ static void aes_s390_fini(void)
|
||||||
if (ctrblk)
|
if (ctrblk)
|
||||||
free_page((unsigned long) ctrblk);
|
free_page((unsigned long) ctrblk);
|
||||||
|
|
||||||
crypto_unregister_aead(&gcm_aes_aead);
|
if (aes_s390_aead_alg)
|
||||||
|
crypto_unregister_aead(aes_s390_aead_alg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init aes_s390_init(void)
|
static int __init aes_s390_init(void)
|
||||||
|
@ -1123,6 +1125,7 @@ static int __init aes_s390_init(void)
|
||||||
ret = crypto_register_aead(&gcm_aes_aead);
|
ret = crypto_register_aead(&gcm_aes_aead);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
aes_s390_aead_alg = &gcm_aes_aead;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue