On Thursday, April 10, 2014 at 10:40:58 AM, Sonic Zhang wrote: > From: Sonic Zhang <sonic.zhang@xxxxxxxxxx> > > in case of multiple crc devices are probed. > > Signed-off-by: Sonic Zhang <sonic.zhang@xxxxxxxxxx> > --- > drivers/crypto/bfin_crc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/crypto/bfin_crc.c b/drivers/crypto/bfin_crc.c > index cea3e8c..5f5f427 100644 > --- a/drivers/crypto/bfin_crc.c > +++ b/drivers/crypto/bfin_crc.c > @@ -672,7 +672,7 @@ static int bfin_crypto_crc_probe(struct platform_device > *pdev) platform_set_drvdata(pdev, crc); Rant: Reading through the code a little, the platform_set_drvdata() should happen before you add the new CRC device into the list (above this code). > ret = crypto_register_ahash(&algs); > - if (ret) { > + if (ret && ret != -EEXIST) { Uh oh, how is this supposed to work ? Does blackfin have multiple crc32 processing units ? Can you simply not check if the crc_list is not empty and avoid calling crypto_register_ahash() for subsequent crc32 units at all ? > spin_lock(&crc_list.lock); > list_del(&crc->list); > spin_unlock(&crc_list.lock); Best regards, Marek Vasut -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html