mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
crypto: dcp - Fix the path for releasing the resources
tasklet_kill() is not being called in probe and the remove function releases the resources in the wrong order. Fix these issues. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
0ff647551b
commit
48e6dc1b2a
@ -842,6 +842,8 @@ err_unregister:
|
|||||||
for (j = 0; j < i; j++)
|
for (j = 0; j < i; j++)
|
||||||
crypto_unregister_alg(&algs[j]);
|
crypto_unregister_alg(&algs[j]);
|
||||||
err_free_key_iv:
|
err_free_key_iv:
|
||||||
|
tasklet_kill(&dev->done_task);
|
||||||
|
tasklet_kill(&dev->queue_task);
|
||||||
dma_free_coherent(&pdev->dev, 2 * AES_KEYSIZE_128, dev->payload_base,
|
dma_free_coherent(&pdev->dev, 2 * AES_KEYSIZE_128, dev->payload_base,
|
||||||
dev->payload_base_dma);
|
dev->payload_base_dma);
|
||||||
err_free_hw_packet:
|
err_free_hw_packet:
|
||||||
@ -858,20 +860,20 @@ static int dcp_remove(struct platform_device *pdev)
|
|||||||
int j;
|
int j;
|
||||||
dev = platform_get_drvdata(pdev);
|
dev = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
dma_free_coherent(&pdev->dev,
|
misc_deregister(&dev->dcp_bootstream_misc);
|
||||||
DCP_MAX_PKG * sizeof(struct dcp_hw_packet),
|
|
||||||
dev->hw_pkg[0], dev->hw_phys_pkg);
|
|
||||||
|
|
||||||
dma_free_coherent(&pdev->dev, 2 * AES_KEYSIZE_128, dev->payload_base,
|
|
||||||
dev->payload_base_dma);
|
|
||||||
|
|
||||||
tasklet_kill(&dev->done_task);
|
|
||||||
tasklet_kill(&dev->queue_task);
|
|
||||||
|
|
||||||
for (j = 0; j < ARRAY_SIZE(algs); j++)
|
for (j = 0; j < ARRAY_SIZE(algs); j++)
|
||||||
crypto_unregister_alg(&algs[j]);
|
crypto_unregister_alg(&algs[j]);
|
||||||
|
|
||||||
misc_deregister(&dev->dcp_bootstream_misc);
|
tasklet_kill(&dev->done_task);
|
||||||
|
tasklet_kill(&dev->queue_task);
|
||||||
|
|
||||||
|
dma_free_coherent(&pdev->dev, 2 * AES_KEYSIZE_128, dev->payload_base,
|
||||||
|
dev->payload_base_dma);
|
||||||
|
|
||||||
|
dma_free_coherent(&pdev->dev,
|
||||||
|
DCP_MAX_PKG * sizeof(struct dcp_hw_packet),
|
||||||
|
dev->hw_pkg[0], dev->hw_phys_pkg);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user