• Ondrej Mosnacek's avatar
    crypto: x86/aegis,morus - Fix and simplify CPUID checks · 877ccce7
    Ondrej Mosnacek authored
    It turns out I had misunderstood how the x86_match_cpu() function works.
    It evaluates a logical OR of the matching conditions, not logical AND.
    This caused the CPU feature checks for AEGIS to pass even if only SSE2
    (but not AES-NI) was supported (or vice versa), leading to potential
    crashes if something tried to use the registered algs.
    
    This patch switches the checks to a simpler method that is used e.g. in
    the Camellia x86 code.
    
    The patch also removes the MODULE_DEVICE_TABLE declarations which
    actually seem to cause the modules to be auto-loaded at boot, which is
    not desired. The crypto API on-demand module loading is sufficient.
    
    Fixes: 1d373d4e ("crypto: x86 - Add optimized AEGIS implementations")
    Fixes: 6ecc9d9f ("crypto: x86 - Add optimized MORUS implementations")
    Signed-off-by: default avatarOndrej Mosnacek <omosnace@redhat.com>
    Tested-by: default avatarMilan Broz <gmazyland@gmail.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    877ccce7
aegis256-aesni-glue.c 10.9 KB