crypto: api - Fix module load deadlock with fallback algorithms
authorHerbert Xu <herbert@gondor.apana.org.au>
Thu, 26 Feb 2009 06:06:31 +0000 (14:06 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 26 Feb 2009 06:06:31 +0000 (14:06 +0800)
commita760a6656e6f00bb0144a42a048cf0266646e22c
tree51fffed59af5edcdd550f4517a775cba02a3d21c
parentbb402f16ecf9bcdb944b8fa730f0e43cae519673
crypto: api - Fix module load deadlock with fallback algorithms

With the mandatory algorithm testing at registration, we have
now created a deadlock with algorithms requiring fallbacks.
This can happen if the module containing the algorithm requiring
fallback is loaded first, without the fallback module being loaded
first.  The system will then try to test the new algorithm, find
that it needs to load a fallback, and then try to load that.

As both algorithms share the same module alias, it can attempt
to load the original algorithm again and block indefinitely.

As algorithms requiring fallbacks are a special case, we can fix
this by giving them a different module alias than the rest.  Then
it's just a matter of using the right aliases according to what
algorithms we're trying to find.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/s390/crypto/aes_s390.c
crypto/api.c
drivers/crypto/padlock-aes.c
drivers/crypto/padlock-sha.c