mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
crypto: keembay - Initialize completion before requesting IRQ
kmb_ocs_aes_probe() requests the device IRQ before initializing
irq_completion. Once the handler is registered it can run immediately,
and ocs_aes_irq_handler() unconditionally calls complete(). An
interrupt in this window would therefore use an uninitialized
completion.
Initialize the completion before requesting the IRQ, as the sibling
OCS HCU and ECC drivers already do.
Fixes: 8857433245 ("crypto: keembay - Add support for Keem Bay OCS AES/SM4")
Signed-off-by: Linmao Li <lilinmao@kylinos.cn>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
df373d39c6
commit
fce20289dd
|
|
@ -1602,6 +1602,8 @@ static int kmb_ocs_aes_probe(struct platform_device *pdev)
|
|||
if (IS_ERR(aes_dev->base_reg))
|
||||
return PTR_ERR(aes_dev->base_reg);
|
||||
|
||||
init_completion(&aes_dev->irq_completion);
|
||||
|
||||
/* Get and request IRQ */
|
||||
aes_dev->irq = platform_get_irq(pdev, 0);
|
||||
if (aes_dev->irq < 0)
|
||||
|
|
@ -1619,8 +1621,6 @@ static int kmb_ocs_aes_probe(struct platform_device *pdev)
|
|||
list_add_tail(&aes_dev->list, &ocs_aes.dev_list);
|
||||
spin_unlock(&ocs_aes.lock);
|
||||
|
||||
init_completion(&aes_dev->irq_completion);
|
||||
|
||||
/* Initialize crypto engine */
|
||||
aes_dev->engine = crypto_engine_alloc_init(dev, true);
|
||||
if (!aes_dev->engine) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user