diff options
author | Sonic Zhang <sonic.zhang@analog.com> | 2014-04-11 05:30:25 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2014-04-16 08:40:16 -0400 |
commit | 8d390395fa8cb32aeb3030398e441dd1a1ab4437 (patch) | |
tree | 91a042ed8e74da3651efba3f4469726df52fb5d3 | |
parent | 52e6e543f2d8c8320b6e9c53110bd1c5768d6b43 (diff) |
crypto: bfin_crc - ignore duplicated registration of the same algorithm
in case of multiple crc devices are probed.
Call platform_set_drvdata() before adding new CRC device into the list.
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | drivers/crypto/bfin_crc.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/crypto/bfin_crc.c b/drivers/crypto/bfin_crc.c index cea3e8c1fdf9..ce9a831a6c70 100644 --- a/drivers/crypto/bfin_crc.c +++ b/drivers/crypto/bfin_crc.c | |||
@@ -665,19 +665,19 @@ static int bfin_crypto_crc_probe(struct platform_device *pdev) | |||
665 | if (timeout == 0) | 665 | if (timeout == 0) |
666 | dev_info(&pdev->dev, "init crc poly timeout\n"); | 666 | dev_info(&pdev->dev, "init crc poly timeout\n"); |
667 | 667 | ||
668 | platform_set_drvdata(pdev, crc); | ||
669 | |||
668 | spin_lock(&crc_list.lock); | 670 | spin_lock(&crc_list.lock); |
669 | list_add(&crc->list, &crc_list.dev_list); | 671 | list_add(&crc->list, &crc_list.dev_list); |
670 | spin_unlock(&crc_list.lock); | 672 | spin_unlock(&crc_list.lock); |
671 | 673 | ||
672 | platform_set_drvdata(pdev, crc); | 674 | if (list_is_singular(&crc_list.dev_list)) { |
673 | 675 | ret = crypto_register_ahash(&algs); | |
674 | ret = crypto_register_ahash(&algs); | 676 | if (ret) { |
675 | if (ret) { | 677 | dev_err(&pdev->dev, |
676 | spin_lock(&crc_list.lock); | 678 | "Can't register crypto ahash device\n"); |
677 | list_del(&crc->list); | 679 | goto out_error_dma; |
678 | spin_unlock(&crc_list.lock); | 680 | } |
679 | dev_err(&pdev->dev, "Cann't register crypto ahash device\n"); | ||
680 | goto out_error_dma; | ||
681 | } | 681 | } |
682 | 682 | ||
683 | dev_info(&pdev->dev, "initialized\n"); | 683 | dev_info(&pdev->dev, "initialized\n"); |