Subject: Re: linux-next: Tree for Jun 13 (crypto)

From: Johannes Goetzfried <[email-masked]>
Date: Wed, 13 Jun 2012 21:05:40 +0200

On Wed, Jun 13, 2012 at 08:03:17PM +0300, Jussi Kivilinna wrote:
> >arch/x86/crypto/serpent-avx-x86_64.o: In function `serpent_xts_decrypt':
> >(.text+0x856c): multiple definition of `serpent_xts_decrypt'
> >arch/x86/crypto/serpent-sse2-x86_64.o:(.text+0xae8): first defined here
> 
> Reverting commit e2f4d85d5b2049a90859aa10de914ed31a4f17a4, "crypto:
> serpent - add common glue code for avx and sse2 implementation",
> should help for most.
> 
> >arch/x86/crypto/serpent-avx-x86_64.o: In function `serpent_dec_blk_8way':
> >(.text+0x3d70): multiple definition of `serpent_dec_blk_8way'
> >arch/x86/crypto/serpent-avx-x86_64.o: In function `__serpent_enc_blk_8way':
> >(.text+0x0): multiple definition of `__serpent_enc_blk_8way'
> 
> Attached patch should solve these (patch depends on above revert).

I'm really sorry about this, it shouldn't have happened. The most easiest
solution to this problem would be to make the choice between
CRYPTO_SERPENT_SSE2_X86_64 and CRYPTO_SERPENT_AVX_X86_64 an exclusive-or choice
in crypto/Kconfig. I don't think there is an use-case, where somebody would
want to link both implementations into the same kernel image or even load both
implementations as module. This would avoid duplicating the glue-code again.

Another possibility would be to add a serpent-common-x86_64 module, but this
wouldn't be a trivial change and imo a little bit too much just to avoid
duplicating this code.

- Johannes